Grover의 검색 알고리즘에서 오라클은 어떻게 구현됩니까?


27

Grover의 검색 알고리즘 은 정렬되지 않은 데이터베이스 검색을위한 2 차 속도 향상을 제공합니다. 알고리즘은 일반적으로 다음과 같은 양자 회로로 표현됩니다.

대부분의 표현에서, 프로토콜의 중요한 부분은 "오라클 게이트"입니다 Uω , "마술"수행 작업이 |x(1)f(x)|x . 그러나 종종 그러한 게이트를 실현하는 것이 얼마나 어려울 지 종종 말하지 않습니다. 실제로, "oracle"의 사용은 카펫 아래의 어려움을 극복하는 방법 일 것 같습니다.

이러한 안구 수술이 실제로 실현 가능한지 어떻게 알 수 있습니까? 그렇다면, 게이트 분해의 복잡성 측면에서 그 복잡성은 무엇입니까?


5
그것은 내가 궁금했던 것이기도합니다. 에서 이 실험 예들은 하드 와이어 ... 나에게 부정 행위처럼 조금 맛 오라클,에 솔루션
M. 스턴

이 질문에 대한 또 다른 위대한 답변이 CS Theory SE 의이 답변 에 제공됩니다 .
glS

답변:


20

함수 f 는 단순히 비트 문자열의 임의의 부울 함수입니다. f:{0,1}n{0,1} . [1] , [2] 또는 [3] 과 같은 암호화를 깨는 응용 프로그램의 경우 실제로는 '데이터베이스 조회'가 아니며 전체 데이터베이스를 양자 회로로 저장해야하지만 오히려 다음과 같은 기능이 필요합니다.

x{1,if SHA-256(x)=y;0,otherwise,

y

x{1,if 2xy(mod220481942289),0,otherwise,

클래식 컴퓨터에서도 더 빠르게 뒤집을 수있는 구조 를 가지고 있습니다.

는 어떤 회로도 될 수 있기 때문에 특정 비용에 대한 문제는 일반적으로 대답 할 수 없습니다. 그것은 고전 회로로 양자 회로만드는 문제 일뿐 입니다. 그러나 일반적으로 위의 예에서와 같이 함수 는 클래식 컴퓨터에서 평가하기에 매우 저렴하므로 Grover 알고리즘에 대한 다른 모든 것이 예산 범위 내에있는 양자 컴퓨터에 특히 부담을주지 않아야합니다.ff

유일한 일반적인 비용 은 추가 조건부 NOT 게이트 여기서 는 xor이고 추가 보조 큐 비트입니다. 특히 회로 의 내장 와의 회로 , 우리가 그것을 적용하는 경우 다음 할 함께 초기 상태에서 보조 큐 비트와 여기서f

C:|a|b|a|ab
F:|x|a|junk|x|af(x)|junk
Cf|x|=H|1=(1/2)(|0|1)H 하다 마드 게이트입니다

F|x||junk=12(F|x|0|junkF|x|1|junk)=12(|x|f(x)|junk|x|1f(x)|junk).

경우 다음 우리가 얻을 단순화하여, 경우 반면, 후 , 그래서 일반적으로f(x)=01f(x)=1

F|x||junk=|x||junk,
f(x)=11f(x)=0
F|x||junk=|x||junk,
F|x||junk=(1)f(x)|x||junk.


5

글로버의 원래 논문 인 "Quantum mechanics는 건초 더미에서 바늘을 찾는 데 도움이된다"고 명확하게 기술하고 있으며, C (S)를 일정한 시간에 평가할 수 있다고 가정 합니다. Grover의 검색은 구현 가능성에 관심이 없지만 쿼리 복잡성 (고전 데이터베이스와 같이 오라클에 문의하는 횟수)의 다항식 감소

실제로 컴퓨팅에서 오라클 개념은 Alan Turing 에 의해 제안되어 UTM에 대한 설명을 실현할 수없는 구문을 설명합니다 (Wikipedia). 그것은 이다 어떤 의미의 마법에.

그러나 물론, 당신의 질문으로 돌아가서, 우리는 어떻게 실제로 그로버 검색 (또는 어떤 oracular) 알고리즘을위한 회로를 만드는가? 결과를 검색하려면 답을 미리 알아야합니까? 어떤 의미에서 당신은 필요합니다. 이것이 바로 그로버 검색의 영리한 개선 작업이 시도한 것입니다. 따라서 정확한 답을 미리 알 필요는 없지만 일부 속성을 알 수 있습니다. 예를 들어 설명하겠습니다.

Grover의 검색을 사용하는 패턴 인식 문제의 경우 2 qubits (00, 01, 10, 11)에 4 개의 패턴이 있고 11을 표시하고 증폭하려면 oracle unitary의 대각선이 (1,1,1) , -1) 솔루션의 파이 위상 변이를 처리합니다. 따라서이 간단한 구현, 단일 구성을 위해서는 전체 답변을 미리 알아야합니다.

Mateas와 Omar의 논문 "Quantum pattern matching"에 주어진 패턴 완성의 영리한 개선. 본질적으로, 세트에 알파벳이있는만큼 많은 고정 된 오라클을 구성합니다. 따라서 이진 문자열에는 1을 모두 표시하는 오라클과 0을 모두 표시하는 오라클이 있습니다. 오라클은 내가 검색하고자하는 것을 기반으로 조건부로 호출됩니다. 11을 검색하려면 LSqubit에서 oracle 1을 호출하고 MSqubit에서 oracle 1을 다시 호출하십시오. 첫 번째 오라클에서는 상태 (01, 11), 즉 LSQ가 1 인 상태를 증폭하고 두 번째 호출에서는 증폭합니다 (10, 11). 보시다시피 11은 두 번 증폭되는 유일한 상태로 측정 확률이 높아집니다. 컴파일 된 양자 회로는 입력 검색 패턴이 무엇인지에 따라 변하지 만 양자 알고리즘에 대한 높은 수준의 설명은 동일하게 유지됩니다. 검색 문자열의 각 문자에 대해 호출 된 알파벳 세트의 전환 사례를 기반으로 오라클을 함수 호출로 생각할 수 있습니다.

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