תיאור האלגוריתם של גרובר
בחלק זה נתאר את האלגוריתם של גרובר. נתחיל בדיון על שערי שאילתת פאזה וכיצד לבנות אותם, ואחר כך נעבור לתיאור האלגוריתם עצמו. לבסוף, נדון בקצרה כיצד האלגוריתם מיושם באופן טבעי לבעיות חיפוש.
שערי שאילתת פאזה
האלגוריתם של גרובר עושה שימוש בפעולות המכונות שערי שאילתת פאזה. בניגוד לשער שאילתה רגיל המוגדר עבור פונקציה נתונה באופן הרגיל שתואר קודם לכן, שער שאילתת פאזה עבור הפונקציה מוגדר כך:
עבור כל מחרוזת
ניתן לממש את הפעולה באמצעות שער שאילתה יחיד כפי שמוצג בתרשים הבא:
מימוש זה מנצל את תופעת ה-phase kickback, ודורש Qubit סביבה אחד שמאותחל למצב . Qubit זה נשאר במצב לאחר סיום המימוש, וניתן לעשות בו שימוש חוזר (למשל, למימוש שערי נוספים) או פשוט להשליכו.
בנוסף לפעולה נשתמש גם בשער שאילתת פאזה עבור פונקציית ה-OR בת סיביות, המוגדרת כך עבור כל מחרוזת
באופן מפורש, שער שאילתת הפאזה עבור פונקציית ה-OR בת סיביות פועל כך:
כדי להיות מדויקים, כך פועל על מצבי הבסיס הסטנדרטיים; התנהגותו על מצבים כלליים נגזרת מביטוי זה על ידי לינאריות.
ניתן לממש את הפעולה כמעגל קוונטי על ידי התחלה ממעגל בוליאני עבור פונקציית ה-OR, בניית פעולת (כלומר, שער שאילתה סטנדרטי עבור פונקציית ה-OR בת סיביות) תוך שימוש בנוהל המתואר בשיעור יסודות האלגוריתמיקה הקוונטית, ולבסוף בניית פעולת באמצעות תופעת ה-phase kickback כמתואר לעיל. שימו לב שלפעולה אין תלות בפונקציה ולכן ניתן לממש אותה על ידי מעגל קוונטי ללא שערי שאילתה.
תיאור האלגוריתם
עכשיו שיש לנו את שתי הפעולות ו- נוכל לתאר את האלגוריתם של גרובר.
האלגוריתם מתייחס למספר שהוא מספר האיטרציות שהוא מבצע (ולכן גם מספר השאילתות לפונקציה שהוא דורש). מספר זה אינו מצוין על ידי האלגוריתם של גרובר כפי שאנו מתארים אותו, ונדון בהמשך השיעור כיצד ניתן לבחור אותו.
הפעולה שחוזרת בשלב 2 תיקרא פעולת גרובר לאורך שאר השיעור. הנה ייצוג מעגל קוונטי של פעולת גרובר כאשר
בתרשים זה, פעולת מצוירת גדולה יותר מ- כרמז ויזואלי בלתי פורמלי המרמז שסביר שזו הפעולה היקרה יותר. בפרט, כאשר אנו עובדים במודל השאילתות, דורשת שאילתה אחת בעוד לא דורשת שאילתות כלל. אם לעומת זאת יש לנו מעגל בוליאני עבור הפונקציה ואז ממירים אותו למעגל קוונטי עבור ניתן לצפות באופן סביר שהמעגל הקוונטי המתקבל יהיה גדול ומסובך יותר מזה של
הנה תרשים של מעגל קוונטי עבור האלגוריתם השלם כאשר ו- עבור ערכים גדולים יותר של ניתן פשוט להוסיף מופעים נוספים של פעולת גרובר מיד לפני המדידות.
יישום לחיפוש
ניתן ליישם את האלגוריתם של גרובר לבעיית החיפוש באופן הבא:
- בחר את המספר בשלב 2. (נושא זה נדון בהמשך השיעור.)
- הרץ את האלגוריתם של גרובר על הפונקציה תוך שימוש בכל בחירה שעשינו עבור כדי לקבל מח רוזת
- שאל את הפונקציה על המחרוזת כדי לבדוק אם היא פתרון תקין:
- אם אז מצאנו פתרון, ולכן נוכל לעצור ולפלוט את
- אחרת, אם נוכל לרוץ את הנוהל שוב, אפשר עם בחירה שונה עבור או שנוכל להחליט לוותר ולפלוט "אין פתרון."
לאחר שנבין כיצד האלגוריתם של גרובר עובד, נראה שבלקיחת נקבל פתרון לבעיית החיפוש שלנו (אם קיים כזה) בהסתברות גבוהה.