Quantum Development Kit (QDK) Toffoli 시뮬레이터
참고
이 항목의 예제에서는 Microsoft Quantum Development Kit (클래식 QDK)를 사용하며 아직 Azure Quantum Development Kit Preview(최신 QDK)와 호환되지 않습니다. 최신 QDK에 대한 자세한 내용은 QSharp GitHub Wiki 참조하세요.
QDK Toffoli 시뮬레이터는 제한된 범위의 특수 용도 시뮬레이터로 X
, CNOT
, 다중 제어 X
양자 연산만 지원합니다. 모든 클래식 논리와 계산을 사용할 수 있습니다.
Toffoli 시뮬레이터는 전체 상태 시뮬레이터보다 기능이 더 제한적이지만 훨씬 더 많은 큐비트를 시뮬레이션할 수 있다는 이점이 있습니다. Toffoli 시뮬레이터는 수백만 개의 큐비트와 함께 사용할 수 있지만, 전체 상태 시뮬레이터는 약 30개의 큐비트로 제한됩니다. 예를 들어 부울 함수를 평가하는 오라클의 경우에 유용합니다. 부울 함수는 제한된 지원 알고리즘 세트를 사용하여 구현하고 많은 수의 큐비트에서 테스트할 수 있습니다.
Toffoli 시뮬레이터 호출
ToffoliSimulator
클래스를 통해 Toffoli 시뮬레이터를 노출합니다. 자세한 내용은 Q# 프로그램을 실행하는 방법을 참조하세요.
C#에서 Toffoli 시뮬레이터 호출
다른 target 컴퓨터와 마찬가지로 먼저 클래스의 ToffoliSimulator
instance 만든 다음 작업 Run
메서드의 첫 번째 매개 변수로 전달합니다.
QuantumSimulator
클래스와 달리 ToffoliSimulator
클래스는 IDisposable 인터페이스를 구현하지 않으므로 using
문 내에 묶을 필요가 없습니다.
var sim = new ToffoliSimulator();
var res = myOperation.Run(sim).Result;
///...
Python에서 Toffoli 시뮬레이터 호출
가져온 Q# 연산과 함께 Python 라이브러리의 toffoli_simulate() 메서드를 사용합니다.
qubit_result = myOperation.toffoli_simulate()
명령줄에서 Toffoli 시뮬레이터 호출
명령줄에서 프로그램을 실행하는 Q# 경우 --simulator (또는 -s 바로 가기) 매개 변수를 사용하여 Toffoli 시뮬레이터 target 머신을 지정합니다. 다음 명령은 리소스 예측 도구를 사용하여 프로그램을 실행합니다.
dotnet run -s ToffoliSimulator
Juptyer Notebook에서 Toffoli 시뮬레이터 호출
IQ# 매직 명령 %toffoli를 사용하여 Q# 연산을 실행합니다.
%toffoli myOperation
지원되는 작업
Toffoli 시뮬레이터는 다음을 지원합니다.
- 연산 결과가
X
또는 단위 행렬과 같을 때R
및Exp
와 같은 회전 및 지수화된 Paulis. - 측정 및 어설션 연산(Pauli
Z
기저에서만). 측정 연산의 확률은 항상 0 또는 1입니다. Toffoli 시뮬레이터에는 임의성이 없습니다. DumpMachine
및DumpRegister
함수. 두 함수 모두 각 큐비트의 현재Z
기저 상태를 한 줄에 한 개의 큐비트로 출력합니다.
큐비트 수 지정
기본적으로 ToffoliSimulator
인스턴스는 65,536개의 큐비트를 위한 공간을 할당합니다.
알고리즘에 이보다 많은 큐비트가 필요한 경우 qubitCount
매개 변수의 값을 생성자에 제공하여 원하는 큐비트 수를 지정할 수 있습니다.
각 추가 큐비트에는 1바이트의 메모리만 필요하므로 필요한 큐비트 수를 실제보다 크게 예측해도 많은 비용이 들지 않습니다.
예를 들어:
var sim = new ToffoliSimulator(qubitCount: 1000000);
var res = myLargeOperation.Run(sim).Result;