חיפוש לא מובנה
סיכום
נתחיל בתיאור הבעיה שאלגוריתם גרובר פותר. כמקובל, נסמן לאלפבית הבינארי לאורך הדיון הזה.
נניח ש-
היא פונקציה ממחרוזות בינאריות באורך לביטים. נניח שאנחנו יכולים לחשב את הפונקציה הזאת ביעילות, אך מלבד זאת היא שרירותית ואי אפשר להסתמך על כך שיש לה מבנה מיוחד או מימוש ספציפי שמתאים לצרכינו.
מה שאלגוריתם גרובר עושה הוא לחפש מחרוזת שעבורה נקרא למחרוזות כאלה פתרונות לבעיית החיפוש. אם יש מספר פתרונות, אז כל אחד מהם נחשב פלט תקין, ואם אין פתרונות כלל, אז תשובה נכונה מחייבת שנדווח שאין פתרונות.
משימה זו מתוארת כבעיית חיפוש לא מובנה מפני שאי אפשר להסתמך על כך ש- בעלת מבנה מסוים שיקל עלינו. אנחנו לא מחפשים ברשימה ממוינת, ולא בתוך מבנה נתונים שתוכנן במיוחד לצורך חיפוש — אנחנו בעצם מחפשים מחט בערמת שחת.
באופן אינטואיטיבי, אפשר לדמות שיש לנו מעגל בוליאני מסובך מאוד שמחשב את ואנחנו יכולים להריץ אותו בקלות על מחרוזת קלט שנבחרה. אך מפני שהמעגל כה מסובך, אין לנו סיכוי להבין אותו על ידי בחינתו (מעבר ליכולת לחשב אותו על מחרוזות קלט שנבחרו).
דרך אחת לבצע משימת החיפוש הזאת קלאסית היא פשוט לעבור על כל המחרוזות ולהעריך את על כל אחת מהן כדי לבדוק אם היא פתרון. מכאן ואילך נכתוב
לשם הנוחות. יש מחרוזות ב- כך שמעבר על כולן דורש הערכות של בהנחה שאנחנו מוגבלים להערכת על קלטים שנבחרו, זה הכי טוב שאפשר לעשות עם אלגוריתם דטרמיניסטי אם רוצים להבטיח הצלחה. עם אלגוריתם הסתברותי, אפשר לקוות לחסוך זמן על ידי בחירה אקראית של מחרוזות קלט ל- אך עדיין נדרוש הערכות של אם רוצים שהשיטה הזאת תצליח בהסתברות גבוהה.
אלגוריתם גרובר פותר את בעיית החיפוש הזאת בהסתברות גבוהה עם רק הערכות של לשם הבהרה, הערכות הפונקציה הללו חייבות להתרחש בסופרפוזיציה, בדומה לאלגוריתמי השאילתות שנדונו בשיעור אלגוריתמי שאילתות קוונטיים, כולל האלגוריתם של דויטש, אלגוריתם דויטש-ג'וזה ואלגוריתם סיימון. בשונה מאותם אלגוריתמים, אלגוריתם גרובר נוקט גישה איטרטיבית: הוא מעריך את על סופרפוזיציות של מחרוזות קלט ומשלב הערכות אלה עם פעולות אחרות שיוצרות דפוסי הפרעה, מה שמוביל לפתרון בהסתברות גבוהה (אם קיים) לאחר איטרציות.
הצהרת הבעיה הפורמלית
נפרמל את הבעיה שאלגוריתם גרובר פותר תוך שימוש במודל השאילתות של החישוב. כלומר, נניח שיש לנו גישה לפונקציה דרך שער שאילתה המוגדר בדרך הרגילה:
לכל ו- זהו הפעולה של על מצבי בסיס סטנדרטיים, והפעולה שלו באופן כללי נקבעת על ידי לינאריות.
כפי שנדון בשיעור יסודות האלגוריתמיקה הקוונטית, אם יש לנו מעגל בוליאני לחישוב אנחנו יכולים להמיר את תיאור המעגל הבוליאני למעגל קוונטי שמממש את (תוך שימוש במספר מסוים של Qubit-ים לעבודה שמתחילים ומסיימים את החישוב במצב ). לכן, למרות שאנחנו משתמשים במודל השאילתות לפרמול הבעיה שאלגוריתם גרובר פותר, הוא אינו מוגבל למודל זה; אנחנו יכולים להריץ את אלגוריתם גרובר על כל פונקציה שיש לנו עבורה מעגל בוליאני.
הנה הצהרה מדויקת של הבעיה, המכונה חיפוש מפני שאנחנו מחפשים פתרון, כלומר מחרוזת שגורמת ל- להעריך ל-
שימו לב שזאת אינה בעיית הבטחה — הפונקציה שרירותית. עם זאת, יהיה מועיל לשקול את גרסת ההבטחה הבאה של הבעיה, שבה מובטח לנו שיש בדיוק פתרון אחד. בעיה זו הופיעה כדוגמה לבעיית הבטחה בשיעור אלגוריתמי שאילתות קוונטיים.
שימו לב גם שבעיית ה-Or שהוזכרה באותו שיעור קשורה קשר הדוק ל-חיפוש. עבור אותה בעיה, המטרה היא פשוט לקבוע אם קיים פתרון, בניגוד לאיתור הפתרון בפועל.