답변:
예, 가능하지만 느립니다. 기존 (일부 목록 일뿐) 에뮬레이터가 몇 가지 있습니다.
QDD는 C ++ 프로그래밍 환경에서 비교적 직관적 인 양자 컴퓨팅 구조를 제공하는 C ++ 라이브러리입니다. QDD는 양자 컴퓨팅 에뮬레이션이 양자 상태의 BDD (Binary Decision Diagram) 표현을 기반으로한다는 점에서 독특합니다.
jQuantum은 양자 컴퓨터를 시뮬레이트하는 프로그램입니다. 양자 회로를 설계하고 작동시킬 수 있습니다. 양자 레지스터의 현재 상태가 도시되어있다.
QCE는 Quantum Computers의 다양한 하드웨어 디자인을 에뮬레이트하는 소프트웨어 도구입니다. QCE는 엄격하게 양자 역학의 법칙에 따라 하드웨어 양자 프로세서의 작동을 제어하는 물리적 프로세스를 시뮬레이션합니다. QCE는 또한 현실적인 실험 조건에서 양자 알고리즘을 디버그하고 실행할 수있는 환경을 제공합니다.
(또한 Q #은 @Pavel 덕분에 MS의 QDK 에서만 작동합니다 )
이 모든 것의 단점은 간단합니다. 이진 (비 양자) 회로에서 여전히 실행됩니다. 내가 아는 한, 이러한 것들을 실행하기 위해 쉽게 액세스 할 수있는 양자 컴퓨터는 없습니다 . 또한 단일 큐 비트를 표현하는 데 여러 이진 비트가 필요하므로 양자 프로그램을 시뮬레이션하는 데 필요한 계산 능력이 매우 빠르게 커집니다.
이 주제에 관한 논문을 인용하겠습니다 ( J. Allcock, 2010 ) :
우리의 평가에 따르면 구현이 매우 정확하지만 동시에이를 달성하기 위해 상당한 양의 추가 메모리를 사용합니다. 정확성에 대한 목표를 줄이면 표현 크기를 줄일 수 있으므로 같은 양의 메모리로 더 많은 큐 비트를 에뮬레이션 할 수 있습니다.
p 89, 섹션 5.1
구현이 더 정확할수록 느려집니다.
TL; DR : 가능하지만 일부 에뮬레이터가 존재하지만 대량의 큐빗에 매우 효율적인 것은 없습니다.
예, 일반적인 컴퓨터에서 양자 컴퓨터를 시뮬레이션 할 수 있습니다. 그러나 효율성을 희생해야 할 가능성이 높습니다.
다른 답변이 언급 한 것처럼 Q #에 관심이있을 수 있습니다. 더 많은 에뮬레이터 :
Quantum Computing Playground는 브라우저 기반 WebGL Chrome Experiment입니다. 간단한 IDE 인터페이스를 갖춘 GPU 가속 양자 컴퓨터와 디버깅 및 3D 양자 상태 시각화 기능을 갖춘 자체 스크립팅 언어를 갖추고 있습니다. Quantum Computing Playground는 최대 22 qubits의 양자 레지스터를 효율적으로 시뮬레이션하고 Grover와 Shor의 알고리즘을 실행할 수 있으며 스크립팅 언어 자체에 다양한 양자 게이트가 내장되어 있습니다.
QX Simulator는 Nader Khammassi가 QuTech에서 개발 한 범용 양자 컴퓨터 시뮬레이터입니다. 양자 알고리즘 설계자는 QX를 통해 양자 컴퓨터에서 양자 회로의 실행을 시뮬레이션 할 수 있습니다. 시뮬레이터는 사용자가 간단한 텍스트 소스 코드 파일로 회로를 설명 할 수있는 저수준 양자 어셈블리 언어 인 양자 코드를 정의합니다. 그런 다음 소스 코드 파일은 컨텐츠를 실행하는 시뮬레이터의 입력으로 사용됩니다.
Quantum ++은 템플릿 헤더 파일로만 구성된 현대적인 C ++ 11 범용 양자 컴퓨팅 라이브러리입니다. Quantum ++은 표준 C ++ 11로 작성되었으며 Eigen 3 선형 대수 헤더 전용 템플릿 라이브러리와 사용 가능한 경우 OpenMP 다중 처리 라이브러리 만 사용하여 외부 종속성이 매우 낮습니다.
고전적인 컴퓨터 과학의 많은 공통 개념에도 불구하고, 양자 컴퓨팅은 여전히 광범위한 이론 물리학 분야의 특수 분야로 널리 알려져 있습니다. [...] QCL (Quantum Computation Language)은 이러한 격차를 해소하려고합니다. QCL은 C 또는 Pascal과 같은 고전적인 절차 적 언어에서 파생 된 구문을 사용하는 양자 컴퓨터를위한 높은 수준의 아키텍처 독립적 프로그래밍 언어입니다. 이를 통해 일관된 형식으로 양자 알고리즘 (클래식 구성 요소 포함)을 완벽하게 구현하고 시뮬레이션 할 수 있습니다.
Quantiki 에서 더 관련있는 에뮬레이터를 찾을 수 있습니다
예, 클래식 컴퓨터에서 양자 계산을 시뮬레이션 할 수 있습니다. 그러나 시뮬레이션 비용은 큐 비트 수 및 / 또는 회로 깊이 및 / 또는 특정 동작 수에 따라 기하 급수적으로 증가합니다.
아이디어를 빠르게 시험해보기 위해 시뮬레이터 Quirk 가 훌륭합니다. 웹 브라우저에서 실행 되는 오픈 소스 드래그 앤 드롭 양자 회로 시뮬레이터입니다. algassert.com/quirk 에서 라이브 버전에 액세스 할 수 있습니다 .
다음은 "숨겨진"상태를 추적하기 위해 중간 상태 디스플레이로 계측 된 Quirk의 예제 Grover 회로의 스크린 샷입니다.
Q #을 구체적으로 살펴보면 에뮬레이터와 함께 사용하는 것이 매우 쉽습니다. 사실 Q #을 가질 수는 없지만 에뮬레이터를 가질 수는 없습니다.
시작하려면 먼저 Microsoft 웹 사이트 에서 .NET Core를 다운로드해야합니다 .
dotnet new -i "Microsoft.Quantum.ProjectTemplates::0.2-*"
Microsoft 웹 사이트 또는 Microsoft 웹 사이트를 통해 Microsoft Quantum Development Kit를 다운로드하면 언어 및 Microsoft 자체 에뮬레이터가 함께 다운로드됩니다.
새 Q # 프로젝트 ( dotnet new console -lang Q#
)를 만들면 에뮬레이터를 사용하도록 자동으로 구성되므로 일부 Q #을 입력하고 프로젝트를 실행하면 "작동합니다".
예. 직접 구축하는 경우 BullSequana M9600 시리즈와 동일한 사양의 타사 컴퓨터를 찾거나 € 100K + 이상 을 구입하여 Atos에서 시스템을 구입하십시오.
BullSequana M9600 시리즈와 Atos QLM 의 유사성을 주목하십시오 .
다른 소프트웨어를 사용하는 동일한 상자 (및 아마도 내부 구성 요소). 아토스는 "세계에서 가장 성능이 우수한 양자 시뮬레이터"라고 주장했다. 확실하지 않지만 30 qubit 버전의 사양은 두 개의 Intel CPU와 1TB의 메모리에 도달 할 수 있습니다.
거기에 어떤 식 으로든 내에서 양자 컴퓨터를 에뮬레이션하는 정상 나는 할 수 있도록 컴퓨터, 테스트 및 시도 (예 : Q 번호 등) 양자 프로그래밍 언어를?
당신은 메모리와 스왑 드라이브의 1-24TB의 2백56기가바이트를 사용하는 경우가있을 것입니다 느린 하지만 것입니다 작동합니다.
내 가설을 실제로 테스트 하고 가장 정확한 결과를 얻을 수있는 것을 의미 합니다 .
브로셔에서 인용 :
"Atos Quantum Learning Machine 은 두 자리 수의 정밀도로 양자 프로그램 의 정확한 실행 을 계산합니다 . 양자 컴퓨팅의 핵심 인 물리 법칙을 시뮬레이션합니다 . 이것은 양자를 겪고있는 기존 양자 프로세서와는 매우 다릅니다 Atos Quantum Learning Machine의 시뮬레이션을 통해 개발자는 양자 기계가 준비 될 때까지 기다리지 않고도 응용 프로그램 및 알고리즘에 집중할 수 있습니다. "
시뮬레이터이기 때문에 소음이 적거나 빠르거나 비싸지 않기 때문에 고 정확도를 주장합니다. 이론적으로 컴퓨터에 메모리, 드라이브 및 소프트웨어를 추가 할 수 있습니다 ...
나는 주제에 대한 좋은 "개요"는에서 찾을 수 있습니다 생각 : Quantiki를
여기에는 여러 언어로 된 양자 컴퓨터 시뮬레이터 목록이 있으며 일부 시뮬레이터는 이전에 인용되었습니다. 그러나 프로젝트 상태를 알리기 위해 업데이트하는 목록을 유지합니다. 다음과 같은 "라이브러리"가 있습니다.
하스켈
qchas (qchas : Quantum Algorithms 구현을위한 라이브러리)-Quantum Algorithms 구현에 유용한 라이브러리. 그것은 Quantum Gates, Qubits의 정의를 포함합니다.
파이썬
qubiter : Qubiter 프로젝트는 클래식 컴퓨터에서 양자 회로를 설계하고 시뮬레이션하기 위해 주로 Python으로 작성된 전체 도구 모음을 제공하는 것을 목표로합니다.
자바 스크립트
jsqis : jsqis의 핵심은 자바 스크립트로 작성된 양자 컴퓨터 시뮬레이터입니다. 양자 레지스터를 초기화하고 양자 게이트를 통한 조작을 허용합니다.