קבענו שוקטור המצב של הרגיסטר Q באלגוריתם גרובר נשאר בתת-המרחב הדו-ממדי הנפרש על ידי ∣A0⟩ ו-∣A1⟩ לאחר שביצענו את שלב האתחול.
המטרה היא למצוא איבר x∈A1, ומטרה זו תושג אם נוכל לקבל את המצב ∣A1⟩ — שכן אם נמדוד מצב זה, מובטח לנו שנקבל תוצאת מדידה x∈A1.
מאחר שהמצב של Q לאחר t איטרציות בשלב 2 הוא
Gt∣u⟩=cos((2t+1)θ)∣A0⟩+sin((2t+1)θ)∣A1⟩,
עלינו לבחור t כך ש-
⟨A1∣Gt∣u⟩=sin((2t+1)θ)
יהיה קרוב ככל האפשר ל-1 בערך מוחלט, כדי למקסם את ההסתברות לקבל x∈A1 מהמדידה.
לכל זווית θ∈(0,2π), הערך sin((2t+1)θ)מתנדנד כשגדל t, אם כי הוא לא בהכרח מחזורי — אין ערובה שנקבל אי פעם את אותו ערך פעמיים.
כמובן, בנוסף לכך שנרצה שהסתברות לקבל איבר x∈A1 מהמדידה תהיה גבוהה, נרצה גם לבחור t קטן ככל האפשר, כי t פעולות של G דורשות t שאילתות לפונקציה f.
מאחר שאנחנו שואפים ש-sin((2t+1)θ) יהיה קרוב ל-1 בערך מוחלט, דרך טבעית לעשות זאת היא לבחור t כך ש-
(2t+1)θ≈2π.
פתרון עבור t נותן
t≈4θπ−21.
כמובן, t חייב להיות מספר שלם, ולכן לא בהכרח נוכל לפגוע בערך זה במדויק — אבל מה שאנחנו יכולים לעשות הוא לקחת את המספר השלם הקרוב ביותר לערך זה, שהוא
t=⌊4θπ⌋.
זהו מספר האיטרציות המומלץ לאלגוריתם גרובר.
כשנמשיך בניתוח, נראה שקרבת המספר השלם הזה לערך היעד משפיעה באופן טבעי על ביצועי האלגוריתם.
(אגב, אם ערך היעד π/(4θ)−1/2 מקרה ונמצא בדיוק באמצע בין שני מספרים שלמים, הביטוי של t שקיבלנו הוא עיגול כלפי מעלה. לחלופין, אפשר לעגל כלפי מטה, וזה הגיוני כי משמעותו שאילתה אחת פחות — אבל זו נקודה משנית שאינה חשובה לצורך השיעור.)
נזכיר שהערך של הזווית θ נתון על פי הנוסחה
θ=sin−1(N∣A1∣),
ולכן אנחנו רואים שמספר האיטרציות המומלץ t תלוי במספר המחרוזות ב-A1.
זה מציב אתגר אם אנחנו לא יודעים כמה פתרונות יש לנו, כפי שנדון בהמשך.
ראשית, נתמקד במצב שבו יש מחרוזת אחת בלבד x כך ש-f(x)=1.
דרך נוספת לומר זאת היא שאנחנו בוחנים מופע של בעיית חיפוש ייחודי.
במקרה זה יש לנו
θ=sin−1(N1),
שניתן לקרב בנוחות כ-
θ=sin−1(N1)≈N1
כאשר N גדול.
אם נציב θ=1/N בביטוי
t=⌊4θπ⌋
נקבל
t=⌊4πN⌋.
בהתחשב בכך ש-t הוא לא רק מספר הפעמים שהפעולה G מבוצעת, אלא גם מספר השאילתות לפונקציה f הנדרשות על ידי האלגוריתם, אנחנו רואים שאנחנו בדרך לאלגוריתם הדורש O(N) שאילתות.
כעת נבחן עד כמה ברירת t המומלצת עובדת טוב.
ניתן לבטא במפורש את ההסתברות שהמדידה הסופית תניב את הפתרון היחיד:
p(N,1)=sin2((2t+1)θ).
הארגומנט הראשון, N, מתייחס למספר הפריטים שמחפשים בהם, והארגומנט השני, שהוא 1 במקרה זה, מתייחס למספר הפתרונות.
מעט מאוחר יותר נשתמש באותה סימון באופן כללי יותר, כאשר יש מספר פתרונות.
להלן טבלה של הסתברויות ההצלחה עבור ערכי N=2n הולכים וגדלים.
שימו לב שהסתברויות אלה אינן עולות בהכרח באופן מונוטוני.
בפרט, יש לנו אנומליה מעניינת כאשר N=4, שבה מקבלים פתרון בוודאות.
עם זאת, ניתן להוכיח באופן כללי ש-
p(N,1)≥1−N1
לכל N, ולכן הסתברות ההצלחה שואפת ל-1 בגבול כאשר N גדל, כפי שהערכים לעיל נראים מציעים.
זה טוב!
אך שימו לב, שגם חסם חלש כמו p(N,1)≥1/2 מבסס את השימושיות של אלגוריתם גרובר.
לכל תוצאת מדידה x שנקבל מהרצת הנוהל, תמיד נוכל לבדוק אם f(x)=1 באמצעות שאילתה אחת ל-f.
ואם נכשלנו בקבלת המחרוזת הייחודית x שעבורה f(x)=1 בהסתברות של לכל היותר 1/2 בהרצה אחת של הנוהל, אז לאחר m הרצות עצמאיות של הנוהל נכשלנו בקבלת המחרוזת הייחודית הזו x בהסתברות של לכל היותר 2−m.
כלומר, בשימוש ב-O(mN) שאילתות ל-f, נקבל את הפתרון הייחודי x בהסתברות של לפחות 1−2−m.
שימוש בחסם הטוב יותר p(N,1)≥1−1/N מגלה שההסתברות למצוא x∈A1 בשיטה זו היא למעשה לפחות 1−N−m.
ככל שמשתנה מספר האיברים ב-A1, כך משתנה גם הזווית θ, מה שעלול להשפיע משמעותית על הסתברות ההצלחה של האלגוריתם.
לצורך קיצור, נכתוב s=∣A1∣ לציון מספר הפתרונות, וכבעבר נניח ש-s≥1.
כדוגמה מניעה, נדמיין שיש לנו s=4 פתרונות במקום פתרון אחד, כפי שבחנו לעיל.
משמעות הדבר היא ש-
θ=sin−1(N4),
שהיא בערך כפולה מהזווית שהייתה לנו במקרה ∣A1∣=1 כאשר N גדול.
נניח שלא ידענו טוב יותר, ובחרנו את אותו ערך של t כמו בהגדרת הפתרון הייחודי:
t=⌊4sin−1(1/N)π⌋.
התוצאה תהיה הרסנית, כפי שמגלה טבלת ההסתברויות הבאה.
הפעם הסתברות ההצלחה שואפת ל-0 כשגדל N לאינסוף.
זה קורה מפני שאנחנו מסתובבים בקצב כפול לעומת מה שעשינו כשהיה פתרון ייחודי, ולכן אנחנו עוברים בעודף את היעד ∣A1⟩ ומגיעים קרוב ל-−∣A0⟩.
אולם, אם במקום זאת נשתמש בברירת t המומלצת, שהיא
t=⌊4θπ⌋
עבור
θ=sin−1(Ns),
אז הביצועים יהיו טובים יותר.
ליתר דיוק, שימוש בברירת t זו מוביל להצלחה בהסתברות גבוהה.
כאשר אנחנו משתמשים בסימון שהוצע קודם: p(N,s) מציין את ההסתברות שאלגוריתם גרובר המורץ למשך t איטרציות יגלה פתרון כאשר יש s פתרונות בסך הכל מתוך N אפשרויות.
חסם תחתון זה של 1−s/N על הסתברות ההצלחה מעט מוזר בכך שיותר פתרונות מרמז על חסם תחתון גרוע יותר — אבל בהנחה שגודל s קטן משמעותית מ-N, אנחנו בכל זאת מסיקים שהסתברות ההצלחה גבוהה סבירות.
כבעבר, העובדה הפשוטה ש-p(N,s) גבוה סבירות מרמזת על שימושיות האלגוריתם.
קורה גם שכן ש-
p(N,s)≥Ns.
חסם תחתון זה מתאר את ההסתברות שמחרוזת x∈Σn שנבחרה אחידה לאקראי היא פתרון — לכן אלגוריתם גרובר תמיד לפחות טוב כמו ניחוש אקראי.
(למעשה, כאשר t=0, אלגוריתם גרובר הוא ניחוש אקראי.)
כעת נסתכל על מספר האיטרציות (ומכאן מספר השאילתות)
t=⌊4θπ⌋,
עבור
θ=sin−1(Ns).
לכל α∈[0,1], מתקיים sin−1(α)≥α,
ולכן
θ=sin−1(Ns)≥Ns.
מכך נובע ש-
t≤4θπ≤4πsN.
זה מתורגם לחיסכון במספר השאילתות ככל שגדל s.
בפרט, מספר השאילתות הנדרשות הוא
אם מספר הפתרונות s=∣A1∣ הוא לא ידוע, נדרשת גישה אחרת, שכן במצב זה אין לנו ידע על s שיסייע בבחירת t.
למעשה, יש מספר גישות.
גישה פשוטה אחת היא לבחור
t∈{1,…,⌊πN/4⌋}
אחידה לאקראי.
בחירת t בדרך זו תמיד מוצאת פתרון (בהנחה שקיים אחד) בהסתברות גבוהה מ-40%, אם כי הדבר לא מובן מאליו ודורש ניתוח שלא ייכלל כאן.
זה הגיוני, עם זאת, במיוחד כשאנחנו חושבים על התמונה הגאומטרית:
סיבוב המצב של Q מספר אקראי של פעמים בצורה זו אינו שונה מבחירת וקטור יחידה אקראי במרחב הנפרש על ידי ∣A0⟩ ו-∣A1⟩, שעבורו קרוב לוודאי שמקדם ∣A1⟩ גדול סבירות.
על ידי חזרה על נוהל זה ובדיקת התוצאה באותו אופן שתואר לפני כן, ניתן להביא את ההסתברות למצוא פתרון קרובה מאוד ל-1.
קיימת שיטה מעודנת המוצאת פתרון כאשר קיים אחד תוך שימוש ב-O(N/s) שאילתות, אפילו כשמספר הפתרונות s אינו ידוע, ודורשת O(N) שאילתות לקבוע שאין פתרונות כאשר s=0.
הרעיון הבסיסי הוא לבחור t אחידה לאקראי מהקבוצה {1,…,T} באופן איטרטיבי, לערכי T הולכים וגדלים.
בפרט, אפשר להתחיל עם T=1 ולהגדיל אותו באופן אקספוננציאלי, תמיד מסיים את התהליך ברגע שמוצאים פתרון ומגביל את T כדי לא לבזבז שאילתות כאשר אין פתרון.
התהליך מנצל את העובדה שנדרשות פחות שאילתות כאשר קיימים יותר פתרונות.
נדרשת הקפדה מסוימת, לעומת זאת, לאזן את קצב הגידול של T עם הסתברות ההצלחה בכל איטרציה.
(לקיחת T←⌈45T⌉ עובדת, למשל, כפי שהניתוח מגלה.
הכפלת T, לעומת זאת, לא עובדת — זה מתגלה כהגדלה מהירה מדי.)
הנחנו באופן מרומז ש-A0 ו-A1 שניהם לא ריקים.
כאן נשקול בקצרה מה קורה כאשר אחת מהקבוצות הללו ריקה.
לפני שנטרח בניתוח, בואו נשים לב לדבר המובן מאליו:
אם כל מחרוזת x∈Σn היא פתרון, נראה פתרון כשנמדוד; וכשאין כלל פתרונות, לא נראה אחד.
במובן מסוים, אין צורך להעמיק מעבר לכך.
עם זאת, נוכל לאמת במהירות את המתמטיקה עבור מקרים טריוויאליים אלה.
המצב שבו אחת מ-A0 ו-A1 ריקה מתרחש כאשר f היא קבועה;
A1 ריקה כאשר f(x)=0 לכל x∈Σn, ו-A0 ריקה כאשר f(x)=1 לכל x∈Σn.
משמעות הדבר היא ש-
Zf∣u⟩=±∣u⟩,
ולכן
G∣u⟩=(2∣u⟩⟨u∣−I)Zf∣u⟩=±(2∣u⟩⟨u∣−I)∣u⟩=±∣u⟩.
לכן, ללא קשר למספר האיטרציות t שנבצע במקרים אלה, המדידות תמיד יגלו מחרוזת אקראית אחידה x∈Σn.