매우 간단한 양자 프로그램은 어떻게 생겼습니까?


76

세계 최초의 프로그램 가능한 양자 광자 칩 발표에 비추어 볼 때, 양자 얽힘을 사용하는 컴퓨터 용 소프트웨어가 어떤 것인지 궁금합니다. 내가 쓴 첫 번째 프로그램 중 하나는

for i = 1 to 10
  print i
next i

pseudocode 또는 고급 언어로 양자 광자 칩 (또는 유사한 하드웨어)을 사용하는 비교 가능한 단순성 코드의 예를 아는 사람이 있습니까? 전통적인 프로그래밍에서 얽힘 등으로 개념적 점프를 만드는 데 어려움이 있습니다.


당신의 연결이 끊어집니다
수레 쉬 벤 카트

1
이 질문에 +1 및 . Turing Machines와 다른 패러다임에서 프로그래밍 언어에 대해 매우 궁금하지만 실제로는 양자 컴퓨터에서 코드를 실제로 실행하지 못할 수도 있습니다.
Janoma

답변:


60

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의 양자 메모리는 어디에 있으며 [...]부울을 포함하는 클래식 (신호) 메모리입니다.


  1. Danos et al. 측정 미적분. arXiv (2007) vol. 퀀트 -PH
  2. Raussendorf와 Briegel. 단방향 양자 컴퓨터. Physical Review Letters (2001) vol. 86 (22) pp. 5188-5191

주제에 대한 훌륭한 토론, 감사합니다, 쇠고기. Btw, OP는 "전통적인 프로그래밍에서 얽힘 등으로 개념적 점프를 만드는 데 어려움을 겪고 있습니다."라고 말합니다. 따라서 그러한 전환에 도움이되는 것을 환영해야합니다.
Kris

당신 말이 맞아요, 부끄러움 때문에 실제로 그 부분을 놓친 것 같았습니다 : / 단락 추가
Beef

"N, E, M, X 및 Z의 5 가지 명령 만있는 양자 컴퓨터를 고려하십시오." 지시 Z에 대한 설명이 없습니다 :(
Fernando Gonzalez Sanchez Sanchez

Z는 X와 매우 비슷합니다.) en.wikipedia.org/wiki/Pauli_matrices X 연산은 벡터 [ab]를 [ba]로, Z 연산은 [a -b]로 변환합니다.
쇠고기

21

나는 C의 libquantum , Haskell의 퀀텀 모나드 또는 Perl의 Quantum :: Entanglement가 모두 양자 계산을 충실하게 표현 한다고 가정합니다 . 당신은 그들의 예를 볼 수 있습니다.

일반적으로 양자 알고리즘을 일련의 선형 연산자를 양자 시스템의 상태를 나타내는 슈퍼 포지션에 적용하는 클래식 알고리즘으로 설명합니다. 저널 기사는 종종 양자 비트 / 레지스터를위한 라인과 선형 연산자를위한 박스가있는 회로를 묘사합니다.

물론 어려운 부분은 알고리즘을 설명하는 것이 아니라 확률 알고리즘과 마찬가지로 알고리즘이 작동하는 이유를 이해하는 것입니다. 나는 항상 Grover의 알고리즘을 이해하기 쉽다고 생각했습니다 . Shor 's Algorithm에 의해 사용 된 Quantum Fourier 변환 에 대해서도 읽을 수 있습니다 .


11

다음과 같이 보입니다 : 여기에 이미지 설명을 입력하십시오

당신도 실제 양자 프로세서에 접근 할 수 있습니다. 여기로 가서 가입하십시오 : http://www.research.ibm.com/quantum/

또한 실제 하드웨어를 사용하지 않고 테스트하거나 크레딧 (무료)을 사용하여 실제 하드웨어에서 실행할 수 있도록 시뮬레이터가 포함되어 있습니다.



3

답은 "단순한 클래식 프로그램과 비슷합니다"라고 생각합니다.

단순 형식의 람다 미적분학 (제품 포함)을 고전적인 프로그래밍의 핵심이라고 생각하면 닫힌 직교 범주의 내부 유형 이론이라는 점을 활용할 수 있습니다.

즉, 물리학에서 양자 물리학과 관련된 대수적 구조는 종종 대칭 단일체 범주를 갖는 범주 이론에서 모델링됩니다. ( Hilb , Cob , Tang 참조 ) 대칭 일각 범주는 직교 범주보다 한 단계 앞입니다 (중복 및 삭제 만 추가하면 됨).nkk

따라서 STLC가 직교 폐쇄 범주에 대한 것이라면 대칭 대칭 단일 범주는 무엇입니까? 음, 우리는 대칭 monoidal 카테고리의 내부 논리가 MILL 이라는 것을 알고 있습니다. 그래서 우리에게 필요한 것은 선형 유형 이론 인 MILL에 해당하는 유형 이론입니다.

추상적 인 넌센스에서 벗어나 선형 선형 이론으로 얻을 수있는 것은 무엇입니까? 선형성. 우리는 자원의 선형성을 얻습니다. 이것이 바로 우리가 원하는 것입니다. 퀀텀 비트를 복제 할 수 없습니다. 암시 적으로 측정 할 수 없습니다. 그리고 선형성은 축소 중에 이들 중 하나를 수행 할 수 없음을 의미합니다.

선형 유형 이론에 대한 연구가 있었지만 톤은 아닙니다. 필자는이 글에서 물리, 토폴로지, 논리 및 계산 : Mike Stay와 John Baez 의 Rosetta Stone 을 통해 아이디어를 얻었습니다 .


0

나는 아마도 간단한 "작은 n으로 나누기"카운터 구현으로 시작할 것이다.

예를 들어, 10GHz 소스가 주어지면 5GHz 출력을 생성하십시오 (그러나이 숫자는 임의이며 개념을 설명하기위한 것일뿐입니다).

이를 통해 스토리지 및 Von Neumann 아키텍처와 같은 문제를 무시하고 구성 요소가 실제로 이해할 수있는 작업에 집중할 수 있습니다.

다음 목표는 "작은 n"의 작은 레퍼토리를 구축하는 것입니다.하지만 저의 연구원들로부터의 반박도들을 것입니다. 다른 작은 목표가 더 즉각적으로 유익 할 것이라고 생각한다면 분명히 이해하고 싶습니다. 그들이 나에게 말한 것.)

장기 목표에는 정보를 시스템 내외부로 펌핑하고 정보를 사용하기에 충분한 시간 동안 보유하는 메커니즘이 포함됩니다.

초기 컴퓨터 프로그램은 모두 "하드 와이어"였다는 사실을 기억할 가치가있을 것입니다. 시스템에 대한 광범위한 경험을 쌓은 후에야 저장된 프로그램을 구현할 수있었습니다.


-6

나는 양자 컴퓨터를 프로그래밍하는 것이 다른 관점에서 볼 때 정상적인 객체 지향 프로그래밍과 같아야한다고 생각합니다.

QC는 두뇌가 생각하고 결정하는 능력과 동일합니다. 수단을 생각하는 능력은 데이터 선택의 힘으로 데이터 소스를 선택하여 가능한 선택이 될 수 있으며 가능한 모든 상태에서 선택할 수있는 데이터를 결정합니다.

이 시점에서 소프트웨어는 큐 비트가 데이터 마이닝되고 다른 데이터 그룹과 얽힐 수있는 데이터 소스를 나타내는 방식으로 아키텍처되어야합니다.

QC는 데이터 읽기를 처리하는 데이터 마이너를 가지고 있어야하며, 서로 다른 옵션을 서로 연결하여 정보를 나타내는 다른 데이터 소스 그룹과 가능한 모든 상태를 읽고 어느 것을 선택할 것인지 선택해야합니다.

그것이 우리 뇌의 작동 방식입니다. QC는 Quantum Mechanic 법에 따라 이해하고 행동 할 수 있습니다. 즉, 문제가 발생하면 QC는이를 해결하기위한 모든 가능한 솔루션을 보여줍니다.

그것은 QC가 얼마나 강력 할 수 있는가, 당신은 동의합니까?

https://www.cs.rutgers.edu/~mlittman/papers/openhouse11.pdf 이것이 시작점입니다. 그런 다음 게이트를 사용하여 양자 장치를 구축 할 데이터 마이너를 만들고, 데이터 마이너에 연결된 리더를 읽고 피드백을 제공하다. 양자 데이터 소스 컴포넌트 호스트 데이터 및 데이터 마이너가 작동하는 지식의 범위.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.