Grover 알고리즘에 오라클 큐 비트가 필요한 이유는 무엇입니까?


10

Grover 알고리즘에서 오라클 큐 비트의 필요성에 대해 약간 혼란 스럽습니다.

제 질문은 오라클 큐 비트가 필요한지 아닌지 오라클에 어떻게 구현 하느냐에 달려 있습니까? 아니면 오라클 큐 비트에 대한 이유가 있습니까? (예를 들어 oracle qubit 없이는 해결할 수없는 몇 가지 문제가 있거나 oracle qubit의 문제에 대해 생각하기가 더 쉬워 지거나 규칙 등)

많은 리소스가 오라클 큐 비트와 함께 Grover의 알고리즘을 소개하지만 오라클 큐 비트가 필요하지 않은 경우가 있습니다.

예를 들어, 다음은 IBM Q 시뮬레이터에서 Grover 알고리즘의 두 가지 구현입니다. 하나는 오라클 큐 비트를 사용하고 있고 다른 하나는 그렇지 않습니다. 두 경우 모두 | 00>, | 01>, | 10> 및 | 11>의 공간에서 | 11>을 찾고 싶습니다. 두 경우 모두, oracle은 | 11>에서-| 11>로 성공적으로 전환됩니다.

・ Oracle 큐 비트 사용 ( IBM Q 시뮬레이터에 링크 ) 여기에 이미지 설명을 입력하십시오

・ Oracle 큐 비트가없는 경우 ( IBM Q 시뮬레이터에 링크 ) 여기에 이미지 설명을 입력하십시오

답변:


5

양자 회로를 정의한다는 관점에서 오라클 큐 비트가 반드시 필요한 것은 아닙니다. 예를 들어 Grover의 검색에서 일반적으로 오라클의 동작을 여기서 는 1을 반환합니다. 는 표시된 항목입니다. 그러나 우리는 항상 오라클 큐 비트에 를 입력하여 특정 방식으로 사용합니다 . 이는 표시된 항목에 단계를 구현하는 것만으로도 효과가 있습니다. 다시 말해, 새로운 단일 의 구현과 완전히 동일합니다.

U|x|y=|x|yf(x),
f(x)x(|0|1)/2
U~|x=(1)f(x)|x

그러나 차이를 만드는 곳은 실제 현실입니다. 항목을 검색하려면 실제로 입력을 기반으로 표시된 항목을 인식하는 일종의 회로가 필요합니다 . 그 시점에서 오라클 큐 비트를 사용하지 않고 위상을 제공하는 단일을 직접 빌드하는 것보다 오라클 비트에 대한 답변을 출력하는 것에 대해 생각하는 것이 훨씬 쉽습니다. 사실, 나는 당신이 일반 버전 을 디자인하라고 요청했다면 , 당신 은 솔루션으로 여분의 qubit를 로 생각해 낼 것입니다 .xU~U


그것은 사실이다 매우 가 오라클 계산시 작업 공간으로 사용하지 않는 가정, 여분의 큐 비트를 방지하기 쉽다. 여분의 큐 비트에서 CNOT를 찾은 다음 CNOT 제어의 Z 게이트로 교체하십시오. 마찬가지로 CCNOT를 여분의 큐 비트로 바꾸고 CCNOT의 두 컨트롤 사이의 CZ로 교체하십시오. 기타
Craig Gidney

@CraigGidney 나는 당신의 진술에 더 많은 가정이 있다고 생각하지만 (우리가 알고있는 대부분의 경우를 만족하더라도 비 제네릭으로 만듭니다) 기능 평가; (2) 오라클의 회로는 오라클 큐 비트에 작용하는 유일한 멀티 큐빗 게이트가 오라클 큐 비트를 목표로하는 (멀티) 제어-노트 인 게이트 세트로 분해되어야한다. (3) 다른 게이트는 오라클 큐 비트에서 작동 할 수 없습니다 (즉, 입력 및 출력에서하다 마드를 사용하여 잘못된 방식으로 작동하는 c- 노트를 반전시킬 수는 없습니다).
DaftWullie

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