우리는 Grover 알고리즘에서 초기화 단계가 수행되면 레지스터 Q의 상태 벡터가 ∣A0⟩과 ∣A1⟩이 생성하는 2차원 부분공간에 머무른다는 것을 확립했습니다.
목표는 원소 x∈A1을 찾는 것이며, 이 목표는 상태 ∣A1⟩을 얻을 수 있다면 달성됩니다. 이 상태를 측정하면 측정 결과 x∈A1을 얻는 것이 보장되기 때문입니다.
2단계에서 t번 반복 후의 Q의 상태가
Gt∣u⟩=cos((2t+1)θ)∣A0⟩+sin((2t+1)θ)∣A1⟩,
이므로, 측정에서 x∈A1을 얻을 확률을 극대화하기 위해
⟨A1∣Gt∣u⟩=sin((2t+1)θ)
의 절댓값이 가능한 한 1에 가깝도록 t를 선택해야 합니다.
임의의 각도 θ∈(0,2π)에 대해, t가 증가함에 따라 값 sin((2t+1)θ)는 진동하지만, 반드시 주기적인 것은 아닙니다. 즉, 같은 값을 두 번 얻는다는 보장은 없습니다.
당연히 측정에서 원소 x∈A1을 얻을 확률을 크게 하는 것 외에도, G 연산의 t번 적용에는 함수 f에 대한 t번의 쿼리가 필요하기 때문에 t를 가능한 한 작게 선택하고 싶습니다.
sin((2t+1)θ)를 절댓값에서 1에 가깝게 만드는 것이 목표이므로, 이를 수행하는 자연스러운 방법은
(2t+1)θ≈2π.
가 되도록 t를 선택하는 것입니다.
t에 대해 풀면 다음을 얻습니다.
t≈4θπ−21.
물론 t는 정수여야 하므로, 반드시 이 값에 정확히 도달할 수 있는 것은 아닙니다. 하지만 우리가 할 수 있는 것은 이 값에 가장 가까운 정수를 취하는 것이고, 그것은
t=⌊4θπ⌋.
입니다.
이것이 Grover 알고리즘에 권장되는 반복 횟수입니다.
분석을 진행하면서, 이 정수가 목표값에 얼마나 가까운지가 자연스럽게 알고리즘의 성능에 영향을 미친다는 것을 보게 될 것입니다.
(참고로, 목표값 π/(4θ)−1/2가 정확히 두 정수 사이의 중간에 있는 경우, 이 t의 표현은 반올림하여 얻는 것입니다. 대신 내림할 수도 있는데, 이는 한 번의 쿼리가 적다는 것을 의미하기 때문에 의미가 있습니다. 하지만 이것은 부차적이며 레슨에 있어 중요하지 않습니다.)
각도 θ의 값이 다음 공식에 의해 주어진다는 것을 상기하면,
θ=sin−1(N∣A1∣),
권장되는 반복 횟수 t가 A1의 문자열 수에 의존한다는 것을 알 수 있습니다.
이는 해의 개수를 모르는 경우 어려움을 제시하는데, 이는 나중에 논의하겠습니다.
이 확률들이 엄격히 증가하지 않는다는 점을 주목하세요.
특히, N=4일 때 흥미로운 이상 현상이 있는데, 확실하게 해를 얻습니다.
그러나 일반적으로 다음이 증명될 수 있습니다.
p(N,1)≥1−N1
모든 N에 대해서 말이며, 따라서 위의 값들이 시사하는 것처럼 N이 커짐에 따라 극한에서 성공 확률은 1로 수렴합니다.
이는 좋습니다!
그러나 p(N,1)≥1/2와 같은 약한 경계조차 Grover 알고리즘의 유용성을 입증한다는 점에 주목하세요.
절차를 실행하여 얻은 어떤 측정 결과 x에 대해서도, 우리는 항상 f에 대한 단일 쿼리를 사용하여 f(x)=1인지 확인할 수 있습니다.
그리고 절차를 한 번 실행하여 f(x)=1인 유일한 문자열 x를 얻는 데 실패할 확률이 최대 1/2라면, 절차를 독립적으로 m번 실행한 후 이 유일한 문자열 x를 얻는 데 실패할 확률은 최대 2−m가 될 것입니다.
즉, f에 대한 O(mN)번의 쿼리를 사용하여, 최소 1−2−m의 확률로 유일한 해 x를 얻을 것입니다.
더 나은 경계 p(N,1)≥1−1/N을 사용하면, 이 방법을 통해 x∈A1을 찾을 확률이 실제로 최소 1−N−m이라는 것이 드러납니다.
여기서 앞서 제시한 표기법을 사용하고 있습니다. p(N,s)는 N개의 가능성 중 총 s개의 해가 있을 때 t번 반복 실행된 Grover 알고리즘이 해를 드러낼 확률을 나타냅니다.
성공 확률에 대한 이 하한 1−s/N은 해가 더 많을수록 더 나쁜 하한을 의미한다는 점에서 약간 특이합니다. 하지만 s가 N보다 상당히 작다는 가정하에, 그럼에도 불구하고 성공 확률이 상당히 높다고 결론 내릴 수 있습니다.
이전과 마찬가지로, p(N,s)가 상당히 크다는 사실만으로도 알고리즘의 유용성을 함의합니다.
또한 다음도 성립합니다.
p(N,s)≥Ns.
이 하한은 균등하게 무작위로 선택된 문자열 x∈Σn이 해일 확률을 설명합니다. 따라서 Grover 알고리즘은 항상 최소한 무작위 추측만큼은 잘 작동합니다.
(사실, t=0일 때 Grover 알고리즘은 무작위 추측 그 자체입니다.)
해의 수 s=∣A1∣이 알려지지 않은 경우, 다른 접근이 필요합니다. 이 상황에서는 t의 선택에 정보를 제공할 s에 대한 지식이 없기 때문입니다.
사실, 여러 접근 방식이 있습니다.
간단한 접근 방식 하나는
t∈{1,…,⌊πN/4⌋}
에서 균등 무작위로 선택하는 것입니다.
이러한 방식으로 t를 선택하면 항상 40% 이상의 확률로 (해가 존재한다고 가정할 때) 해를 찾지만, 이는 자명하지 않으며 여기에는 포함되지 않는 분석이 필요합니다.
그러나 특히 기하학적 그림을 생각해 볼 때 의미가 있습니다.
이렇게 Q의 상태를 무작위 횟수만큼 회전시키는 것은 ∣A0⟩과 ∣A1⟩이 생성하는 공간에서 무작위 단위 벡터를 선택하는 것과 크게 다르지 않으며, 그 경우 ∣A1⟩의 계수가 상당히 클 가능성이 있습니다.
이 절차를 반복하고 앞서 설명한 것과 같은 방식으로 결과를 확인함으로써, 해를 찾을 확률을 1에 매우 가깝게 만들 수 있습니다.
해의 개수 s가 알려지지 않았을 때도 해가 존재하면 O(N/s)번의 쿼리로 해를 찾고, s=0일 때 해가 없음을 결정하는 데 O(N)번의 쿼리가 필요한 개선된 방법이 있습니다.
기본 아이디어는 T 값이 증가함에 따라 반복적으로 집합 {1,…,T}에서 t를 균등 무작위로 선택하는 것입니다.
특히, T=1로 시작하여 지수적으로 증가시킬 수 있으며, 해가 발견되는 즉시 프로세스를 종료하고 해가 없을 때 쿼리를 낭비하지 않도록 T의 상한을 두는 것입니다.
이 프로세스는 해가 더 많을 때 쿼리가 더 적게 필요하다는 사실을 활용합니다.
그러나 T의 증가율과 각 반복의 성공 확률 사이의 균형을 맞추려면 주의가 필요합니다.
(예를 들어, T←⌈45T⌉을 취하는 것은 분석에서 드러나듯이 작동합니다.
그러나 T를 두 배로 하는 것은 작동하지 않습니다. 이는 너무 빠른 증가인 것으로 드러납니다.)