אלגוריתם דויטש-ג'וזה

אלגוריתם דויטש-ג'וזה הוא אלגוריתם קוונטי להבדלה בין פונקציה קבועה לבין פונקציה מאוזנת. האלגוריתם מהווה דוגמה ליתרון המתקבל משימוש של מחשב קוונטי על פני מחשב קלאסי. האלגוריתם פורסם על ידי ריצ'רד ג'וזה ודייוויד דויטש בשנת 1992, והניח את היסודות לפיתוח אלגוריתם גרובר ואלגוריתם הפיקטור של פיטר שור. תהי f : { 0 , 1 } n → { 0 , 1 } {\displaystyle f:\{0,1\}^{n}\to \{0,1\}} פונקציה המקבלת קלט באורך n {\displaystyle \left.n\right.} ביטים, ופולטת פלט באורך ביט יחיד, כך שמתקיים אחד מהשניים: f {\displaystyle f} היא פונקציה קבועה, כלומר, לכל x ∈ { 0 , 1 } n {\displaystyle x\in \{0,1\}^{n}} מתקיים f ( x ) = 0 {\displaystyle f\left(x\right)=0} , או שלכל x ∈ { 0 , 1 } n {\displaystyle x\in \{0,1\}^{n}} מתקיים f ( x ) = 1 {\displaystyle f\left(x\right)=1} ; או f {\displaystyle f} היא פונקציה מאוזנת, כלומר למחצית מה- x {\displaystyle \left.x\right.} -ים מתקיים f ( x ) = 0 {\displaystyle f\left(x\right)=0} ולשאר f ( x ) = 1 {\displaystyle f\left(x\right)=1} אלגוריתם דויטש-ג'וזה מקבל כקלט את הפונקציה f {\displaystyle f} , ומחזיר כפלט האם היא קבועה או מאוזנת. האלגוריתם עושה זאת על ידי הפעלה של הפונקציה f {\displaystyle f} פעם יחידה בלבד. באופן קלאסי, זיהוי האם פונקציה קבועה או מאוזנת מצריך לכל הפחות 2 n − 1 + 1 {\displaystyle \left.2^{n-1}+1\right.} הפעלות של פונקציית הקלט עם ערכי x {\displaystyle \left.x\right.} שונים. אם בכלל הפעלות הפונקציה מתקבל אותו ערך אזי היא קבועה, ואם בשתיים מההפעלות מתקבלים ערכים שונים, אזי הפונקציה היא מאוזנת. לא קיים פתרון דטרמיניסטי המפעיל את הפונקציה פחות מ 2 n − 1 + 1 {\displaystyle \left.2^{n-1}+1\right.} פעמים, שכן תמיד ייתכן מצב בו 2 n − 1 {\displaystyle \left.2^{n-1}\right.} הערכים שעליהם נשאלה הפונקציה מקיימים f ( x ) = 0 {\displaystyle f\left(x\right)=0} ועדיין שאר הערכים מקיימים f ( x ) = 1 {\displaystyle f\left(x\right)=1} , כלומר הפונקציה מאוזנת. מצד שני, קיימים פתרונות הסתברותיים לבעיה זו. לדוגמה, ניתן להגריל כמות של k {\displaystyle \left.k\right.} קלטים שונים ולבדוק את ערך הפונקציה עבור קלטים אלו בלבד. במידה ומתקיים k < 2 n − 1 + 1 {\displaystyle k<\left.2^{n-1}+1\right.} קיימת הסתברות שהאלגוריתם יטעה, אך הסתברות זו נחשבת זניחה מכיוון שהיא קטנה מ- 2 − k + 1 {\displaystyle \left.2^{-k+1}\right.} . האלגוריתם הקוונטי מתואר בתרשים משמאל. המעגל מקבל כקלט אוגר קוונטי המכיל n + 1 {\displaystyle \left.n+1\right.} קיוביטים. ניתן להסתכל על הקלט כשני אוגרים המאותחלים ל | 0 ⟩ ⊗ n | 1 ⟩ {\displaystyle |0\rangle ^{\otimes n}|1\rangle } . על כל אחת מהכניסות מופעל שער הדמר, ומצבם המשותף ניתן כעת לביטוי בתור 1 2 n + 1 ∑ x ∈ { 0 , 1 } n | x ⟩ ( | 0 ⟩ − | 1 ⟩ ) {\displaystyle {\frac {1}{\sqrt {2^{n+1}}}}\sum _{x\in \{0,1\}^{n}}|x\rangle (|0\rangle -|1\rangle )} . כעת מופעלת הפונקציה הקוונטית f ( x ) {\displaystyle f\left(x\right)} על האוגר, כאשר n {\displaystyle \left.n\right.} הכניסות הראשונות הן הקלט, ואילו הכניסה האחרונה משמשת עבור הפלט. לאחר הפעלת הפונקציה מצב האוגר הוא 1 2 n + 1 ∑ x ∈ { 0 , 1 } n | x ⟩ ( | 0 ⊕ f ( x ) ⟩ − | 1 ⊕ f ( x ) ⟩ ) {\displaystyle {\frac {1}{\sqrt {2^{n+1}}}}\sum _{x\in \{0,1\}^{n}}|x\rangle (|0\oplus f(x)\rangle -|1\oplus f(x)\rangle )} . העיקרון עליו מבוסס האלגוריתם הוא הבא: אם f ( x ) = 0 {\displaystyle f\left(x\right)=0} קיוביט הפלט ניתן לרישום בתור | f ( x ) ⟩ − | 1 ⊕ f ( x ) ⟩ = | 0 ⟩ − | 1 ⟩ {\displaystyle |f(x)\rangle -|1\oplus f(x)\rangle =|0\rangle -|1\rangle } ואילו עבור אותם x {\displaystyle \left.x\right.} -ים עבורם f ( x ) = 1 {\displaystyle f\left(x\right)=1} נקבל | f ( x ) ⟩ − | 1 ⊕ f ( x ) ⟩ = | 1 ⟩ − | 0 ⟩ = − ( | 0 ⟩ − | 1 ⟩ ) {\displaystyle |f(x)\rangle -|1\oplus f(x)\rangle =|1\rangle -|0\rangle =-(|0\rangle -|1\rangle )} כלומר הסימן של האוגר משתנה בהתאם לערך הפונקציה f ( x ) {\displaystyle f\left(x\right)} , והאוגר ניתן לרישום בתור 1 2 n + 1 ∑ x ∈ { 0 , 1 } n ( − 1 ) f ( x ) | x ⟩ ( | 0 ⟩ − | 1 ⟩ ) {\displaystyle {\frac {1}{\sqrt {2^{n+1}}}}\sum _{x\in \{0,1\}^{n}}(-1)^{f(x)}|x\rangle (|0\rangle -|1\rangle )} . נשים לב שהקיוביט האחרון אינו תלוי בערך של הפונקציה, ערכו תמיד ( | 0 ⟩ − | 1 ⟩ ) {\displaystyle (|0\rangle -|1\rangle )} וניתן להתעלם ממנו בהמשך. כעת נפעיל בשנית שער הדמר על האוגר ונבדוק את שני המצבים האפשריים: אם הפונקציה הייתה קבועה לערך 0, אזי האוגר היה מהצורה 1 2 n + 1 ∑ x ∈ { 0 , 1 } n | x ⟩ {\displaystyle {\frac {1}{\sqrt {2^{n+1}}}}\sum _{x\in \{0,1\}^{n}}|x\rangle } . לאחר הפעלת השער יהיה ערכו | 0 ⟩ ⊗ n {\displaystyle |0\rangle ^{\otimes n}} ועל כן מדידתו בבסיס החישוב תתן את התוצאה | 0 ⟩ ⊗ n {\displaystyle |0\rangle ^{\otimes n}} בהסתברות 1. אם הפונקציה הייתה מאוזנת, אז חצי מהערכים x {\displaystyle \left.x\right.} הם בעלי פאזה חיובית ומחציתם בעלי פאזה שלילית. נשים לב שלאחר הפעלת שער הדמר על אוגר בעל ערך | x ⟩ {\displaystyle |x\rangle } כלשהו, התוצאה היא סכום משוקלל של כלל 2 n {\displaystyle \left.2^{n}\right.} הערכים האפשריים כאשר הפאזה של כל אבר נקבעת בהתאם לערך x {\displaystyle \left.x\right.} . כמו כן, נשים לב שהפאזה של האבר | 0 ⟩ ⊗ n {\displaystyle |0\rangle ^{\otimes n}} בסכום זה היא תמיד חיובית, ללא תלות בערכו של x {\displaystyle \left.x\right.} . לפיכך, כאשר נפעיל את השער הדמר על סופרפוזיציה של 2 n {\displaystyle \left.2^{n}\right.} אברי הבסיס האפשריים כאשר הפאזה של חציים חיובית ושל חציים שלילית - במוצא השער האבר | 0 ⟩ ⊗ n {\displaystyle |0\rangle ^{\otimes n}} יתאפס, ומדידה בבסיס החישוב לעולם לא תפיק את התוצאה | 0 ⟩ ⊗ n {\displaystyle |0\rangle ^{\otimes n}} . ליתר דיוק, האלגוריתם מקבל קופסה שחורה המממשת את הפונקציה f {\displaystyle f}