양자 컴퓨팅은 어떻게 프로그래밍을 바꾸는가? [닫은]


33

양자 알고리즘 프로그래밍은 어떻게 다릅니 까? C와 같은 언어가 큐 비트 용으로 설계된 경우 어떤 모양입니까? 유형이 변경됩니까?


참고 : 이것이 유효한 질문인지 확실하지 않습니다. 그렇지 않으면 죄송합니다.
MaiaVictor

4
나는 생각합니다. 그런 다음 다시이 사이트의 규칙을 잘 모르고 있습니다. 그리고 나는이 질문에 대한 답이 크지 않지만 정수를 훨씬 더 효율적으로 인수 분해
John Davis

3
나는이 주제가 여전히 과학적 연구에 있다고 생각하지만, 가상 양자 컴퓨터의 기본은 AFAIK로 잘 알려져 있으므로 도메인 전문가 (질문은 아님)가 질문에 대답 할 수 있어야한다. 그래서 나는 그것을 닫지 않기로 투표 합니다.
Doc Brown

답변:


17

얼마 전에 이것을 살펴 보았을 때, 양자 알고리즘은 특별히 빠르지는 않지만 기하 급수적으로 많은 병렬 처리를 허용한다는 것이 분명했습니다. 따라서 순차 하드웨어, 심지어 대규모 병렬 순차 하드웨어로는 실용적이지 않은 공간에서의 검색과 관련된 경우에 빛을 발할 것입니다.

양자 알고리즘의 특성 중 하나는 가역적 이어야한다는 것 입니다. 주어진 알고리즘은 되돌릴 수 있도록 충분한 레코드 유지 기능을 추가하여 가역적 인 알고리즘으로 변환 할 수 있습니다.

또 다른 특성은 양자 알고리즘에서 답을 얻는 것이 히트 앤 미스 사건이라는 것입니다. 계산이 끝날 때 얻는 결과는 각각 고유 한 확률을 가진 여러 답이기 때문입니다. 원하는 답이 높은 확률로 실행되도록해야합니다. 여기에는 알고리즘을 앞뒤로 여러 번 실행하는 것이 포함될 수 있습니다.

Grover의 검색 알고리즘을 확인하십시오 .


Grover 알고리즘의 기본 동작을 보여주기 위해 삽입되었습니다. 검색 문제가 있다고 가정하십시오. 가능한 응답은 0, 1, 2, 3,되지만 오른쪽 양자 컴퓨터가 네 개의 상태의 중첩에 배치되어, 응답은 2이며, 하나가 정확한지 표시하는 일련의 단계를 통해 진행하고, 아래의 검은 점과 화살표와 같이 진폭을 반전시킵니다.

여기에 이미지 설명을 입력하십시오

화살표 2가 기계 내부에서 뒤집힌 것을 볼 수 있지만 외부에서만 확률을 알 수 없으므로 진폭을 제곱 하고 제곱하면 모두 같습니다.

그러나 진폭에는 빨간색 선으로 표시된 평균이 있으며 컴퓨터는 평균에 대한 각 진폭반전 시키는 일련의 단계를 거치도록 만들 수 있습니다 . 이것이 완료되면, 진폭과 확률은 정답 2 상태로 넘어갑니다 ! 따라서 기계가 관찰되면 상태 2가 나타납니다.

그렇게 간단하지 않습니다. 일반적으로 정답의 확률을 최대화하기 위해 각 사이클의 끝에서 반전하여 기계의 여러 사이클을 앞뒤로 수행합니다. 또한, 자신을 쉽게 되돌릴 수 있기 때문에 그 횟수 이상으로하지 않도록주의해야합니다.

왜 양자 컴퓨터가 그렇게 빠르다고 말 합니까? 큐 비트 수를 두 배로 늘릴 때마다 병렬 처리를 제곱하지만 시간 길이를 제곱하지 않으므로 결국 승리합니다.

재미 있지 않습니까?


저는 이것이 소프트웨어 정확성 검증에 어떻게 적용될 수 있는지에 개인적으로 관심이있었습니다. 이제 우리는 소프트웨어에 많은 테스트 입력을 던져서 (아주 간단하게) Assert에 도달했는지 확인하여 소프트웨어를 테스트합니다. 양자 컴퓨터에서는 훨씬 더 조밀 한 입력 세트에 대해 병렬로 실행하여 해당 사례가 Assert에 해당하는지 확인할 수 있습니다.

알고리즘에 대한 입력이 128 바이트 또는 1024 비트 인 경우와 같이 2 ^ 1024 또는 10 ^ 308 가능한 다른 입력이 있습니다. 기존의 컴퓨터에서 많은 입력을 테스트 할 수있는 방법은 없지만, 양자 컴퓨터는 모든 입력을 동시에 시도 할 수 있습니다.


2
Grover의 검색 알고리즘 확인 중 ... OH GOD! 나는 그 준비가되지 않았다!
Philip 9

1
@Philip : 수학이 상당히 과감하다는 것을 알고 있지만 핵심 아이디어는 평균에 대한 회전으로 확률을 응답 상태로 이전하는 효과가 있습니다. 그런 다음 처음으로 돌아가서 앞으로 실행하고 특정 횟수만큼 다시 수행하십시오. 그런 다음 관찰을 수행하면 응답 상태를 볼 확률이 최대화됩니다.
Mike Dunlavey

알다시피, 그렇게 말할 때 그렇게 나쁘지는 않습니다. 나는 그들이 사용하는 표기법이나 양자 회로에 익숙하지 않다고 생각합니다. 양자 알고리즘의 페이지도 마찬가지로 위협적입니다. Qubit 이 시작하는 곳 이라고 생각합니다 . (간단한 Wikipedia에는 Quantum 컴퓨터 에 대한 페이지가 있지만 일부 작업을 사용할 수 있습니다)
Philip

@Philip : 1024 개의 입력 테이블이 있다고 가정하면 색인을 생성하는 데 10 비트가 필요합니다. 10 비트 (기가비트) 레지스터가 있으며 가능한 상태는 1024입니다. 따라서 레지스터가 0 인 유니버스를 만들고 다른 하나는 1 인 병렬 유니버스를 만듭니다. 그런 다음 양자 "명령"은 이들 모두에 대해 병렬로 작동합니다. 각 우주에는 "진폭 벡터"가 있으며 그 크기는 확률이지만 방향도 있으며 조작되고 있습니다. 1024 개 벡터의 집합은 0이 아닌 평균 벡터를 가지므로 회전은 하나가 커지고 나머지는 더 작아집니다.
Mike Dunlavey

나는 개혁 된 물리학 자이며 오해의 소지가 있기 때문에이 답변을 하향 조정했습니다. 1) 양자 알고리즘이 자주 있습니다 (빠른) 점근 - 그로버의 검색 알고리즘의 실행은 O (SQRT (N에서) 특히) 고전 컴퓨터가 할 수있는 최선 반면, O (N)입니다. 양자 컴퓨터가 점증 적으로 빠르지 않았다면 그리 흥미롭지 않을 것입니다. 하드웨어가 지금 느려질 수도 있지만 그것은 알고리즘의 결함이 아닙니다!
Benjamin Hodgson

7

C와 같은 언어가 큐 비트 용으로 설계된 경우 어떤 모양입니까? 유형이 변경됩니까?

C로 이해할 수 없을 정도로 크게 달라질 것입니다.

가장 중요한 문제는 (내가 이해하는 바와 같이) 양자 컴퓨팅이 훌륭한 명령 방식으로 작동하지 않는다는 것입니다. C가 양자 컴퓨터의 '프로세서'에이를 수행하도록하는 것은 불가능하지는 않지만 매우 비효율적입니다.

양자 컴퓨터를위한 프로그래밍 알고리즘은 (내가 이해하는 것처럼) 기능적 프로그래밍 스타일 맵 / 감소에 더 가까운 경향이있다. 양자 컴퓨팅은 '축소'부분의 모든 후보들이 동시에 존재할 수 있고 컴퓨터에서 "떨어져"나올 수 있기 때문이다. 관찰 될 때.

퀀텀 컴퓨터에는 장치가 존재하지 않지만이를 실행하는 기존 알고리즘이 있습니다. 예를 들어 시몬의 알고리즘 .


양자 알고리즘을위한 ELI5가 좋습니다.
MaiaVictor

3

양자 컴퓨터를 최대한 효과적으로 사용하기 위해서는 고전적인 아날로그가없는 양자 레지스터의 상태 인 입력 및 출력을 처리 할 수 ​​있어야합니다. 양자 정보 분야에서의 수년간의 경험에서 말하면, 나는 C * 대수학의 추상 수학 외에는 아무도 이것에 대한 좋은 직감을 가지고 있지 않다는 것을 경고해야하며,이 직관조차도 부적절한 것으로 판명되었습니다. 상대성 이론에 대해 궁금해하기 시작하면

양자 컴퓨터에서 효율적으로 해결할 수있는 문제의 종류를 BQP (Bounded Quantum Polynomial)라고합니다. 이것은 BPP의 양자 버전이며이 백서에서 자세한 정보를 찾을 수 있습니다. http://www.scottaaronson.com/papers/bqpph.pdf

나는 양자 알고리즘 연구원들에 의해 어제 밤 BQP- 완료라는 매우 중요한 문제가 있다는 것을 들었다 : N 방정식의 선형 시스템을 푸는 것. 고전적으로, 이것은 가우시안 제거로 O (N) 단계로 해결할 수 있습니다. Harrow-Hassidim-Lloyd 알고리즘 ( http://arxiv.org/abs/0811.3171 )은 솔루션을 양자 상태로 인코딩 한 답을 기꺼이 받아들이면 polylog (N)에서 알고리즘을 해결합니다. 따라서 양자 컴퓨터를 최대한 활용하려면 양자 레지스터의 상태에 해당하는 유형이 필요합니다.

지금은 특정 전문 지식을 약간 벗어 났지만 마법 상태에 해당하는 유형에 액세스 할 수있는 한 양자 컴퓨터를 프로그래밍 할 수있을 것입니다. 그러나 그것은 어려운 개념이므로 주제에 대한 연구가 필요합니다.

우리는 양자 컴퓨팅 연구의 매우 원시적 인 단계에 있기 때문에 양자 프로그래밍 언어를 가진 데 오랜 시간이 걸렸다는 경고를받습니다. 지금 양자 C를 요청하는 것은 Alan Turing으로 가서 파이썬을 설계하도록 요청하는 것과 같습니다. 우리는 진공관의 양자 버전을 아직 얻지 못했습니다!

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