עכשיו נבצע ניתוח של אלגוריתם גרובר כדי להבין כיצד הוא עובד.
נתחיל ממה שאפשר לתאר כניתוח סמלי, שבו נחשב כיצד פעולת גרובר G פועלת על מצבים מסוימים, ואז נקשור ניתוח סמלי זה לתמונה גאומטרי ת שעוזרת להמחיש כיצד האלגוריתם עובד.
הקבוצה A1 מכילה את כל הפתרונות לבעיית החיפוש שלנו, ואילו A0 מכילה את המחרוזות שאינן פתרונות (שנוכל לכנות לא-פתרונות כשנוח לנו).
שתי הקבוצות הללו מקיימות A0∩A1=∅ ו-A0∪A1=Σn, כלומר זוהי חלוקה לשניים של Σn.
לאחר מכן נגדיר שני וקטורי יחידה המייצגים סופרפוזיציות אחידות על קבוצות הפתרונות והלא-פתרונות.
מבחינה פורמלית, כל אחד מהוקטורים הללו מוגדר רק כשהקבוצה המתאימה אינה ריקה, אך מכאן ואילך נתמקד במקרה שבו A0 וגם A1 אינן ריקות.
המקרים שבהם A0=∅ או A1=∅ קלים לטיפול בנפרד, ונעשה זאת בהמשך.
כהערת אגב, הסימון בשימוש כאן הוא מקובל: בכל פעם שיש לנו קבוצה סופית ולא ריקה S, אפשר לכתוב ∣S⟩ כדי לסמן את וקטור המצב הקוונטי האחיד על איברי S.
נגדיר גם את ∣u⟩ כמצב קוונטי אחיד על כל המחרוזות בנות n הסיביות:
∣u⟩=N1x∈Σn∑∣x⟩.
שימו לב ש-
∣u⟩=N∣A0∣∣A0⟩+N∣A1∣∣A1⟩.
כמו כן ∣u⟩=H⊗n∣0n⟩, ולכן ∣u⟩ מייצג את המצב של הרגיסטר Q לאחר האתחול בשלב 1 של אלגוריתם גרובר.
מכך נובע שממש לפני האיטרציות של G בשלב 2, המצב של Q נמצא במרחב הוקטורי הדו-ממדי הנפרש על ידי ∣A0⟩ ו-∣A1⟩, ויתר על כן מקדמי הוקטורים הללו הם מספרים ממשיים.
כפי שנראה, למצב של Q תמיד יהיו תכונות אלו — כלומר המצב הוא צירוף לינארי ממשי של ∣A0⟩ ו-∣A1⟩ — לאחר כל מספר של איטרציות של הפעולה G בשלב 2.
נדמיין לרגע שהחלפנו את הפונקציה f בהרכבה של f עם פונקציית ה-NOT — כלומר, הפונקציה שמתקבלת על ידי היפוך סיבית הפלט של f.
נקרא לפונקציה החדשה הזאת g, ואפשר לבטא אותה בסמלים בכמה דרכים חלופיות.
g(x)=¬f(x)=1⊕f(x)=1−f(x)={10f(x)=0f(x)=1
שימו לב ש-
(−1)g(x)=(−1)1⊕f(x)=−(−1)f(x)
לכל מחרוזת x∈Σn, ולכן
Zg=−Zf.
משמעות הדבר היא שאם היינו מחליפים את הפונקציה f בפונקציה g, אלגוריתם גרובר לא היה פועל באופן שונה — כי המצבים שמתקבלים מהאלגוריתם בשני המקרים שקולים בהכרח עד לשלב גלובלי.
זה לא בעיה!
באופן אינטואיטיבי, האלגוריתם לא מתחשב באילו מחרוזות הן פתרונות ואילו הן לא-פתרונות — הוא רק צריך להיות מסוגל להבחין בין פתרונות ולא-פתרונות כדי לפעול נכון.