주 콘텐츠로 건너뛰기

반복 횟수 선택

우리는 Grover 알고리즘에서 초기화 단계가 수행되면 레지스터 Q\mathsf{Q}의 상태 벡터가 A0\vert A_0\rangleA1\vert A_1\rangle이 생성하는 2차원 부분공간에 머무른다는 것을 확립했습니다.

목표는 원소 xA1x\in A_1을 찾는 것이며, 이 목표는 상태 A1\vert A_1\rangle을 얻을 수 있다면 달성됩니다. 이 상태를 측정하면 측정 결과 xA1x\in A_1을 얻는 것이 보장되기 때문입니다. 2단계에서 tt번 반복 후의 Q\mathsf{Q}의 상태가

Gtu=cos((2t+1)θ)A0+sin((2t+1)θ)A1,G^t \vert u \rangle = \cos\bigl((2t + 1)\theta\bigr) \vert A_0\rangle + \sin\bigl((2t + 1)\theta\bigr) \vert A_1\rangle,

이므로, 측정에서 xA1x\in A_1을 얻을 확률을 극대화하기 위해

A1Gtu=sin((2t+1)θ)\langle A_1 \vert G^t \vert u \rangle = \sin((2t + 1)\theta)

의 절댓값이 가능한 한 11에 가깝도록 tt를 선택해야 합니다. 임의의 각도 θ(0,2π)\theta \in (0,2\pi)에 대해, tt가 증가함에 따라 값 sin((2t+1)θ)\sin((2t + 1)\theta)진동하지만, 반드시 주기적인 것은 아닙니다. 즉, 같은 값을 두 번 얻는다는 보장은 없습니다.

당연히 측정에서 원소 xA1x\in A_1을 얻을 확률을 크게 하는 것 외에도, GG 연산의 tt번 적용에는 함수 ff에 대한 tt번의 쿼리가 필요하기 때문에 tt를 가능한 한 작게 선택하고 싶습니다. sin((2t+1)θ)\sin( (2t + 1) \theta)를 절댓값에서 11에 가깝게 만드는 것이 목표이므로, 이를 수행하는 자연스러운 방법은

(2t+1)θπ2.(2t + 1) \theta \approx \frac{\pi}{2}.

가 되도록 tt를 선택하는 것입니다.

tt에 대해 풀면 다음을 얻습니다.

tπ4θ12.t \approx \frac{\pi}{4\theta} - \frac{1}{2}.

물론 tt는 정수여야 하므로, 반드시 이 값에 정확히 도달할 수 있는 것은 아닙니다. 하지만 우리가 할 수 있는 것은 이 값에 가장 가까운 정수를 취하는 것이고, 그것은

t=π4θ.t = \Bigl\lfloor \frac{\pi}{4\theta} \Bigr\rfloor.

입니다.

이것이 Grover 알고리즘에 권장되는 반복 횟수입니다. 분석을 진행하면서, 이 정수가 목표값에 얼마나 가까운지가 자연스럽게 알고리즘의 성능에 영향을 미친다는 것을 보게 될 것입니다.

(참고로, 목표값 π/(4θ)1/2\pi/(4\theta) - 1/2가 정확히 두 정수 사이의 중간에 있는 경우, 이 tt의 표현은 반올림하여 얻는 것입니다. 대신 내림할 수도 있는데, 이는 한 번의 쿼리가 적다는 것을 의미하기 때문에 의미가 있습니다. 하지만 이것은 부차적이며 레슨에 있어 중요하지 않습니다.)

각도 θ\theta의 값이 다음 공식에 의해 주어진다는 것을 상기하면,

θ=sin1(A1N),\theta = \sin^{-1}\biggl(\sqrt{\frac{\vert A_1\vert}{N}}\biggr),

권장되는 반복 횟수 ttA1A_1의 문자열 수에 의존한다는 것을 알 수 있습니다. 이는 해의 개수를 모르는 경우 어려움을 제시하는데, 이는 나중에 논의하겠습니다.

먼저 f(x)=1f(x)=1인 문자열 xx가 단 하나 있는 상황에 집중해 봅시다. 이를 달리 말하면 Unique search 문제의 인스턴스를 고려하고 있다는 것입니다. 이 경우 다음을 얻습니다.

θ=sin1(1N),\theta = \sin^{-1}\biggl( \sqrt{\frac{1}{N}} \biggr),

이는 NN이 커질 때 편리하게 다음과 같이 근사될 수 있습니다.

θ=sin1(1N)1N\theta = \sin^{-1}\biggl( \sqrt{\frac{1}{N}} \biggr) \approx \sqrt{\frac{1}{N}}

θ=1/N\theta = 1/\sqrt{N}을 식

t=π4θt = \Bigl\lfloor \frac{\pi}{4\theta} \Bigr\rfloor

에 대입하면 다음을 얻습니다.

t=π4N.t = \Bigl\lfloor \frac{\pi}{4}\sqrt{N} \Bigr\rfloor.

tt가 연산 GG가 수행되는 횟수일 뿐만 아니라 알고리즘이 필요로 하는 함수 ff에 대한 쿼리 횟수이기도 함을 상기하면, O(N)O(\sqrt{N})번의 쿼리를 필요로 하는 알고리즘을 얻는 과정에 있음을 알 수 있습니다.

이제 권장된 tt의 선택이 얼마나 잘 작동하는지 조사해 봅시다. 최종 측정이 유일한 해를 산출할 확률은 명시적으로 다음과 같이 표현될 수 있습니다.

p(N,1)=sin2((2t+1)θ).p(N,1) = \sin^2 \bigl( (2t + 1) \theta \bigr).

첫 번째 인수 NN은 탐색하는 항목의 수를 나타내고, 이 경우 11인 두 번째 인수는 해의 수를 나타냅니다. 잠시 후 여러 해가 있는 경우에 대해 동일한 표기법을 더 일반적으로 사용할 것입니다.

N=2nN = 2^n 값이 증가함에 따른 성공 확률의 표가 다음과 같습니다.

Np(N,1)20.500000000041.000000000080.9453125000160.9613189697320.9991823155640.99658568081280.99561986572560.99994704215120.999448026210240.999461244720480.999996847840960.999945346181920.9999157752163840.9999997811327680.9999868295655360.9999882596\begin{array}{ll} N & p(N,1)\\ \hline 2 & 0.5000000000\\ 4 & 1.0000000000\\ 8 & 0.9453125000\\ 16 & 0.9613189697\\ 32 & 0.9991823155\\ 64 & 0.9965856808\\ 128 & 0.9956198657\\ 256 & 0.9999470421\\ 512 & 0.9994480262\\ 1024 & 0.9994612447\\ 2048 & 0.9999968478\\ 4096 & 0.9999453461\\ 8192 & 0.9999157752\\ 16384 & 0.9999997811\\ 32768 & 0.9999868295\\ 65536 & 0.9999882596 \end{array}

이 확률들이 엄격히 증가하지 않는다는 점을 주목하세요. 특히, N=4N=4일 때 흥미로운 이상 현상이 있는데, 확실하게 해를 얻습니다. 그러나 일반적으로 다음이 증명될 수 있습니다.

p(N,1)11Np(N,1) \geq 1 - \frac{1}{N}

모든 NN에 대해서 말이며, 따라서 위의 값들이 시사하는 것처럼 NN이 커짐에 따라 극한에서 성공 확률은 11로 수렴합니다. 이는 좋습니다!

그러나 p(N,1)1/2p(N,1) \geq 1/2와 같은 약한 경계조차 Grover 알고리즘의 유용성을 입증한다는 점에 주목하세요. 절차를 실행하여 얻은 어떤 측정 결과 xx에 대해서도, 우리는 항상 ff에 대한 단일 쿼리를 사용하여 f(x)=1f(x) = 1인지 확인할 수 있습니다. 그리고 절차를 한 번 실행하여 f(x)=1f(x) = 1인 유일한 문자열 xx를 얻는 데 실패할 확률이 최대 1/21/2라면, 절차를 독립적으로 mm번 실행한 후 이 유일한 문자열 xx를 얻는 데 실패할 확률은 최대 2m2^{-m}가 될 것입니다. 즉, ff에 대한 O(mN)O(m \sqrt{N})번의 쿼리를 사용하여, 최소 12m1 - 2^{-m}의 확률로 유일한 해 xx를 얻을 것입니다. 더 나은 경계 p(N,1)11/Np(N,1) \geq 1 - 1/N을 사용하면, 이 방법을 통해 xA1x\in A_1을 찾을 확률이 실제로 최소 1Nm1 - N^{-m}이라는 것이 드러납니다.

여러 해가 있는 경우

A1A_1의 원소 수가 달라짐에 따라 각도 θ\theta도 달라지며, 이는 알고리즘의 성공 확률에 상당한 영향을 미칠 수 있습니다. 간결성을 위해 해의 개수를 나타내기 위해 s=A1s = \vert A_1 \vert이라고 쓰고, 이전과 같이 s1s\geq 1이라고 가정하겠습니다.

동기 부여 예로, 위에서 고려한 단일 해 대신 s=4s = 4개의 해가 있다고 상상해 봅시다. 이는 다음을 의미합니다.

θ=sin1(4N),\theta = \sin^{-1}\biggl( \sqrt{\frac{4}{N}} \biggr),

이는 NN이 클 때 A1=1\vert A_1 \vert = 1인 경우에 가졌던 각도의 대략 두 배입니다. 더 나은 정보가 없어서 유일한 해 설정에서와 동일한 tt 값을 선택했다고 가정합시다.

t=π4sin1(1/N).t = \Biggl\lfloor \frac{\pi}{4\sin^{-1}\bigl(1/\sqrt{N}\bigr)}\Biggr\rfloor.

다음 확률 표가 보여주듯이 그 영향은 참담할 것입니다.

NSuccess probability41.000000000080.5000000000160.2500000000320.0122070313640.02038076891280.01445307582560.00007050585120.001931074110240.002300908320480.000007750640960.000230150281920.0003439882163840.0000007053327680.0000533810655360.0000472907\begin{array}{ll} N & \text{Success probability}\\ \hline 4 & 1.0000000000\\ 8 & 0.5000000000\\ 16 & 0.2500000000\\ 32 & 0.0122070313\\ 64 & 0.0203807689\\ 128 & 0.0144530758\\ 256 & 0.0000705058\\ 512 & 0.0019310741\\ 1024 & 0.0023009083\\ 2048 & 0.0000077506\\ 4096 & 0.0002301502\\ 8192 & 0.0003439882\\ 16384 & 0.0000007053\\ 32768 & 0.0000533810\\ 65536 & 0.0000472907 \end{array}

이번에는 NN이 무한대로 감에 따라 성공 확률이 00으로 수렴합니다. 이는 해가 유일했을 때보다 사실상 두 배 빠르게 회전하고 있기 때문에, 목표 A1\vert A_1\rangle을 지나쳐 A0-\vert A_0\rangle 근처에 도달하게 되는 것입니다.

그러나 대신 권장되는 tt의 선택

t=π4θt = \Bigl\lfloor \frac{\pi}{4\theta}\Bigr\rfloor

θ=sin1(sN),\theta = \sin^{-1}\biggl( \sqrt{\frac{s}{N}} \biggr),

에 대해 사용하면 성능이 더 좋아질 것입니다. 더 정확하게 말하자면, 이 tt의 선택을 사용하면 높은 확률로 성공하게 됩니다.

Np(N,4)41.000000000080.5000000000161.0000000000320.9453125000640.96131896971280.99918231552560.99658568085120.995619865710240.999947042120480.999448026240960.999461244781920.9999968478163840.9999453461327680.9999157752655360.9999997811\begin{array}{ll} N & p(N,4)\\ \hline 4 & 1.0000000000\\ 8 & 0.5000000000\\ 16 & 1.0000000000\\ 32 & 0.9453125000\\ 64 & 0.9613189697\\ 128 & 0.9991823155\\ 256 & 0.9965856808\\ 512 & 0.9956198657\\ 1024 & 0.9999470421\\ 2048 & 0.9994480262\\ 4096 & 0.9994612447\\ 8192 & 0.9999968478\\ 16384 & 0.9999453461\\ 32768 & 0.9999157752\\ 65536 & 0.9999997811 \end{array}

앞서 주장한 바를 일반화하면, 다음이 증명될 수 있습니다.

p(N,s)1sN,p(N,s) \geq 1 - \frac{s}{N},

여기서 앞서 제시한 표기법을 사용하고 있습니다. p(N,s)p(N,s)NN개의 가능성 중 총 ss개의 해가 있을 때 tt번 반복 실행된 Grover 알고리즘이 해를 드러낼 확률을 나타냅니다.

성공 확률에 대한 이 하한 1s/N1 - s/N은 해가 더 많을수록 더 나쁜 하한을 의미한다는 점에서 약간 특이합니다. 하지만 ssNN보다 상당히 작다는 가정하에, 그럼에도 불구하고 성공 확률이 상당히 높다고 결론 내릴 수 있습니다. 이전과 마찬가지로, p(N,s)p(N,s)가 상당히 크다는 사실만으로도 알고리즘의 유용성을 함의합니다.

또한 다음도 성립합니다.

p(N,s)sN.p(N,s) \geq \frac{s}{N}.

이 하한은 균등하게 무작위로 선택된 문자열 xΣnx\in\Sigma^n이 해일 확률을 설명합니다. 따라서 Grover 알고리즘은 항상 최소한 무작위 추측만큼은 잘 작동합니다. (사실, t=0t=0일 때 Grover 알고리즘은 무작위 추측 그 자체입니다.)

이제 반복 횟수(따라서 쿼리 횟수)

t=π4θ,t = \Bigl\lfloor \frac{\pi}{4\theta}\Bigr\rfloor,

θ=sin1(sN).\theta = \sin^{-1}\biggl(\sqrt{\frac{s}{N}}\biggr).

에 대해 살펴봅시다.

모든 α[0,1]\alpha \in [0,1]에 대해 sin1(α)α\sin^{-1}(\alpha)\geq \alpha가 성립하며, 따라서

θ=sin1(sN)sN.\theta = \sin^{-1}\left(\sqrt{\frac{s}{N}}\right) \geq \sqrt{\frac{s}{N}}.

이는 다음을 함의합니다.

tπ4θπ4Ns.t \leq \frac{\pi}{4\theta} \leq \frac{\pi}{4}\sqrt{\frac{N}{s}}.

이는 ss가 커짐에 따라 쿼리 수의 절약으로 이어집니다. 특히, 필요한 쿼리 수는

O(Ns).O\biggl(\sqrt{\frac{N}{s}}\biggr).

입니다.

해의 수가 알려지지 않은 경우

해의 수 s=A1s = \vert A_1 \vert알려지지 않은 경우, 다른 접근이 필요합니다. 이 상황에서는 tt의 선택에 정보를 제공할 ss에 대한 지식이 없기 때문입니다. 사실, 여러 접근 방식이 있습니다.

간단한 접근 방식 하나는

t{1,,πN/4}t \in \Bigl\{ 1,\ldots,\bigl\lfloor\pi\sqrt{N}/4\bigr\rfloor \Bigr\}

에서 균등 무작위로 선택하는 것입니다. 이러한 방식으로 tt를 선택하면 항상 40% 이상의 확률로 (해가 존재한다고 가정할 때) 해를 찾지만, 이는 자명하지 않으며 여기에는 포함되지 않는 분석이 필요합니다. 그러나 특히 기하학적 그림을 생각해 볼 때 의미가 있습니다. 이렇게 Q\mathsf{Q}의 상태를 무작위 횟수만큼 회전시키는 것은 A0\vert A_0\rangleA1\vert A_1\rangle이 생성하는 공간에서 무작위 단위 벡터를 선택하는 것과 크게 다르지 않으며, 그 경우 A1\vert A_1\rangle의 계수가 상당히 클 가능성이 있습니다. 이 절차를 반복하고 앞서 설명한 것과 같은 방식으로 결과를 확인함으로써, 해를 찾을 확률을 11에 매우 가깝게 만들 수 있습니다.

해의 개수 ss가 알려지지 않았을 때도 해가 존재하면 O(N/s)O(\sqrt{N/s})번의 쿼리로 해를 찾고, s=0s=0일 때 해가 없음을 결정하는 데 O(N)O(\sqrt{N})번의 쿼리가 필요한 개선된 방법이 있습니다.

기본 아이디어는 TT 값이 증가함에 따라 반복적으로 집합 {1,,T}\{1,\ldots,T\}에서 tt를 균등 무작위로 선택하는 것입니다. 특히, T=1T = 1로 시작하여 지수적으로 증가시킬 수 있으며, 해가 발견되는 즉시 프로세스를 종료하고 해가 없을 때 쿼리를 낭비하지 않도록 TT의 상한을 두는 것입니다. 이 프로세스는 해가 더 많을 때 쿼리가 더 적게 필요하다는 사실을 활용합니다. 그러나 TT의 증가율과 각 반복의 성공 확률 사이의 균형을 맞추려면 주의가 필요합니다. (예를 들어, T54TT \leftarrow \lceil \frac{5}{4}T\rceil을 취하는 것은 분석에서 드러나듯이 작동합니다. 그러나 TT를 두 배로 하는 것은 작동하지 않습니다. 이는 너무 빠른 증가인 것으로 드러납니다.)

자명한 경우

방금 진행한 분석 전체에서 해의 개수가 0이 아니라고 가정했습니다. 사실, 벡터

A0=1A0xA0xA1=1A1xA1x\begin{aligned} \vert A_0\rangle &= \frac{1}{\sqrt{\vert A_0\vert}} \sum_{x\in A_0} \vert x\rangle \\ \vert A_1\rangle &= \frac{1}{\sqrt{\vert A_1\vert}} \sum_{x\in A_1} \vert x\rangle \end{aligned}

를 언급함으로써 A0A_0A1A_1이 모두 비어 있지 않다고 암묵적으로 가정했습니다. 여기서는 이 집합 중 하나가 비어 있을 때 어떤 일이 일어나는지 간단히 고려할 것입니다.

분석을 수고롭게 하기 전에 명백한 것을 관찰합시다. 모든 문자열 xΣnx\in\Sigma^n이 해라면, 측정할 때 해를 보게 되고, 해가 없을 때는 보지 않을 것입니다. 어떤 의미에서는 이것보다 더 깊이 들어갈 필요가 없습니다.

그러나 이러한 자명한 경우에 대한 수학을 빠르게 확인할 수 있습니다. A0A_0A1A_1 중 하나가 비어 있는 상황은 ff가 상수일 때 일어납니다. 모든 xΣnx\in\Sigma^n에 대해 f(x)=0f(x) = 0일 때 A1A_1이 비어 있고, 모든 xΣnx\in\Sigma^n에 대해 f(x)=1f(x) = 1일 때 A0A_0가 비어 있습니다. 이는 다음을 의미합니다.

Zfu=±u,Z_f \vert u\rangle = \pm \vert u\rangle,

따라서

Gu=(2uuI)Zfu=±(2uuI)u=±u.\begin{aligned} G \vert u \rangle & = \bigl( 2 \vert u\rangle \langle u \vert - \mathbb{I}\bigr) Z_f\vert u\rangle \\ & = \pm \bigl( 2 \vert u\rangle \langle u \vert - \mathbb{I}\bigr) \vert u\rangle \\ & = \pm \vert u\rangle. \end{aligned}

따라서 이러한 경우에 수행하는 반복 횟수 tt에 관계없이, 측정은 항상 균등 무작위 문자열 xΣnx\in\Sigma^n을 드러낼 것입니다.