מימוש ב-Qiskit
בשיעור זה נממש כמה מהרעיונות מהשיעור על שזירה בפעולה, תוך שימוש ב-Qiskit.
# Added by doQumentation — required packages for this notebook
!pip install -q numpy qiskit qiskit-aer
from qiskit import __version__
print(__version__)
2.1.1
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit_aer import AerSimulator
from qiskit.visualization import plot_histogram, array_to_latex
from qiskit.result import marginal_distribution
from qiskit.circuit.library import UGate
from numpy import pi, random
הנה מימוש של פרוטוקול הטלפורטציה באמצעות Circuit קוונטי.
qubit = QuantumRegister(1, "Q")
ebit0 = QuantumRegister(1, "A")
ebit1 = QuantumRegister(1, "B")
a = ClassicalRegister(1, "a")
b = ClassicalRegister(1, "b")
protocol = QuantumCircuit(qubit, ebit0, ebit1, a, b)
# Prepare ebit used for teleportation
protocol.h(ebit0)
protocol.cx(ebit0, ebit1)
protocol.barrier()
# Alice's operations
protocol.cx(qubit, ebit0)
protocol.h(qubit)
protocol.barrier()
# Alice measures and sends classical bits to Bob
protocol.measure(ebit0, a)
protocol.measure(qubit, b)
protocol.barrier()
# Bob uses the classical bits to conditionally apply gates
with protocol.if_test((a, 1)):
protocol.x(ebit1)
with protocol.if_test((b, 1)):
protocol.z(ebit1)
display(protocol.draw(output="mpl"))

ה-Circuit משתמש בכמה תכונות של Qiskit שטרם ראינו בשיעורים קודמים, כולל הפונקציות barrier ו-if_test.
הפונקציה barrier יוצרת הפרדה ויזואלית שהופכת את תרשים ה-Circuit לקריא יותר, וגם מונעת מ-Qiskit לבצע פישוטים ואופטימיזציות שונות דרך ה-barrier בזמן הידור כשה-Circuit רץ על חומרה אמיתית.
הפונקציה if_test מפעילה פעולה בא ופן מותנה בהתאם לביט קלאסי או רגיסטר.
ה-Circuit מאתחל תחילה את למצב (שאינו חלק מהפרוטוקול עצמו), ולאחר מכן מגיעות פעולות אליס, אחר כך המדידות שלה, ולבסוף פעולות בוב. כדי לבדוק שהפרוטוקול עובד נכון, נפעיל Gate של Qubit בודד שנוצר באקראי על מצב המאותחל של , כדי לקבל וקטור מצב קוונטי אקראי שיועבר בטלפורטציה. על ידי הפעלת ההופכי (כלומר הטרנספוז המצומד) של אותו Gate על לאחר הרצת הפרוטוקול, נוכל לאמת שהמצב אכן עבר בטלפורטציה על ידי מדידה שמראה שהוא חזר למצב .
ראשית נבחר באקראי Gate של Qubit אוניטרי.
random_gate = UGate(
theta=random.random() * 2 * pi,
phi=random.random() * 2 * pi,
lam=random.random() * 2 * pi,
)
display(array_to_latex(random_gate.to_matrix()))
כעת ניצור Circuit בדיקה חדש שמפעיל תחילה את ה-Gate האקראי שלנו על לאחר מכן מריץ את Circuit הטלפורטציה, ולבסוף מפעיל את ההופכי של ה-Gate האקראי על ה-Qubit ומודד. התוצאה צריכה להיות בוודאות.
# Create a new circuit including the same bits and qubits used in the
# teleportation protocol.
test = QuantumCircuit(qubit, ebit0, ebit1, a, b)
# Start with the randomly selected gate on Q
test.append(random_gate, qubit)
test.barrier()
# Append the entire teleportation protocol from above.
test = test.compose(protocol)
test.barrier()
# Finally, apply the inverse of the random unitary to B and measure.
test.append(random_gate.inverse(), ebit1)
result = ClassicalRegister(1, "Result")
test.add_register(result)
test.measure(ebit1, result)
display(test.draw(output="mpl"))

לבסוף, בואו נריץ את סימולטור Aer על ה-Circuit הזה ונציג היסטוגרמה של הפלטים. נראה את הסטטיסטיקות עבור שלושת הביטים הקלאסיים: הביט התחתון/השמאלי ביותר צריך תמיד להיות מה שמצביע על כך שה-Qubit עבר בהצלחה בטלפורטציה אל בעוד ששני הביטים האחרים אמורים להיות אחידים פחות או יותר.
result = AerSimulator().run(test).result()
statistics = result.get_counts()
display(plot_histogram(statistics))
אפשר גם לסנן את הסטטיסטיקות כדי להתמקד אך ורק ב-Qubit של תוצאת הבדיקה, אם רוצים, כך:
filtered_statistics = marginal_distribution(statistics, [2])
display(plot_histogram(filtered_statistics))
קידוד על-צפוף
קידוד על-צפוף הוא פרוטוקול שמשיג, במובן מסוים, מטרה משלימה לטלפורטציה. במקום לאפשר העברה של Qubit אחד תוך שימוש בשני ביטים קלאסיים של תקשורת (במחיר של e-bit אחד של שזירה), הוא מאפשר העברה של שני ביטים קלאסיים תוך שימוש ב-Qubit אחד של תקשורת קוונטית (שוב, במחיר של e-bit אחד של שזירה).
בפירוט רב יותר, יש לנו שולח (אליס) ומקבל (בוב) שחולקים e-bit אחד של שזירה. לפי המוסכמות של השיעור, פירוש הדבר הוא שאליס מחזיקה Qubit בוב מחזיק Qubit ויחד הזוג נמצא במצב אליס רוצה להעביר לבוב שני ביטים קלאסיים, שנסמן אותם ו- והיא תעשה זאת על ידי שליחת Qubit אחד.
סביר להניח שמעשה זה נתפס כפחות מרשים מזה שמשיגה הטלפורטציה. שליחת Qubits צפויה להיות קשה בהרבה משליחת ביטים קלאסיים בעתיד הנראה לעין, כך שקידוד Qubit קוונטי אחד בשני ביטים קלאסיים, במחיר של e-bit לא פחות, בקושי נראה כדאי. אולם, זה לא אומר שקידוד על-צפוף אינו מעניין, כי הוא בהחלט כן.
בהתאם לנושא השיעור, סיבה אחת לכך שקידוד על-צפוף מעניין היא שהוא מדגים שימוש קונקרטי ו(בהקשר של תורת המידע) מרשים למדי בשזירה. משפט מפורסם בתורת המידע הקוונטי, הידוע כמשפט הולבו, מרמז שללא שימוש במצב שזור משותף, אי אפשר להעביר יותר מביט קלאסי אחד על ידי שליחת Qubit בודד. (משפט הולבו הוא כללי יותר מכך. הניסוח המדויק שלו טכני ומצריך הסבר, אבל זה אחד מהמסקנות שנובעות ממנו.) כך, דרך קידוד על-צפוף, שזירה משותפת למעשה מאפשרת הכפלה של ק יבולת נשיאת המידע הקלאסי בשליחת Qubits.
פרוטוקול
דיאגרמת Circuit הקוונטי הבאה מתארת את פרוטוקול הקידוד הצפוף:

הנה מה שאליס עושה, בלשון פשוטה:
-
אם אליס מפעילה Gate מסוג על ה-Qubit שלה (ואם היא לא עושה כלום).
-
אם אליס מפעילה Gate מסוג על ה-Qubit שלה (ואם היא לא עושה כלום).
לאחר מכן אליס שולחת את ה-Qubit שלה לבוב.
מה שבוב עושה כשהוא מקבל את ה-Qubit הוא קודם כל להפעיל Gate מסוג controlled-NOT, כשהבקרה היא והמטרה היא , ואז הוא מפעיל Gate מסוג Hadamard על לאחר מכן הוא מודד את כדי לקבל את ואת כדי לקבל את ובשני המקרים בבסיס הסטנדרטי.
ניתוח
הרעיון מאחורי פרוטוקול זה פשוט: אליס בעצם בוחרת איזה מצב Bell היא רוצה לשתף עם בוב, היא שולחת לבוב את ה-Qubit שלה, ובוב מודד כדי לקבוע איזה מצב Bell אליס בחרה.
כלומר, הם משתפים בהתחלה את ובהתאם לביטים ו- אליס או משאירה את המצב כמו שהוא או משנה אותו לאחד ממצבי Bell האחרים על ידי הפעלת או על ה-Qubit שלה
הפעולות של בוב גורמות לאפקטים הבאים על ארבעת מצבי Bell:
אפשר לאמת זאת ישירות, על ידי חישוב תוצאות הפעולות של בוב על מצבים אלה אחד אחד.
כך, כאשר בוב מבצע את המדידות שלו, הוא מסוגל לקבוע איזה מצב Bell אליס בחרה. כדי לאמת שהפרוטוקול עובד נכון מספיק לבדוק כל מקרה:
-
אם אז המצב של כאשר בוב מקבל את הוא הוא הופך מצב זה ל- ומקבל
-
אם אז המצב של כאשר בוב מקבל את הוא הוא הופך מצב זה ל- ומקבל
-
אם אז המצב של כאשר בוב מקבל את הוא הוא הופך מצב זה ל- ומקבל
-
אם אז המצב של כאשר בוב מקבל את הוא הוא הופך מצב זה ל- ומקבל (גורם הפאזה של מינוס אחד אינו משפיע כאן.)
מימוש קידוד צפוף
הנה מימוש פשוט של קידוד צפוף שבו אנחנו מגדירים את ה-Circuit עצמו בה תאם לביטים שרוצים לשדר. ראשית נבחר שני ביטים לשידור. (בהמשך נבחר אותם אקראית, אבל לעכשיו פשוט נעשה בחירה שרירותית.)
c = "1"
d = "0"
עכשיו נבנה את ה-Circuit בהתאם. כאן נאפשר ל-Qiskit להשתמש בשמות ברירת המחדל עבור ה-Qubits: עבור ה-Qubit העליון ו- עבור התחתון.
protocol = QuantumCircuit(2)
# Prepare ebit used for superdense coding
protocol.h(0)
protocol.cx(0, 1)
protocol.barrier()
# Alice's operations
if d == "1":
protocol.z(0)
if c == "1":
protocol.x(0)
protocol.barrier()
# Bob's actions
protocol.cx(0, 1)
protocol.h(0)
protocol.measure_all()
display(protocol.draw(output="mpl"))

אין כאן הרבה חדש, פרט לפונקציה measure_all, שמודדת את כל ה-Qubits ומכניסה את התוצאות לרגיסטר קלאסי אחד (ולכן במקרה זה יהיו בו שני ביטים).
הרצת הסימולטור Aer מניבה את הפלט הצפוי.
result = AerSimulator().run(protocol).result()
statistics = result.get_counts()
for outcome, frequency in statistics.items():
print(f"Measured {outcome} with frequency {frequency}")
display(plot_histogram(statistics))
Measured 10 with frequency 1024
עכשיו בואו נשתמש ב-Qubit נוסף כמחולל ביטים אקראיים — בעצם כדי להטיל מטבעות הוגנות. נשתמש בו לבחירה אקראית של ו- ואז נריץ את פרוטוקול הקידוד הצפוף.
rbg = QuantumRegister(1, "coin")
ebit0 = QuantumRegister(1, "A")
ebit1 = QuantumRegister(1, "B")
Alice_c = ClassicalRegister(1, "Alice c")
Alice_d = ClassicalRegister(1, "Alice d")
test = QuantumCircuit(rbg, ebit0, ebit1, Alice_d, Alice_c)
# Initialize the ebit
test.h(ebit0)
test.cx(ebit0, ebit1)
test.barrier()
# Use the 'coin' qubit twice to generate Alice's bits c and d.
test.h(rbg)
test.measure(rbg, Alice_c)
test.h(rbg)
test.measure(rbg, Alice_d)
test.barrier()
# Now the protocol runs, starting with Alice's actions, which depend
# on her bits.
with test.if_test((Alice_d, 1), label="Z"):
test.z(ebit0)
with test.if_test((Alice_c, 1), label="X"):
test.x(ebit0)
test.barrier()
# Bob's actions
test.cx(ebit0, ebit1)
test.h(ebit0)
test.barrier()
Bob_c = ClassicalRegister(1, "Bob c")
Bob_d = ClassicalRegister(1, "Bob d")
test.add_register(Bob_d)
test.add_register(Bob_c)
test.measure(ebit0, Bob_d)
test.measure(ebit1, Bob_c)
display(test.draw(output="mpl"))

הרצת הסימולטור Aer מציגה את התוצאות: הביטים הקלאסיים של אליס ובוב תמיד מסכימים.
result = AerSimulator().run(test).result()
statistics = result.get_counts()
display(plot_histogram(statistics))

משחק ה-CHSH
הדוגמה האחרונה שנדון בה בשיעור זה אינה פרוטוקול, אלא משחק הידוע בשם משחק CHSH.
כשאנחנו מדברים על משחק בהקשר זה, איננו מתכוונים למשהו שמיועד לשחק לשם כיף או תחרות, אלא לאבסטרקציה מתמטית במובן של תורת המשחקים. אבסטרקציות מתמטיות של משחקים נחקרות בכלכלה ובמדעי המחשב, למשל, והן גם מרתקות וגם שימושיות.
האותיות CHSH מתייחסות למחברים — John Clauser, Michael Horne, Abner Shimony, ו-Richard Holt — של מאמר מ-1969 שבו הדוגמה תוארה לראשונה. הם לא תיארו את הדוגמה כמשחק, אלא כניסוי. אך התיאור שלה כמשחק הוא גם טבעי וגם אינטואיטיבי.
משחק ה-CHSH נמנה על סוג משחקים הידוע בשם משחקים א-לוקאליים. משחקים א-לוקאליים מרתקים להפליא ויש להם קשרים עמוקים לפיזיקה, למדעי המחשב ולמתמטיקה — ועדיין מסתירים תעלומות שלא נפתרו. נפתח את החלק בהסבר מהם משחקים א-לוקאליים, ואז נתמקד במשחק ה-CHSH ובמה שהופך אותו למעניין.
משחקים לא-מקומיים
משחק לא-מקומי הוא משחק שיתופי שבו שני שחקנים, אליס ובוב, עובדים יחד כדי להשיג תוצאה מסוימת. המשחק מנוהל על ידי שופט, שמתנהג לפי כללים מחמירים הידועים לאליס ולבוב.
אליס ובוב יכולים להתכונן למשחק כרצונם, אך ברגע שהמשחק מתחיל הם אסורים לתקשר. אפשר לדמיין את המשחק מתרחש במתקן מאובטח כלשהו — כאילו השופט ממלא את תפקיד הבלש ואליס ובוב הם חשודים שנחקרים בחדרים נפרדים. אבל דרך נוספת לחשוב על המצב היא שאליס ובוב מופרדים במרחק עצום, ותקשורת אסורה כי מהירות האור אינה מאפשרת אותה בתוך זמן ריצת המשחק. כלומר, אם אליס מנסה לשלוח הודעה לבוב, המשחק יסתיים עד שהוא יקבל אותה, וכן להיפך.
אופן פעולתו של משחק לא-מקומי הוא שהשופט שואל קודם כל את אליס ואת בוב שאלה אחת לכל אחד. נשתמש באות לציון השאלה של אליס ו- לציון השאלה של בוב. כאן אנחנו חושבים על ו- כמצבים קלאסיים, ובמשחק CHSH ה- וה- הם ביטים.
השופט משתמש באקראיות כדי לבחור את השאלות. ליתר דיוק, קיימת הסתברות המשויכת לכל זוג אפשרי של שאלות, והשופט נדר לבחור את השאלות באקראי, בזמן המשחק, בדרך זו. כולם, כולל אליס ובוב, יודעים את ההסתברויות הללו — אך אף אחד לא יודע בדיוק איזה זוג ייבחר עד שהמשחק מתחיל.
ל אחר שאליס ובוב מקבלים את שאלותיהם, עליהם לספק תשובות: התשובה של אליס היא והתשובה של בוב היא שוב, אלו מצבים קלאסיים בכלל, וביטים במשחק CHSH.
בשלב זה השופט מקבל החלטה: אליס ובוב או מנצחים או מפסידים בהתאם לשאלה האם זוג התשובות נחשב נכון לזוג השאלות לפי קבוצת כללים קבועה. כללים שונים פירושם משחקים שונים, והכללים של משחק CHSH בפרט מתוארים בסעיף שאחרי זה. כפי שכבר הוצע, הכללים ידועים לכולם.
הדיאגרמה הבאה מספקת ייצוג גרפי של האינטראקציות.

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

התשובה היא כן, וזו הנקודה העיקרית של הדוגמה ומדוע היא כל כך מעניינת. אז בואו נראה בדיוק כיצד אליס ובוב יכולים לעשות טוב יותר במשחק הזה באמצעות שזירה.
וקטורים ומטריצות נדרשים
הדבר הראשון שעלינו לעשות הוא להגדיר וקטור מצב Qubit לכל מספר ממשי (שנחשוב עליו כזווית הנמדדת ברדיאנים) כדלקמן.
הנה כמה דוגמאות פשוטות:
יש לנו גם את הדוגמאות הבאות, המופיעות בניתוח שלהלן:
כשמסתכלים על הצורה הכללית, רואים שהמכפלה הפנימית בין כל שניים מהוקטורים האלה היא לפי הנוסחה:
בפירוט, בוקטורים האלה יש רק ערכים של מספרים ממשיים, כך שאין צורך לדאוג לצמודים מרוכבים: המכפלה הפנימית היא מכפלת הקוסינוסים ועוד מכפלת הסינוסים. שימוש באחת נוסחאות חיבור הזוויות מטריגונומטריה מוביל לפישוט שלמעלה. נוסחה זו מגלה את הפרשנות הגיאומטרית של המכפלה הפנימית בין וקטורים יחידה ממשיים כקוסינוס הזווית ביניהם.
אם נחשב את המכפלה הפנימית של מכפלת הטנסור של כל שניים מהוקטורים האלה עם המצב נקבל ביטוי דומה, רק שיש בו במכנה:
העניין שלנו במכפלה פנימית מסוימת זו יתברר בקרוב, אבל כעת אנחנו פשוט מציינים זאת כנוסחה.
לאחר מכן, נגדיר מטריצה אוניטרית לכל זווית כדלקמן.
באופן אינטואיטיבי, מטריצה זו ממירה את ל- ואת ל- כדי לבדוק שזוהי מטריצה אוניטרית, תצפית מפתח היא שהוקטורים ו- הם ניצבים לכל זווית :
לפיכך, אנחנו מוצאים ש
אנחנו יכולים לחלופין לכתוב מטריצה זו במפורש כ
זוהי דוגמה למטריצת סיבוב, ובפרט היא מסובבת וקטורים דו-ממדיים עם ערכים ממשיים בזווית סביב הראשית. אם נאמץ מוסכמה סטנדרטית לשמות ולפרמטריזציה של סיבובים בצורות שונות, יש לנו כאשר
תיאור האסטרטגיה
עכשיו נוכל לתאר את האסטרטגיה הקוונטית.
-
הגדרה: אליס ובוב מתחילים את המשחק בשיתוף e-bit: אליס מחזיקה Qubit בוב מחזיק Qubit ויחד שני ה-Qubits נמצאים במצב .
-
פעולות אליס:
- אם אליס מקבלת את השאלה היא מפעילה על ה-Qubit שלה
- אם אליס מקבלת את השאלה היא מפעילה על ה-Qubit שלה
הפעולה שאליס מבצעת על ניתנת לתיאור לחלופין כך:
לאחר שאליס מפעילה את הפעולה, היא מודדת את במדידת בסיס סטנדרטית ומגדירה את תשובתה להיות תוצאת המדידה.
-
פעולות בוב:
- אם בוב מקבל את השאלה הוא מפעיל על ה-Qubit שלו
- אם בוב מקבל את השאלה הוא מפעיל על ה-Qubit שלו
כפי שעשינו עבור אליס, נוכל לבטא את הפעולה של בוב על כך:
לאחר שבוב מפעיל את הפעולה, הוא מודד את במדידת בסיס סטנדרטית ומגדיר את תשובתו להיות תוצאת המדידה.
הנה דיאגרמת Circuit קוונטי המתארת את האסטרטגיה הזאת:

בדיאגרמה זו אנחנו רואים שני Gate-ים מבוקרים רגילים, אחד עבור בחלק העליון ואחד עבור בחלק התחתון. יש לנו גם שני Gate-ים שנראים כמו Gate-ים מבוקרים, אחד עבור בחלק העליון ואחד עבור בחלק התחתון, אלא שהעיגול המייצג את הבקרה אינו ממולא. זה מציין סוג שונה של Gate מבוקר שבו ה-Gate מתבצע אם הבקרה מוגדרת ל- (ולא כמו ב-Gate מבוקר רגיל). כך, למעשה, בוב מבצע על ה-Qubit שלו אם ו- אם ואליס מבצעת על ה-Qubit שלה אם ו- אם שזה עקבי עם תיאור הפרוטוקול במילים שלמעלה.
נותר להבין עד כמה האסטרטגיה הזאת עובדת עבור אליס ובוב. נעשה זאת על ידי מעבר על ארבעת זוגות השאלות האפשריים בנפרד.
ניתוח מקרה-אחר-מקרה
-
מקרה 1:
במקרה זה אליס מבצעת על ה-Qubit שלה ובוב מבצע על ה-Qubit שלו, כך שמצב שני ה-Qubits לאחר שהם מבצעים את פעולותיהם הוא
לפיכך, ההסתברויות לארבעת זוגות התשובות האפשריות הן כדלקמן.
אז אנחנו יכולים לקבל את ההסתברויות ש- וש- על ידי סכימה.
עבור זוג השאלות אליס ובוב מנצחים אם ולכן הם מנצחים במקרה זה בהסתברות
-
מקרה 2:
במקרה זה אליס מבצעת על ה-Qubit שלה ובוב מבצע על ה-Qubit שלו, כך שמצב שני ה-Qubits לאחר שהם מבצעים את פעולותיהם הוא
ההסתברויות לארבעת זוגות התשובות האפשריות הן לכן כדלקמן.
שוב, אנחנו יכולים לקבל את ההסתברויות ש- וש- על ידי סכימה.
עבור זוג השאלות אליס ובוב מנצחים אם ולכן הם מנצחים במקרה זה בהסתברות
-
מקרה 3:
במקרה זה אליס מבצעת על ה-Qubit שלה ובוב מבצע על ה-Qubit שלו, כך שמצב שני ה-Qubits לאחר שהם מבצעים את פעולותיהם הוא
ההסתברויות לארבעת זוגות התשובות האפשריות הן לכן כדלקמן.
שוב אנחנו מוצאים שההסתברויות ש- וש- הן כדלקמן.
עבור זוג השאלות אליס ובוב מנצחים אם כך שהם מנצחים במקרה זה בהסתברות
-
מקרה 4:
המקרה האחרון שונה במקצת, כפי שנצפה משום שתנאי הניצחון שונה במקרה זה. כאשר וגם הם אליס ובוב מנצחים כאשר ו- הם שונים. במקרה זה אליס מבצעת על ה-Qubit שלה ובוב מבצע על ה-Qubit שלו, כך שמצב שני ה-Qubits לאחר שהם מבצעים את פעולותיהם הוא
ההסתברויות לארבעת זוגות התשובות האפשריות הן לכן כדלקמן.
ההסתברויות החליפו ביעילות מקומות ביחס לשלושת המקרים האחרים. אנחנו מקבלים את ההסתברויות ש- וש- על ידי סכימה.
עבור זוג השאלות אליס ובוב מנצחים אם ולכן הם מנצחים במקרה זה בהסתברות
הם מנצחים בכל מקרה באותה ההסתברות:
זוהי לכן ההסתברות שהם מנצחים בסך הכל. זה טוב בצורה משמעותית מכל מה שאסטרטגיה קלאסית יכולה לעשות במשחק זה; לאסטרטגיות קלאסיות יש הסתברות ניצחון מוגבלת ב- וזה הופך את זה לדוגמה מעניינת מאוד.
זוהי במקרה הסתברות הניצחון האופטימלית לאסטרטגיות קוונטיות; אין ביכולתנו לעשות טוב יותר מזה, לא משנה איזה מצב שזור או אילו מדידות נבחר. עובדה זו ידועה כאי-שוויון טסירלסון, על שם בוריס טסירלסון שהוכיח אותו לראשונה — ושתיאר לראשונה את ניסוי CHSH כמשחק.
תמונה גיאומטרית
ניתן לחשוב על האסטרטגיה המתוארת לעיל באופן גיאומטרי, מה שעשוי לסייע בהבנת היחסים בין הזוויות השונות שנבחרו עבור פעולות אליס ובוב.
מה שאליס עושה בפועל הוא לבחור זווית בהתאם לשאלתה ואז להפעיל על ה-Qubit שלה ולמדוד. באופן דומה, בוב בוחר זווית בהתאם ל- ואז הוא מפעיל על ה-Qubit שלו ומודד. בחרנו את ו- כדלקמן.
לעת עתה, בואו ניקח את ו- כשרירותיים. על ידי בחירת אליס למעשה מגדירה בסיס אורתונורמלי של וקטורים שנראה כך:

בוב עושה כנ"ל, אלא שהזווית שלו היא :

הצבעים של הוקטורים תואמים לתשובות של אליס ובוב: כחול עבור ואדום עבור
עכשיו, אם נשלב ביחד את ואת נקבל את הנוסחה