עכשיו נדון בהליך אמידת הפאזה, שהוא אלגוריתם קוונטי לפתרון בעיית אמידת הפאזה.
נתחיל עם חימום ברזולוציה נמוכה, שמסביר חלק מהאינטואיציה הבסיסית שמאחורי השיטה.
לאחר מכן נדבר על טרנספורם פורייה הקוונטי, שהיא פעולה קוונטית חשובה המשמשת בהליך אמידת הפאזה, וכן על מימושה כ-Circuit קוונטי.
ברגע שיהיה בידינו טרנספורם פורייה הקוונטי, נתאר את הליך אמידת הפאזה בכלליות מלאה וננתח את ביצועיו.
נתחיל עם כמה גרסאות פשוטות של הליך אמידת הפאזה שנותנות פתרונות ברזולוציה נמוכה לבעיית אמידת הפאזה.
זה עוזר להסביר את האינטואיציה שמאחורי ההליך הכללי שנראה מעט מאוחר יותר בשיעור.
גישה פשוטה לבעיית אמידת הפאזה, שמאפשרת לנו ללמוד משהו על הערך θ שאנחנו מחפשים, מבוססת על תופעת ה-phase kick-back.
כפי שנראה, זו בעצם גרסה של qubit יחיד של הליך אמידת הפאזה הכללי שיידון מאוחר יותר בשיעור.
כחלק מהקלט לבעיית אמידת הפאזה, יש לנו Circuit קוונטי לפעולה U.
אנחנו יכולים להשתמש בתיאור של Circuit זה כדי ליצור Circuit לפעולת controlled-U, שניתן לתאר אותה כפי שמציעה התמונה הזו (עם הפעולה U, הנתפסת כ-Gate קוונטי, משמאל ופעולת controlled-U מימין).
אנחנו יכולים ליצור Circuit קוונטי לפעולת controlled-U על ידי הוספת qubit שליטה ל-Circuit עבור U, ולאחר מכן להחליף כל Gate ב-Circuit עבור U בגרסה מבוקרת של אותו Gate — כך שה-Qubit השליטה החדש שלנו שולט בפועל בכל Gate יחיד ב-Circuit עבור U.
זה דורש שתהיה לנו גרסה מבוקרת של כל Gate ב-Circuit שלנו, אבל תמיד אפשר לבנות Circuits עבור פעולות מבוקרות אלה במקרה שהן לא נכללות בסט ה-Gate שלנו.
עכשיו שקלו את ה-Circuit הבא, שבו מצב הקלט ∣ψ⟩ של כל ה-Qubits חוץ מהעליון הוא וקטור עצמי של המצב הקוונטי של U.
ההסתברויות לתוצאות המדידה של Circuit זה תלויות בערך העצמי של U שמתאים לוקטור העצמי ∣ψ⟩.
בואו ננתח את ה-Circuit בפירוט כדי לקבוע בדיוק איך.
המצב ההתחלתי של ה-Circuit הוא
∣π0⟩=∣ψ⟩∣0⟩
וה-Gate הראשון של הדאמר מטפל במצב זה ומשנה אותו ל:
∣π1⟩=∣ψ⟩∣+⟩=21∣ψ⟩∣0⟩+21∣ψ⟩∣1⟩.
לאחר מכן, מתבצעת פעולת controlled-U, שמביאה למצב
∣π2⟩=21∣ψ⟩∣0⟩+21(U∣ψ⟩)∣1⟩.
בשימוש בהנחה ש-∣ψ⟩ הוא וקטור עצמי של U עם ערך עצמי λ=e2πiθ,
אנחנו יכולים לבטא את המצב הזה אחרת, כך:
כאן אנחנו צופים בתופעת ה-phase kickback.
היא מעט שונה הפעם מאשר הייתה עבור האלגוריתם של דויטש ואלגוריתם דויטש-יוזה מכיוון שאנחנו לא עובדים עם Gate שאילתה — אבל הרעיון דומה.
לבסוף, מתבצע ה-Gate השני של הדאמר. לאחר פישוט קל, אנחנו מקבלים את הביטוי הזה עבור המצב הזה.
∣π3⟩=∣ψ⟩⊗(21+e2πiθ∣0⟩+21−e2πiθ∣1⟩)
המדידה מניבה לכן את התוצאות 0 ו-1 עם ההסתברויות הבאות:
הנה גרף של ההסתברויות לשתי התוצאות האפשריות, 0 ו-1, כפונקציות של θ.
כמובן, שתי ההסתברויות תמיד מסתכמות ל-1.
שימו לב שכאשר θ=0, תוצאת המדידה היא תמיד 0, וכאשר θ=1/2, תוצאת המדידה היא תמיד 1.
כלומר, למרות שתוצאת המדידה לא חושפת בדיוק מהו θ, היא כן מספקת לנו מידע כלשהו עליו — ואם היה מובטח לנו שאחד מהם θ=0 או θ=1/2, יכולנו ללמוד מה-Circuit איזה מהם נכון ללא שגיאה.
באופן אינטואיטיבי, נוכל לחשוב על תוצאת המדידה של ה-Circuit כניחוש עבור θ ל"דיוק של סיבית אחת."
במילים אחרות, אם היינו כותבים את θ בסימון בינארי ומעגלים אותו לסיבית אחת, היה לנו מספר כזה:
0.a={021a=0a=1.
תוצאת המדידה ניתנת לראייה כניחוש עבור הסיבית a.
כאשר θ אינו 0 ולא 1/2, יש הסתברות שאינה אפס שהניחוש יהיה שגוי — אבל
הסתברות ביצוע השגיאה הולכת וקטנה ככל שמתקרבים ל-0 או ל-1/2.
טבעי לשאול מה תפקיד שני ה-Gate של הדאמר בהליך זה:
ה-Gate הראשון של הדאמר מגדיר את ה-Qubit השליטה לסופרפוזיציה אחידה של ∣0⟩ ו-∣1⟩, כך שכאשר ה-phase kickback מתרחש, הוא קורה עבור המצב ∣1⟩ ולא עבור המצב ∣0⟩, ויוצר הפרש פאזה יחסי שמשפיע על תוצאות המדידה. אם לא היינו עושים זאת ו-phase kickback היה מייצר פאזה גלובלית, זה לא היה משפיע על ההסתברויות לקבלת תוצאות מדידה שונות.
ה-Gate השני של הדאמר מאפשר לנו ללמוד משהו על המספר θ דרך תופעת ההתאבכות. לפני ה-Gate השני של הדאמר, מצב ה-Qubit העליון הוא
21∣0⟩+2e2πiθ∣1⟩,
ואם היינו מודדים מצב זה, היינו מקבלים 0 ו-1 כל אחד עם הסתברות 1/2, ולא מספרים לנו כלום על θ. עם זאת, על ידי ביצוע ה-Gate השני של הדאמר, אנחנו גורמים למספר θ להשפיע על הסתברויות הפלט.
ה-Circuit לעיל משתמש בתופעת ה-phase kickback כדי לקרב את θ לדיוק של סיבית בודדת.
דיוק של סיבית אחת עשוי להיות כל מה שאנחנו צריכים במצבים מסוימים — אבל לפקטוריזציה נצטרך הרבה יותר דיוק מזה.
שאלה טבעית היא, כיצד נוכל ללמוד יותר על θ?
דבר פשוט מאוד שנוכל לעשות הוא להחליף את פעולת controlled-U ב-Circuit שלנו בשני עותקים של פעולה זו, כמו ב-Circuit הזה:
שני עותקים של פעולת controlled-U שקולים לפעולת controlled-U2 אחת.
אם ∣ψ⟩ הוא וקטור עצמי של U עם ערך עצמי λ=e2πiθ, אז מצב זה הוא גם וקטור עצמי של U2, הפעם עם ערך עצמי λ2=e2πi(2θ).
לכן, אם נריץ גרסה זו של ה-Circuit, אנחנו בעצם מבצעים את אותו חישוב כמו קודם, אלא שהמספר θ מוחלף ב-2θ.
הנה גרף המדגים את הסתברויות הפלט כש-θ נע בין 0 ל-1.
עשיית זאת אכן יכולה לספק לנו מידע נוסף על θ.
אם הייצוג הבינארי של θ הוא
θ=0.a1a2a3⋯
אז הכפלת θ זזה בפועל את הנקודה הבינארית מיקום אחד ימינה:
2θ=a1.a2a3⋯
ומכיוון שאנחנו משווים θ=1 עם θ=0 כשאנחנו מסתובבים סביב מעגל היחידה, אנחנו רואים שלסיבית a1 אין השפעה על ההסתברויות שלנו, ואנחנו בעצם מקבלים ניחוש עבור הסיבית השנייה אחרי הנקודה הבינארית אם נעגל את θ לשתי סיביות.
לדוגמה, אם ידענו מראש ש-θ הוא 0 או 1/4, נוכל לסמוך לחלוטין על תוצאת המדידה שתגיד לנו איזה.
עם זאת, לא ברור מיד כיצד יש לפייס אמידה זו עם מה שלמדנו מה-Circuit המקורי (ה-phase kickback הלא מוכפל) כדי לתת לנו את המידע המדויק ביותר האפשרי על θ.
אז בואו נחזור צעד אחורה ונשקול כיצד להמשיך.
במקום לשקול את שתי האפשרויות שתוארו לעיל בנפרד, בואו נשלב אותן ל-Circuit יחיד כך.
ה-Gate של הדאמר אחרי הפעולות המבוקרות הוסרו ואין כאן עדיין מדידות.
נוסיף עוד ל-Circuit כשנשקול את האפשרויות שלנו ללמוד כמה שיותר על θ.
אם נריץ Circuit זה כאשר ∣ψ⟩ הוא וקטור עצמי של U, מצב ה-Qubits התחתונים יישאר ∣ψ⟩ לאורך כל ה-Circuit, ופאזות "ייקרצו" למצב שני ה-Qubits העליונים.
בואו ננתח את ה-Circuit בזהירות, באמצעות התמונה הבאה.
אנחנו יכולים לכתוב את המצב ∣π1⟩ כך:
∣π1⟩=∣ψ⟩⊗21a0=0∑1a1=0∑1∣a1a0⟩.
כאשר פעולת controlled-U הראשונה מתבצעת, הערך העצמי λ=e2πiθ נקרץ לפאזה כאשר a0 (ה-Qubit העליון) שווה ל-1, אבל לא כאשר הוא 0.
לכן, אנחנו יכולים לבטא את המצב המתקבל כך:
∣π2⟩=∣ψ⟩⊗21a0=0∑1a1=0∑1e2πia0θ∣a1a0⟩.
ה-Gate השני והשלישי של controlled-U עושים משהו דומה, אלא עבור a1 ולא a0, וכאשר θ מוחלף ב-2θ.
אנחנו יכולים לבטא את המצב המתקבל כך:
אם נחשוב על המחרוזת הבינארית a1a0 כמייצגת מספר שלם x∈{0,1,2,3} בסימון בינארי, שהוא x=2a1+a0, נוכל לבטא את המצב הזה אחרת כך:
∣π3⟩=∣ψ⟩⊗21x=0∑3e2πixθ∣x⟩
המטרה שלנו היא לחלץ כמה שיותר מידע על θ ממצב זה.
בשלב זה נשקול מקרה מיוחד, שבו מובטח לנו ש-θ=4y עבור מספר שלם כלשהו y∈{0,1,2,3}.
במילים אחרות, θ∈{0,1/4,1/2,3/4}, כלומר אנחנו יכולים לבטא מספר זה בדיוק בסימון בינארי עם שתי סיביות, כ-.00,.01,.10,או.11.באופןכללי,\thetaעשוישלאלהיותאחדמארבעתהערכיםהללו,אבלחשיבהעלמקרהמיוחדזהתעזורלנולהביןכיצדלחלץמידעעל\theta$ בצורה האפקטיבית ביותר באופן כללי.
ראשית נגדיר וקטור מצב של שני qubits לכל ערך אפשרי y∈{0,1,2,3}.
∣ϕy⟩=21x=0∑3e2πix(4y)∣x⟩=21x=0∑3e2πi4xy∣x⟩
לאחר פישוט האקספוננטים, אנחנו יכולים לכתוב וקטורים אלה כך:
וקטורים אלה אורתוגונליים: אם נבחר כל זוג מהם ונחשב את המכפלה הפנימית שלהם, נקבל 0.
כל אחד מהם הוא גם וקטור יחידה, כך ש-{∣ϕ0⟩,∣ϕ1⟩,∣ϕ2⟩,∣ϕ3⟩} הוא בסיס אורתונורמלי.
לכן אנחנו יודעים מיד שקיימת מדידה שיכולה להבחין ביניהם בצורה מושלמת — כלומר, אם ניתן לנו אחד מהם אבל לא ידוע לנו איזה, נוכל לגלות איזה הוא ללא שגיאה.
כדי לבצע הבחנה כזו עם Circuit קוונטי, נוכל תחילה להגדיר פעולה יוניטרית V שמטפלת במצבי הבסיס הסטנדרטי לארבעת המצבים המפורטים לעיל.
V∣00⟩V∣01⟩V∣10⟩V∣11⟩=∣ϕ0⟩=∣ϕ1⟩=∣ϕ2⟩=∣ϕ3⟩
כדי לכתוב את V כמטריצה 4×4, צריך פשוט לקחת את העמודות של V להיות המצבים ∣ϕ0⟩,…,∣ϕ3⟩.
V=2111111i−1−i1−11−11−i−1i
זוהי מטריצה מיוחדת, וסביר שחלק מהקוראים כבר נתקלו בה:
זוהי המטריצה הקשורה לטרנספורם פורייה הדיסקרטי ממימד 4.
לאור עובדה זו, הבה נכנה אותה בשם QFT4 ולא V.
השם QFT הוא קיצור של טרנספורם פורייה הקוונטי — שהוא בעצם רק טרנספורם פורייה הדיסקרטי, הנתפס כפעולה יוניטרית.
נדון בטרנספורם פורייה הקוונטי בפירוט ובכלליות רבה יותר בקרוב.
QFT4=2111111i−1−i1−11−11−i−1i
נוכל לבצע את ההופכי של פעולה זו כדי ללכת בכיוון ההפוך, לטפל במצבים ∣ϕ0⟩,…,∣ϕ3⟩ למצבי הבסיס הסטנדרטי ∣0⟩,…,∣3⟩.
אם נעשה זאת, נוכל למדוד כדי ללמוד איזה ערך y∈{0,1,2,3} מתאר את θ כ-θ=y/4.
הנה תרשים של Circuit קוונטי שעושה זאת.
לסיכום, אם נריץ Circuit זה כאשר θ=y/4 עבור y∈{0,1,2,3}, המצב מיד לפני ביצוע המדידות יהיה ∣ψ⟩∣y⟩ (כאשר y מקודד כמחרוזת בינארית של שתי סיביות), לכן המדידות יחשפו את הערך y ללא שגיאה.
Circuit זה מונע על ידי המקרה המיוחד ש-θ∈{0,1/4,1/2,3/4} — אבל אנחנו יכולים להריצו עבור כל בחירה של U ו-∣ψ⟩, ולכן כל ערך של θ, שנרצה.
הנה גרף של הסתברויות הפלט ש-Circuit מייצר עבור בחירות שרירותיות של θ.
זוהי שיפור ברור על הגרסה של qubit בודד שתוארה קודם בשיעור.
זה לא מושלם — הוא יכול לתת לנו תשובה שגויה — אבל התשובה נוטה מאוד לערכי y עבורם y/4 קרוב ל-θ.
בפרט, התוצאה הסבירה ביותר תמיד מתאימה לערך הקרוב ביותר של y/4 ל-θ (בשוות ערך θ=0 ו-θ=1 כמקודם), ומהגרף נראה שהערך הקרוב ביותר עבור x מופיע תמיד עם הסתברות מעט מעל 40%.
כאשר θ נמצא בדיוק באמצע בין שני ערכים כאלה, כמו θ=0.375 לדוגמה, שני ערכי y הקרובים באותה מידה הם בעלי שווה הסתברות.
בהתחשב בשיפור שהשגנו זה עתה על ידי שימוש בשני qubits שליטה במקום אחד, בשילוב עם ההופכי של טרנספורם פורייה הקוונטי ממימד 4, טבעי לשקול להכליל אותו עוד — על ידי הוספת qubits שליטה נוספים.
כשנעשה זאת, נקבל את הליך אמידת הפאזה הכללי.
נראה כיצד זה עובד בקרוב, אבל כדי לתאר אותו במדויק נצטרך לדון בטרנספורם פורייה הקוונטי בכלליות רבה יותר, כדי לראות כיצד הוא מוגדר עבור מימדים אחרים וכיצד ניתן ליישמו (או את ההופכי שלו) עם Circuit קוונטי.
טרנספורמציית פורייה הקוונטית היא פעולה יוניטרית שניתן להגדיר עבור כל מספר שלם חיובי N.
בחלק הזה נראה איך הפעולה הזו מוגדרת ואיך אפשר לממש אותה עם Circuit קוונטי על m qubits בעלות O(m2) כאשר N=2m.
המטריצות שמתארות את טרנספורמציית פורייה הקוונטית נגזרות מפעולה אנלוגית על וקטורים בממד N שמכונה טרנספורמציית פורייה הדיסקרטית.
אפשר לחשוב על הפעולה הזו בדרכים שונות.
למשל, אפשר לחשוב על טרנספורמציית פורייה הדיסקרטית במונחים מתמטיים מופשטים בלבד כמיפוי לינארי.
או שאפשר לחשוב עליה במונחים חישוביים, שבהם מקבלים וקטור בממד N של מספרים מרוכבים (בהנחה שמשתמשים בסימון בינארי לקידוד החלקים הממשיים והמדומים של הרכיבים) והמטרה היא לחשב את הוקטור בממד N המתקבל על ידי הפעלת טרנספורמציית פורייה הדיסקרטית.
ההתמקדות שלנו תהיה בדרך שלישית — הצגת הטרנספורמציה הזו כפעולה יוניטרית שניתן לבצע על מערכת קוונטית.
יש אלגוריתם יעיל לחישוב טרנספורמציית פורייה הדיסקרטית על וקטור קלט נתון שמכונה טרנספורמציית פורייה המהירה.
יש לו יישומים בעיבוד אותות ובתחומים רבים אחרים, ורבים רואים בו אחד האלגוריתמים החשובים שאי פעם התגלו.
כפי שמסתבר, המימוש של טרנספורמציית פורייה הקוונטית כשש N הוא חזקה של 2 שנלמד מבוסס בדיוק על אותה מבנה עומק שהופך את טרנספורמציית פורייה המהירה לאפשרית.
עכשיו אפשר להגדיר את טרנספורמציית פורייה הקוונטית בממד N, המתוארת על ידי מטריצה N×N שהשורות והעמודות שלה משויכות לוקטורי הבסיס הסטנדרטיים ∣0⟩,…,∣N−1⟩.
נצטרך את הפעולה הזו רק כשש N=2m הוא חזקה של 2 לצורך אמידת הפאזה, אבל הפעולה ניתנת להגדרה לכל מספר שלם חיובי N.
QFTN=N1x=0∑N−1y=0∑N−1ωNxy∣x⟩⟨y∣
כפי שכבר נאמר, זו המטריצה המשויכת לטרנספורמציית פורייה הדיסקרטית בממד N.
לעיתים קרובות הגורם המוביל 1/N לא נכלל בהגדרה של המטריצה הזו, אבל צריך לכלול אותו כדי לקבל מטריצה יוניטרית.
הנה טרנספורמציית פורייה הקוונטית, כתובה כמטריצה, עבור כמה ערכים קטנים של N.
בואו נוודא ש-QFTN הוא יוניטרי, לכל בחירה של N.
דרך אחת לעשות זאת היא להראות שהעמודות שלו יוצרות בסיס אורתונורמלי.
אפשר להגדיר וקטור המתאים לעמודה מספר y, החל מ-y=0 עד y=N−1, כך:
∣ϕy⟩=N1x=0∑N−1ωNxy∣x⟩.
לקיחת המכפלה הפנימית בין כל שניים מהוקטורים האלה נותנת לנו את הביטוי הבא:
⟨ϕz∣ϕy⟩=N1x=0∑N−1ωNx(y−z)
אפשר לחשב סכומים כאלה באמצעות הנוסחה הבאה לסכום N האיברים הראשונים של סדרה הנדסית.
1+α+α2+⋯+αN−1=⎩⎨⎧α−1αN−1Nif α=1if α=1
ספציפית, אפשר להשתמש בנוסחה הזו כאשר α=ωNy−z.
כאשר y=z, מתקבל α=1, ולכן שימוש בנוסחה וחלוקה ב-N נותן
זה קורה כי ωNN=e2πi=1, ולכן ωNN(y−z)=1y−z=1, מה שהופך את המונה לאפס, בעוד שהמכנה שונה מאפס כי ωNy−z=1.
באופן אינטואיטיבי, מה שעושים כאן הוא לסכום קבוצת נקודות שמפוזרות על מעגל היחידה, והן מתבטלות ומשאירות 0 בסכום.
הוכחנו אם כך ש-{∣ϕ0⟩,…,∣ϕN−1⟩} הוא קבוצה אורתונורמלית,
כדי לממש את טרנספורמציית פורייה הקוונטית עם Circuit קוונטי, נצטרך להשתמש בשערי פאזה מבוקרים.
נזכיר שש פעולת פאזה היא פעולה יוניטרית על qubit בודד בצורה
Pα=(100eiα)
לכל מספר ממשי α.
לגרסה המבוקרת של Gate הזה יש המטריצה הבאה:
CPα=100001000010000eiα
ב-Gate המבוקר הזה, לא ממש משנה איזה qubit הוא השליטה ואיזה הוא המטרה כי שתי האפשרויות שקולות.
אפשר להשתמש בכל אחד מהסמלים הבאים כדי לייצג את Gate הזה בדיאגרמות Circuit קוונטי.
בצורה השלישית, התווית α מוצבת לפעמים גם בצד קו השליטה או מתחת לשליטה התחתונה כשנוח.
כדי לבצע את טרנספורמציית פורייה הקוונטית כאשר N=2m ו-m≥2, נצטרך לבצע פעולה על m qubits שפעולתה על וקטורי הבסיס הסטנדרטיים ניתנת לתיאור כ
∣y⟩∣a⟩↦ω2may∣y⟩∣a⟩,
כאשר a הוא ביט ו-y∈{0,…,2m−1−1} הוא מספר מקודד בסימון בינארי כמחרוזת של m−1 ביטים.
ניתן לעשות זאת באמצעות שערי פאזה מבוקרים על ידי הכללת הדוגמה הבאה, עבורה m=5.
באופן כללי, לכל בחירה שרירותית של m≥2, ה-Qubit העליון המתאים לביט a יכול להיחשב כשליטה, כשגייטי הפאזה Pα נעים מ-α=π/2m−1 על ה-Qubit המתאים לביט הכי פחות משמעותי של y עד α=2π על ה-Qubit המתאים לביט הכי משמעותי של y.
שערי הפאזה המבוקרים האלה כולם מתחלפים זה עם זה וניתן לבצע אותם בכל סדר.
עכשיו נראה איך אפשר לממש את טרנספורם פורייה הקוונטי עם Circuit כאשר הממד N=2m הוא חזקה של 2.
בעצם, יש כמה דרכים לממש את טרנספורם פורייה הקוונטי, אבל זו כנראה השיטה הפשוטה ביותר שידועה.
ברגע שיודעים לממש את טרנספורם פורייה הקוונטי עם Circuit קוונטי, קל לממש גם את ההופכי שלו: אפשר להחליף כל Gate בהופכי שלו (או, בשורה אחרת, בטרנספוז המצומד) ולהפעיל את ה-Gates בסדר הפוך.
כל Circuit קוונטי שמורכב אך ורק מ-Gates יוניטריים ניתן להפוך בצורה כזו.
המימוש הוא בעל אופי רקורסיבי, ולכן כך הוא מתואר באופן הטבעי ביותר.
המקרה הבסיסי הוא m=1, שבו טרנספורם פורייה הקוונטי הוא פעולת הדמארד.
כדי לבצע את טרנספורם פורייה הקוונטי על m qubits כאשר m≥2, ניתן לבצע את הצעדים הבאים, שנתאר את פעולתם על מצבי בסיס סטנדרטיים מהצורה ∣x⟩∣a⟩, כאשר x∈{0,…,2m−1−1} הוא מספר שלם מקודד כ-m−1 ביטים בסימון בינארי ו-a הוא ביט בודד.
ראשית, מפעילים את טרנספורם פורייה הקוונטי ממימד 2m−1 על m−1 ה-Qubits התחתונים/השמאליים ביותר כדי לקבל
את המצב הבא:
הדבר נעשה על ידי הפעלה רקורסיבית של השיטה המתוארת עבור qubit אחד פחות, תוך שימוש בפעולת הדמארד על qubit בודד כמקרה הבסיסי.
משתמשים ב-Qubit העליון/הימני ביותר כשליטה כדי להזריק את הפאזה ω2my עבור כל מצב בסיס סטנדרטי
∣y⟩ של m−1 ה-Qubits הנותרים (כפי שתואר לעיל) כדי לקבל את המצב הבא:
2m−11y=0∑2m−1−1ω2m−1xyω2may∣y⟩∣a⟩.
מבצעים Hadamard Gate על ה-Qubit העליון/הימני ביותר כדי לקבל את המצב הבא:
2m1y=0∑2m−1−1b=0∑1(−1)abω2m−1xyω2may∣y⟩∣b⟩.
מסדרים מחדש את סדר ה-Qubits כך שהביט הפחות משמעותי הופך לביט המשמעותי ביותר,
כשכל האחרים מוזזים למעלה/ימינה:
2m1y=0∑2m−1−1b=0∑1(−1)abω2m−1xyω2may∣b⟩∣y⟩.
לדוגמה, הנה ה-Circuit שמתקבל עבור N=32=25.
בדיאגרמה זו, ה-Qubits נקראים בשמות התואמים לוקטורי הבסיס הסטנדרטיים ∣x⟩∣a⟩ (עבור הקלט) ו-∣b⟩∣y⟩ (עבור הפלט) לשם בהירות.
הנוסחה המרכזית שצריך לאמת שה-Circuit שתואר מממש את טרנספורם פורייה הקוונטי ממימד 2m היא זו:
(−1)abω2m−1xyω2may=ω2m(2x+a)(2m−1b+y).
נוסחה זו עובדת עבור כל בחירה של מספרים שלמים a,b,x, ו-y, אבל נצטרך אותה רק עבור
a,b∈{0,1} ו-x,y∈{0,…,2m−1−1}.
ניתן לאמת אותה על ידי פיתוח המכפלה במעריך בצד ימין,
לבסוף, על ידי חשיבה על מצבי הבסיס הסטנדרטיים ∣x⟩∣a⟩ ו-∣b⟩∣y⟩ כקידוד בינארי של מספרים שלמים בתחום {0,…,2m−1},
∣x⟩∣a⟩∣b⟩∣y⟩=∣2x+a⟩=∣2m−1b+y⟩,
רואים שה-Circuit לעיל מממש את הפעולה הנדרשת.
אם שיטה זו לביצוע טרנספורם פורייה הקוונטי נראית מרשימה — זה כי היא אכן מרשימה:
זוהי בעצם טרנספורם פורייה המהיר בצורה של Circuit קוונטי.
לבסוף, בואו נספור כמה Gates משמשים ב-Circuit שתואר.
ה-Gates של שלב מבוקר אינם בסט ה-Gates הסטנדרטי שדנו בו בשיעור הקודם, אבל לצורך ההתחלה נתעלם מכך ונספור כל אחד מהם כ-Gate בודד.
נסמן ב-sm את מספר ה-Gates שנדרשים עבור כל בחירה אפשרית של m.
אם m=1, טרנספורם פורייה הקוונטי הוא פשוט פעולת הדמארד, ולכן
s1=1.
אם m≥2, אז ב-Circuit לעיל נצטרך sm−1 Gates עבור טרנספורם פורייה הקוונטי על m−1 qubits, בתוספת m−1 Gates של שלב מבוקר, בתוספת Hadamard Gate, בתוספת m−1 gates של החלפה, ולכן
sm=sm−1+(2m−1).
ניתן לקבל ביטוי בצורה סגורה על ידי סכימה:
sm=k=1∑m(2k−1)=m2.
בעצם אין צורך בכמה gates של החלפה כפי שהשיטה מתארת.
אם נסדר מחדש את ה-Gates קצת, נוכל לדחוף את כל gates ההחלפה ימינה ולהפחית את מספרם הנדרש ל-⌊m/2⌋.
מבחינה אסימפטוטית זה לא שיפור משמעותי: עדיין מקבלים Circuits בגודל O(m2) לביצוע QFT2m.
אם רוצים לממש את טרנספורם פורייה הקוונטי תוך שימוש רק ב-Gates מסט ה-Gates הסטנדרטי שלנו, צריך לבנות או לקרב כל אחד מ-Gates השלב המבוקר עם gates מהסט שלנו.
המספר הנדרש תלוי בדיוק הנדרש, אבל כפונקציה של m העלות הכוללת נשארת ריבועית.
למעשה, ניתן לקרב את טרנספורם פורייה הקוונטי בצורה קרובה מאוד עם מספר תת-ריבועי של gates על ידי שימוש בעובדה ש-Pα קרובה מאוד לפעולת הזהות כאשר α קטן מאוד — מה שאומר שניתן פשוט להשמיט את רוב gates השלב המבוקר מבלי לסבול מאובדן גדול מדי מבחינת דיוק.
עכשיו נבחן את פרוצדורת אמידת הפאזה באופן כללי.
הרעיון הוא להרחיב את גרסת שני ה-Qubits של אמידת הפאזה שבחנו למעלה בדרך הטבעית שמוצעת על ידי הדיאגרמה הבאה.
שימו לב שעבור כל qubit שליטה חדש שמוסיפים למעלה, אנחנו מכפילים את מספר הפעמים שהפעולה היוניטרית U מבוצעת.
הדבר מסומן בדיאגרמה על ידי החזקות על U עבור כל אחת מהפעולות של היוניטרי המבוקר.
הדרך הפשוטה ביותר לממש פעולת controlled-Uk עבור בחירה כלשהי של k היא פשוט לחזור על פעולת controlled-Uk פעמים.
אם זוהי אכן המתודולוגיה שבשימוש, יש להכיר בכך שהוספת qubits שליטה תורמת באופן משמעותי לגודל ה-Circuit: אם יש לנו m qubits שליטה, כפי שהדיאגרמה מציגה, נדרש סך כולל של 2m−1 עותקים של פעולת controlled-U.
משמעות הדבר היא שעלות חישובית משמעותית נוצרת ככל ש-m גדל — אבל כפי שנראה, הדבר גם מוביל לקירוב משמעותית יותר מדויק של θ.
חשוב לציין, עם זאת, שעבור חלק מהבחירות של U ייתכן שניתן ליצור Circuit שמממש את הפעולה Uk עבור ערכים גדולים של k בדרך יעילה יותר מאשר פשוט לחזור k פעמים על ה-Circuit עבור U.
נראה דוגמה ספציפית לכך בהקשר של פירוק ראשוני מאוחר יותר בשיעור, שם האלגוריתם היעיל לחזקה מודולרית שנדון בו בשיעור הקודם בא לעזרה.
עכשיו בואו ננתח את ה-Circuit שתואר.
המצב מיד לפני טרנספורם פורייה הקוונטי ההפוך נראה כך:
עבור ערכים אחרים של θ, כלומר כאלה שאינם בצורה y/2m עבור מספר שלם y, תוצאות המדידה לא יהיו וודאיות, אבל ניתן להוכיח חסמים על ההסתברויות עבור תוצאות שונות.
להמשך, נבחן בחירה שרירותית של θ המקיימת 0≤θ<1.
לאחר ביצוע טרנספורם פורייה הקוונטי ההפוך, מצב ה-Circuit הוא:
∣ψ⟩⊗2m1y=0∑2m−1x=0∑2m−1e2πix(θ−y/2m)∣y⟩.
לכן, כאשר מבצעים את המדידות על m ה-Qubits העליונים, רואים כל תוצאה y עם הסתברות
py=2m1x=0∑2m−1e2πix(θ−y/2m)2.
כדי להבין טוב יותר את ההסתברויות האלה, נשתמש באותה נוסחה שראינו קודם, לסכום החלק ההתחלתי של סדרה גיאומטרית.
1+α+α2+⋯+αN−1=⎩⎨⎧α−1αN−1Nif α=1if α=1
ניתן לפשט את הסכום המופיע בנוסחה של py על ידי לקיחת α=e2πi(θ−y/2m).
הנה מה שמתקבל.
אז, במקרה ש-θ=y/2m, מוצאים ש-py=1 (כפי שכבר ידענו מהבחינה של המקרה המיוחד),
ובמקרה ש-θ=y/2m, מוצאים ש
py=22m1e2πi(θ−y/2m)−1e2πi(2mθ−y)−12.
ניתן ללמוד יותר על ההסתברויות האלה על ידי חשיבה על הקשר בין אורכי קשתות ואורכי מיתרים על מעגל היחידה.
הנה איור שממחיש את הקשרים הדרושים לנו עבור כל מספר ממשי δ∈[−21,21].
ראשית, אורך המיתר (המצויר בכחול) לא יכול להיות גדול מאורך הקשת (המצויר בסגול):
e2πiδ−1≤2π∣δ∣.
כשמשווים את האורכים בכיוון ההפוך, רואים שהיחס בין אורך הקשת לאורך המיתר הוא הגדול ביותר כאשר δ=±1/2, ובמקרה זה היחס הוא מחצית היקף המעגל חלקי הקוטר, שהוא π/2.
לכן, מתקיים
e2πiδ−12π∣δ∣≤2π,
ולכן
e2πiδ−1≥4∣δ∣.
ניתוח המבוסס על קשרים אלה מגלה שני עובדות חשובות.
נניח ש-θ הוא מספר ממשי ו-y∈{0,…,2m−1} מקיים
θ−2my≤2−(m+1).
משמעות הדבר היא ש-y/2m הוא או הקירוב הטוב ביותר ב-m ביטים ל-θ, או שהוא בדיוק באמצע בין y/2m לבין (y−1)/2m או (y+1)/2m, כלומר הוא אחד משני הקירובים הטובים ביותר ל-θ.
נוכיח ש-py חייב להיות גדול למדי במקרה זה.
מהנחת היסוד שאנחנו שוקלים, נובע ש-∣2mθ−y∣≤1/2, ולכן ניתן להשתמש בתצפית השנייה לעיל בנוגע לקשת ומיתר כדי להסיק ש
e2πi(2mθ−y)−1≥4∣2mθ−y∣=4⋅2m⋅θ−2my.
ניתן גם להשתמש בתצפית הראשונה בנוגע לקשת ומיתר כדי להסיק ש
e2πi(θ−y/2m)−1≤2πθ−2my.
שימוש בשתי אי-השוויונות האלה על py מגלה
py≥22m14π216⋅22m=π24≈0.405.
זה מסביר את התצפית שלנו שהתוצאה הטובה ביותר מתרחשת עם הסתברות גדולה מ-40% בגרסת m=2 של אמידת הפאזה שנדונה קודם.
זה לא ממש 40%, אלא 4/π2, ולמעשה חסם זה תקף עבור כל בחירה של m.
עכשיו נניח ש-y∈{0,…,2m−1} מקיים
2−m≤θ−2my≤21.
משמעות הדבר היא שיש קירוב טוב יותר z/2m ל-θ בין θ ל-y/2m.
הפעם נוכיח ש-py לא יכול להיות גדול מדי.
ניתן להתחיל מהתצפית הפשוטה ש
e2πi(2mθ−y)−1≤2,
הנובעת מהעובדה שכל שתי נקודות על מעגל היחידה יכולות להבדל בערך מוחלט לכל היותר ב-2.
ניתן גם להשתמש בתצפית השנייה בנוגע לקשת ומיתר מלעיל, הפעם תוך עבודה עם המכנה של py ולא עם המונה, כדי להסיק
e2πi(θ−y/2m)−1≥4θ−2my≥4⋅2−m.
שילוב שני אי-השוויונות יחד מגלה
py≤22m116⋅2−2m4=41.
שימו לב שלמרות שחסם זה מספיק לצרכינו, הוא גס למדי — בדרך כלל ההסתברות נמוכה בהרבה מ-1/4.
המסקנה החשובה מניתוח זה היא שקירובים קרובים מאוד ל-θ צפויים להתרחש — נקבל קירוב טוב ביותר ב-m ביטים עם הסתברות גדולה מ-40% — בעוד שקירובים שסוטים ביותר מ-2−m פחות סבירים, עם הסתברות חסומה מלמעלה ב-25%.
בהינתן ערובות אלה, ניתן להגביר את הביטחון שלנו על ידי חזרה על פרוצדורת אמידת הפאזה מספר פעמים, כדי לאסוף ראיות סטטיסטיות לגבי θ.
חשוב לציין שהמצב ∣ψ⟩ של אוסף ה-Qubits התחתון אינו משתנה על ידי פרוצדורת אמידת הפאזה, ולכן ניתן להשתמש בו להרצת הפרוצדורה כמה פעמים שרוצים.
בפרט, בכל פעם שמריצים את ה-Circuit, מקבלים קירוב טוב ביותר ב-m ביטים ל-θ עם הסתברות גדולה מ-40%, בעוד שהסתברות לסטות ביותר מ-2−m חסומה ב-25%.
אם מריצים את ה-Circuit מספר פעמים ולוקחים את התוצאה הנפוצה ביותר, הסיכוי גבוה מאוד שהתוצאה שמופיעה הכי הרבה לא תהיה כזו שמתרחשת לכל היותר 25% מהזמן.
כתוצאה מכך, סביר מאוד לקבל קירוב y/2m שנמצא בתוך 1/2m מהערך θ.
אכן, הסיכוי הנמוך שנסטה ביותר מ-1/2m יורד באופן אקספוננציאלי עם מספר הפעמים שמריצים את הפרוצדורה.
הנה שתי גרפים המציגים את ההסתברויות עבור שלושה ערכים עוקבים של y כאשר m=3 ו-m=4 כפונקציות של θ.
(רק שלוש תוצאות מוצגות לשם בהירות. ההסתברויות עבור תוצאות אחרות מתקבלות על ידי הזזה מחזורית של אותה פונקציה בסיסית.)