דלג לתוכן הראשי

בחירת מספר האיטרציות

קבענו שוקטור המצב של הרגיסטר Q\mathsf{Q} באלגוריתם גרובר נשאר בתת-המרחב הדו-ממדי הנפרש על ידי A0\vert A_0\rangle ו-A1\vert A_1\rangle לאחר שביצענו את שלב האתחול.

המטרה היא למצוא איבר xA1,x\in A_1, ומטרה זו תושג אם נוכל לקבל את המצב A1\vert A_1\rangle — שכן אם נמדוד מצב זה, מובטח לנו שנקבל תוצאת מדידה xA1.x\in A_1. מאחר שהמצב של Q\mathsf{Q} לאחר tt איטרציות בשלב 2 הוא

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,

עלינו לבחור tt כך ש-

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

יהיה קרוב ככל האפשר ל-11 בערך מוחלט, כדי למקסם את ההסתברות לקבל xA1x\in A_1 מהמדידה. לכל זווית θ(0,2π),\theta \in (0,2\pi), הערך sin((2t+1)θ)\sin((2t + 1)\theta) מתנדנד כשגדל tt, אם כי הוא לא בהכרח מחזורי — אין ערובה שנקבל אי פעם את אותו ערך פעמיים.

כמובן, בנוסף לכך שנרצה שהסתברות לקבל איבר xA1x\in A_1 מהמדידה תהיה גבוהה, נרצה גם לבחור tt קטן ככל האפשר, כי tt פעולות של GG דורשות tt שאילתות לפונקציה f.f. מאחר שאנחנו שואפים ש-sin((2t+1)θ)\sin( (2t + 1) \theta) יהיה קרוב ל-11 בערך מוחלט, דרך טבעית לעשות זאת היא לבחור tt כך ש-

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

פתרון עבור 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.

זהו מספר האיטרציות המומלץ לאלגוריתם גרובר. כשנמשיך בניתוח, נראה שקרבת המספר השלם הזה לערך היעד משפיעה באופן טבעי על ביצועי האלגוריתם.

(אגב, אם ערך היעד π/(4θ)1/2\pi/(4\theta) - 1/2 מקרה ונמצא בדיוק באמצע בין שני מספרים שלמים, הביטוי של tt שקיבלנו הוא עיגול כלפי מעלה. לחלופין, אפשר לעגל כלפי מטה, וזה הגיוני כי משמעותו שאילתה אחת פחות — אבל זו נקודה משנית שאינה חשובה לצורך השיעור.)

נזכיר שהערך של הזווית θ\theta נתון על פי הנוסחה

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

ולכן אנו רואים שמספר האיטרציות המומלץ tt תלוי במספר המחרוזות ב-A1.A_1. זה מציב אתגר אם אנחנו לא יודעים כמה פתרונות יש לנו, כפי שנדון בהמשך.

ראשית, נתמקד במצב שבו יש מחרוזת אחת בלבד xx כך ש-f(x)=1.f(x)=1. דרך נוספת לומר זאת היא שאנחנו בוחנים מופע של בעיית חיפוש ייחודי. במקרה זה יש לנו

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

שניתן לקרב בנוחות כ-

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

כאשר NN גדול. אם נציב θ=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).

הארגומנט הראשון, N,N, מתייחס למספר הפריטים שמחפשים בהם, והארגומנט השני, שהוא 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=4,N=4, שבה מקבלים פתרון בוודאות. עם זאת, ניתן להוכיח באופן כללי ש-

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

לכל N,N, ולכן הסתברות ההצלחה שואפת ל-11 בגבול כאשר NN גדל, כפי שהערכים לעיל נראים מציעים. זה טוב!

אך שימו לב, שגם חסם חלש כמו p(N,1)1/2p(N,1) \geq 1/2 מבסס את השימושיות של אלגוריתם גרובר. לכל תוצאת מדידה xx שנקבל מהרצת הנוהל, תמיד נוכל לבדוק אם f(x)=1f(x) = 1 באמצעות שאילתה אחת ל-f.f. ואם נכשלנו בקבלת המחרוזת הייחודית xx שעבורה f(x)=1f(x) = 1 בהסתברות של לכל היותר 1/21/2 בהרצה אחת של הנוהל, אז לאחר mm הרצות עצמאיות של הנוהל נכשלנו בקבלת המחרוזת הייחודית הזו xx בהסתברות של לכל היותר 2m.2^{-m}. כלומר, בשימוש ב-O(mN)O(m \sqrt{N}) שאילתות ל-ff, נקבל את הפתרון הייחודי xx בהסתברות של לפחות 12m.1 - 2^{-m}. שימוש בחסם הטוב יותר p(N,1)11/Np(N,1) \geq 1 - 1/N מגלה שההסתברות למצוא xA1x\in A_1 בשיטה זו היא למעשה לפחות 1Nm.1 - N^{-m}.

פתרונות מרובים

ככל שמשתנה מספר האיברים ב-A1A_1, כך משתנה גם הזווית θ,\theta, מה שעלול להשפיע משמעותית על הסתברות ההצלחה של האלגוריתם. לצורך קיצור, נכתוב s=A1s = \vert A_1 \vert לציון מספר הפתרונות, וכבעבר נניח ש-s1.s\geq 1.

כדוגמה מניעה, נדמיין שיש לנו s=4s = 4 פתרונות במקום פתרון אחד, כפי שבחנו לעיל. משמעות הדבר היא ש-

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

שהיא בערך כפולה מהזווית שהייתה לנו במקרה A1=1\vert A_1 \vert = 1 כאשר NN גדול. נניח שלא ידענו טוב יותר, ובחרנו את אותו ערך של 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}

הפעם הסתברות ההצלחה שואפת ל-00 כשגדל NN לאינסוף. זה קורה מפני שאנחנו מסתובבים בקצב כפול לעומת מה שעשינו כשהיה פתרון ייחודי, ולכן אנו עוברים בעודף את היעד 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) מציין את ההסתברות שאלגוריתם גרובר המורץ למשך tt איטרציות יגלה פתרון כאשר יש ss פתרונות בסך הכל מתוך NN אפשרויות.

חסם תחתון זה של 1s/N1 - s/N על הסתברות ההצלחה מעט מוזר בכך שיותר פתרונות מרמז על חסם תחתון גרוע יותר — אבל בהנחה שגודל ss קטן משמעותית מ-NN, אנחנו בכל זאת מסיקים שהסתברות ההצלחה גבוהה סבירות. כבעבר, העובדה הפשוטה ש-p(N,s)p(N,s) גבוה סבירות מרמזת על שימושיות האלגוריתם.

קורה גם שכן ש-

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

חסם תחתון זה מתאר את ההסתברות שמחרוזת xΣnx\in\Sigma^n שנבחרה אחידה לאקראי היא פתרון — לכן אלגוריתם גרובר תמיד לפחות טוב כמו ניחוש אקראי. (למעשה, כאשר t=0,t=0, אלגוריתם גרובר הוא ניחוש אקראי.)

כעת נסתכל על מספר האיטרציות (ומכאן מספר השאילתות)

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 הוא לא ידוע, נדרשת גישה אחרת, שכן במצב זה אין לנו ידע על ss שיסייע בבחירת t.t. למעשה, יש מספר גישות.

גישה פשוטה אחת היא לבחור

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\rangle ו-A1,\vert A_1\rangle, שעבורו קרוב לוודאי שמקדם A1\vert A_1\rangle גדול סבירות. על ידי חזרה על נוהל זה ובדיקת התוצאה באותו אופן שתואר לפני כן, ניתן להביא את ההסתברות למצוא פתרון קרובה מאוד ל-1.1.

קיימת שיטה מעודנת המוצאת פתרון כאשר קיים אחד תוך שימוש ב-O(N/s)O(\sqrt{N/s}) שאילתות, אפילו כשמספר הפתרונות ss אינו ידוע, ודורשת O(N)O(\sqrt{N}) שאילתות לקבוע שאין פתרונות כאשר s=0.s=0.

הרעיון הבסיסי הוא לבחור tt אחידה לאקראי מהקבוצה {1,,T}\{1,\ldots,T\} באופן איטרטיבי, לערכי TT הולכים וגדלים. בפרט, אפשר להתחיל עם T=1T = 1 ולהגדיל אותו באופן אקספוננציאלי, תמיד מסיים את התהליך ברגע שמוצאים פתרון ומגביל את TT כדי לא לבזבז שאילתות כאשר אין פתרון. התהליך מנצל את העובדה שנדרשות פחות שאילתות כאשר קיימים יותר פתרונות. נדרשת הקפדה מסוימת, לעומת זאת, לאזן את קצב הגידול של TT עם הסתברות ההצלחה בכל איטרציה. (לקיחת T54TT \leftarrow \lceil \frac{5}{4}T\rceil עובדת, למשל, כפי שהניתוח מגלה. הכפלת T,T, לעומת זאת, לא עובדת — זה מתגלה כהגדלה מהירה מדי.)

המקרים הטריוויאליים

לאורך הניתוח שעברנו זה עתה, הנחנו שמספר הפתרונות אינו אפס. אכן, על ידי הפנייה לוקטורים

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_0 ו-A1A_1 שניהם לא ריקים. כאן נשקול בקצרה מה קורה כאשר אחת מהקבוצות הללו ריקה.

לפני שנטרח בניתוח, בואו נשים לב לדבר המובן מאליו: אם כל מחרוזת xΣnx\in\Sigma^n היא פתרון, נראה פתרון כשנמדוד; וכשאין כלל פתרונות, לא נראה אחד. במובן מסוים, אין צורך להעמיק מעבר לכך.

עם זאת, נוכל לאמת במהירות את המתמטיקה עבור מקרים טריוויאליים אלה. המצב שבו אחת מ-A0A_0 ו-A1A_1 ריקה מתרחש כאשר ff היא קבועה; A1A_1 ריקה כאשר f(x)=0f(x) = 0 לכל xΣn,x\in\Sigma^n, ו-A0A_0 ריקה כאשר f(x)=1f(x) = 1 לכל xΣn.x\in\Sigma^n. משמעות הדבר היא ש-

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Σn.x\in\Sigma^n.