Grover의 알고리즘 : Oracle에 무엇을 입력해야합니까?


9

Grover의 알고리즘으로 Oracle에 입력해야 할 내용이 혼란 스럽습니다.

중첩 된 양자 상태 외에 찾고자하는 것을 입력하고 오라클에 찾고자하는 곳을 찾을 필요가 없습니까?

예를 들어, 사람들의 이름 목록 { "Alice", "Bob", "Corey", "Dio"}가 있고 "Dio"가 목록에 있는지 확인하려고합니다. 그렇다면 오라클은1/2(|00+|01+|10+|11) 입력 및 출력으로 1/2(|00+|01+|10|11). 나는 그것을 이해합니다.

그러나 "Dio"라는 단어와 { "Alice", "Bob", "Corey", "Dio"} 목록을 Oracle에 입력 할 필요도 없습니까? 그렇지 않으면 오라클은 어떻게 출력을 반환 할 수 있습니까? 오라클은 블랙 박스이기 때문에 명시 적으로 언급되지 않았으며 구현 방법에 대해 생각할 필요가 없습니까?

오라클에 대한 나의 이해는

  • 오라클은 "Dio"라는 단어가 목록에 있는지 인식 할 수 있습니다.
  • 그렇게하기 위해 Oracle은 중첩 된 양자 상태를 입력으로 취합니다. 여기서 각 양자 상태는 목록의 인덱스를 나타냅니다.
  • 입력 |00 오라클에게 "Dio"라는 단어가 목록의 인덱스 0에 있는지 확인하고 반환 |00 예인 경우 반환 |00 그렇지 않으면.
  • 우리의 경우, 오라클은 1/2(|00+|01+|10|11).
  • 그러나 목록과 단어는 어떻습니까?

1
같은 방식으로 표현되지는 않았지만 귀하의 질문은 다음과 거의 동일하다고 생각합니다. Grover의 알고리즘 : 목록은 어디에 있습니까?
DaftWullie

답변:


4

Grover 알고리즘에 대한 일반적인 설명은 목록을 검색하는 것에 대해 설명하지만 실제로는 가능한 입력 0..N-1을 함수로 검색하는 데 사용합니다. 알고리즘 비용은O(NF) 어디 N 검색하려는 입력 수입니다. F함수를 평가하는 비용입니다. 해당 함수가 목록을 검색하도록하려면 목록을 함수에 하드 코딩해야합니다.

목록을 사용하는 함수를 하드 코딩 N 항목은 일반적으로 매우 나쁜 생각입니다. F 같게 O(N). 그로버 알고리즘의 총 비용을O(NF)=O(NN)=O(N1.5). 어떤 목적으로 전체 목적을 이길 수 있습니까?N1.5>N.


정렬 된 목록을 입력하지 않아 조회가 훨씬 빨라 집니까? 물론 목록을 주문하는 비용을 포함하고 싶을 수도 있지만 여전히 다음과 같이 나옵니다.O(Nlog(N))사무용 겉옷.
DaftWullie

@DaftWullie 문제는 Grover가 중첩 상태에서 조회를 수행해야하며, N AND 게이트가있는 멀티플렉서 회로 (또는 기타 Clifford가 아닌 연산)가 필요하다는 것입니다. 양자 AND 게이트 (즉, Toffoli)는 에러 정정을 수행 할 때 무시할 수없는 비용을 갖는다. 이 비용은 기술적으로 클래식 머신에도 존재합니다 (예 : RAM에 O (N) AND 게이트가 있음). 그 맥락에서 무시할 수 있고 심지어는 피할 수도 있습니다.
Craig Gidney 1

나는 당신이 무슨 말을하는지 이해하지 못합니다. 세부 사항을 보여주기 위해 질문을 표현하고 대답 할 수 있습니까? (이 시점에서 충분한 질문을 할 수는 없다고 생각합니다)
DaftWullie

@DaftWullie 저는이 질문이 "양자 컴퓨터에 고전적인 데이터베이스에 대한 읽기 액세스 권한을 부여하는 방법과 비용은 어떻게됩니까?"와 같은 질문이라고 생각합니다.
Craig Gidney
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.