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(N⋅F) 어디 N 검색하려는 입력 수입니다. F함수를 평가하는 비용입니다. 해당 함수가 목록을 검색하도록하려면 목록을 함수에 하드 코딩해야합니다.

목록을 사용하는 함수를 하드 코딩 N 항목은 일반적으로 매우 나쁜 생각입니다. F 같게 O(N). 그로버 알고리즘의 총 비용을O(N⋅F)=O(N⋅N)=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.