Path: blob/main/translations/ko/ch-algorithms/bernstein-vazirani.ipynb
3855 views
Bernstein-Vazirani 알고리즘
이 섹션에서는 먼저 Bernstein-Vazirani 문제와 그 고전적 솔루션 및 이 문제를 해결하기 위한 양자 알고리즘을 소개합니다. 그런 다음 Qiskit을 사용하여 양자 알고리즘을 구현하고 시뮬레이터와 실제 양자 백엔드 모두에서 실행해 보겠습니다.
1. Bernstein-Vazirani 알고리즘
Reference [1]에서 처음 소개된 Bernstein-Vazirani 알고리즘은 지난 섹션에서 다룬 Deutsch-Jozsa 알고리즘의 확장으로 볼 수 있습니다. Deutsch-Jozsa 문제보다 더 복잡한 문제의 해결에 양자 컴퓨터를 사용하면 이점이 있을 수 있음을 보여주었습니다.
1.1 Bernstein-Vazirani 문제
다시 입력으로 비트 문자열()을 사용하고 또는 를 반환하는 블랙박스 함수 가 제공됩니다. 즉 입니다.
Deutsch-Jozsa 문제처럼 함수가 상수 함수이거나 균형 함수인 것이 아니라, 이제 함수는 문자열 에 따라 입력의 비트 곱을 반환하게 됩니다. 즉, 입력 , 가 주어지며 를 찾아내야 합니다. 고전적인 가역 회로로서 Bernstein-Vazirani 오라클은 다음과 같습니다.

1.2 고전적 해법
일반적으로 오라클은 를 입력하면 를 반환합니다. 따라서 숨겨진 비트 문자열 는 여러가지 입력값들로 오라클을 탐색하여 드러낼 수 있습니다.
입력(x) :-: 100...0 010...0 001...0 000...1
여기서 각 쿼리는 의 서로 다른 비트( 비트)를 나타냅니다. 예를 들어 x = 1000...0 일 때 의 최하위 비트를 얻을 수 있고 x = 0100...0 일 때 다음 최하위 비트를 찾을 수 있는 방식입니다. 따라서 함수를 번 호출해야 한다는 것을 의미합니다.
1.3 양자 솔루션
양자 컴퓨터를 사용하면 함수를 한 번만 호출하면 100% 확실하게이 문제를 해결할 수 있습니다. 숨겨진 비트 문자열을 찾는 양자 Bernstein-Vazirani 알고리즘은 매우 간단합니다.
입력 큐비트를 상태로 초기화하고 출력 큐비트를 로 초기화합니다.
입력 레지스터에 Hadamard 게이트 적용
오라클 탐색
입력 레지스터에 Hadamard 게이트 적용
측정

알고리즘을 설명하기 위해 각 큐비트에 H-게이트를 적용할 때 어떤 일이 발생하는지 더 자세히 살펴보겠습니다. -큐비트 인 상태에 H-gate를 적용하고 어떤 변환이 일어나는지 살펴봅시다.
우리는 Hadamard가 하나의 큐비트에서 다음 변환을 수행한다는 것을 기억합니다.
합 표기을 사용하여 다음과 같이 다시 작성할 수 있습니다.
두 개의 큐비트에 대해 각각에 Hadamard를 적용하면 다음 변환이 수행됩니다.
합을 사용하여 아래와 같이 표현할 수 있습니다.
이제 위의 수식을 도출해 보도록 합시다.
특히, 양자 레지스터 상태로 시작하여 Hadamard 게이트를 적용하면 익숙한 양자 중첩 상태를 얻게 됩니다.
이 경우 이므로 위상 항 는 사라집니다. 따라서 입니다.
고전적 오라클 는 인 입력 에 대해 를 반환하고 그렇지 않으면 를 반환합니다. Deutsch-Jozsa 알고리즘처럼 위상 반동 기법을 사용하고 상태의 큐비트에 대해 적용하면 다음 변환을 얻습니다.
숨겨진 비트 문자열을 드러내는 알고리즘은 의 Hadamard 변환에서 얻은 양자 중첩으로 양자 오라클 를 쿼리하여 얻어집니다. 즉,
Hadamard 게이트의 역수는 다시 Hadamard 게이트이므로 를 얻을 수 있습니다.
2. 예제
큐비트와 숨겨진 문자열 에 대한 구체적인 예를 살펴보겠습니다. 단 하나의 레지스터를 사용하여 Bernstein-Vazirani 양자 오라클 회로를 생성 과정은 참조 [2]의 공식을 따르고 있음에 유의하십시오.
- 두 큐비트의 레지스터는 0으로 초기화됩니다.
아래 bv_widget 위젯을 사용합니다. 버튼을 눌러 다른 과정을 적용하고 알고리즘을 따라해 보십시오. 첫 두 개의 인수를 사용해 입력 큐비트 수와 숨겨진 문자열의 값을 변경할 수 있습니다.
먼저 실험에 사용될 큐비트의 수와 알고리즘에서 찾을 숨겨진 비트 문자열 를 설정합니다. 숨겨진 비트 문자열 는 양자 오라클의 회로를 결정합니다.
그런 다음 Qiskit을 사용하여 Bernstein-Vazirani 알고리즘을 프로그래밍합니다.
측정 결과가 숨겨진 문자열 011 임을 알 수 있습니다.
보시다시피 가장 높은 확률의 결과는 011 입니다. 다른 결들은 양자 계산의 에러로 인한 것입니다.
5. 참고문헌
Ethan Bernstein and Umesh Vazirani (1997) "Quantum Complexity Theory" SIAM Journal on Computing, Vol. 26, No. 5: 1411-1473, doi:10.1137/S0097539796300921.
Jiangfeng Du, Mingjun Shi, Jihui Wu, Xianyi Zhou, Yangmei Fan, BangJiao Ye, Rongdian Han (2001) "Implementation of a quantum algorithm to solve the Bernstein-Vazirani parity problem without entanglement on an ensemble quantum computer", Phys. Rev. A 64, 042306, 10.1103/PhysRevA.64.042306, arXiv:quant-ph/0012114.