Caveat Emptor : 다음은 QC 분야에 대한 저의 연구와 견해에 크게 영향을받습니다. 이것은 해당 분야의 일반적인 합의를 구성하지 않으며 일부 자체 홍보를 포함 할 수도 있습니다.
양자 컴퓨팅의 'hello world'를 표시하는 문제는 기본적으로 Leibnitz 또는 Babbage가 현재 컴퓨터와는 달리 양자 컴퓨터와는 거리가 멀다는 것입니다. 이론적으로 어떻게 작동해야 하는지를 알고 있지만 실제 양자 컴퓨터를 실제로 구축하는 표준 방법은 없습니다. 이것의 부작용은 양자 컴퓨팅의 단일 프로그래밍 모델이 없다는 것입니다. Nielsen 등의 교과서 는 '양자 회로'다이어그램을 보여 주지만 공식 프로그래밍 언어와는 거리가 멀다. 고전적인 제어와 같은 세부 사항에 대해 약간의 '손을 흔들며'얻거나 입 / 출력 / 측정 결과를 처리합니다.
프로그래밍 언어 컴퓨터 과학자로서의 연구에서 나에게 가장 적합하고 다른 컴퓨터 과학자에게 QC의 장점을 부여하는 것은 내가 겪은 가장 간단한 QC 모델을 사용하는 것입니다.
내가 본 모든 필수 요소를 포함하는 가장 간단한 양자 컴퓨팅 프로그램은 내가 본 가장 간단한 양자 프로그래밍 모델의 작은 3 명령 프로그램입니다. 나는 당신이 기본을 얻기 위해 'hello world'처럼 그것을 사용합니다.
Danos et al. 의 The Measurement Calculus 에 대한 간략한 요약을 제공하겠습니다 . 하나 의 기준이되는 단방향 양자 컴퓨터 기반 2 : 측정시 큐빗 파괴되지만 측정 그것 교락 된 모든 다른 큐 비트에 영향을 미친다. 그것은 광자 칩에 의해 실현되는 '회로 기반'양자 컴퓨터에 비해 이론적이고 실용적인 이점을 가지고 있지만, 다른 논의입니다.
N, E, M, X 및 Z의 명령이 5 개 뿐인 양자 컴퓨터를 고려하십시오. "조립 언어"는 일반 컴퓨터와 유사하며, 하나의 명령을 실행 한 후 시퀀스의 다음 명령으로 이동합니다. 각 명령어는 대상 큐 비트 식별자를 사용하며 여기서는 숫자와 다른 인수 만 사용합니다.
N 2 # create a new quantum bit and identify it as '2'
E 1 2 # entangle qubits '1' and '2', qubit 1 already exists and is considered input
M 1 0 # measure qubit '1' with an angle of zero (angle can be anything in [0,2pi]
# qubit '1' is destroyed and the result is either True or False
# operations beyond this point can be dependent on the signal of '1'
X 2 1 # if the signal of qubit '1' is True, execute the Pauli-X operation on qubit '2'
따라서 위의 프로그램은 ancilla를 생성하고 입력 큐 비트와 얽히고 입력을 측정하며 측정 결과에 따라 ancilla에 대한 작업을 수행합니다. 결과적으로 quadam 2에는 Hadamard 작업 후 qubit 1의 상태가 포함 됩니다.
위의 내용은 자연스럽게 손으로 코딩하고 싶지 않은 낮은 수준입니다. 측정 미적분의 장점은 서브 루틴에서와 같이 더 큰 알고리즘을 구성 할 수있는 일종의 구성 가능한 매크로 인 '패턴'을 도입한다는 것입니다. 1- 명령 패턴으로 시작하여 더 큰 패턴을 성장시킵니다.
어셈블러와 유사한 명령어 시퀀스 대신 프로그램을 그래프로 작성하는 것도 일반적입니다.
input .........
\--> ( E ) ---> (M:0) v
(N) ---> ( ) ------------> (X) ---> output
여기서 전체 화살표는 큐 비트 종속성이고 점선 화살표는 '신호'종속성입니다.
다음은 '양자 프로그래머'가 사용할 것이라고 상상할 수 있듯이 작은 프로그래밍 도구로 표현 된 것과 동일한 Hadamard 예제입니다.
편집 : ( '고전적인'컴퓨터와의 관계 추가) 고전적인 컴퓨터는 여전히 가장 잘하는 일에서 여전히 효율적이므로 비전 컴퓨터는 현재 컴퓨터가 그래픽을 컴퓨터로 오프로드하는 방식과 유사하게 특정 알고리즘을 오프로드하는 데 사용됩니다 GPU. 위에서 본 것처럼 CPU는 명령 스트림을 전송하여 퀀텀 컴퓨터를 제어하고 부울 '신호'에서 측정 결과를 다시 읽습니다. 이런 식으로 CPU와 양자 상태 및 양자 컴퓨터에 미치는 영향에 의해 고전적인 제어를 엄격하게 분리 할 수 있습니다.
예를 들어, 양자 코 프로세서를 사용하여 임의의 부울 또는 코인 토스를 계산하겠습니다. 고전적인 컴퓨터는 결정론 적이므로 좋은 난수를 반환하는 데 좋지 않습니다. 양자 컴퓨터는 본질적으로 확률 론적이지만, 임의의 0 또는 1을 얻기 위해해야 할 일은 동등하게 균형 잡힌 큐 비트를 측정하는 것입니다. CPU와 'QPU'간의 통신은 다음과 같습니다.
qrand() N 1; M 1 0;
==> | CPU | ------------> | QPU | ==> { q1 } , []
start()
| | ------------> | | ==> { } , [q1: 0]
read(q1)
| | ------------> | |
q1: 0
0 | | <----------- | |
<==
{ ... }
큐 비트를 포함하는 QPU의 양자 메모리는 어디에 있으며 [...]
부울을 포함하는 클래식 (신호) 메모리입니다.
- Danos et al. 측정 미적분. arXiv (2007) vol. 퀀트 -PH
- Raussendorf와 Briegel. 단방향 양자 컴퓨터. Physical Review Letters (2001) vol. 86 (22) pp. 5188-5191