דלג לתוכן הראשי

Circuits

במדעי המחשב, מעגלים הם מודלים של חישוב שבהם מידע מועבר על גבי חוטים דרך רשת של שערים, המייצגים פעולות על המידע הנישא בחוטים. Quantum circuits הם מודל חישוב ספציפי המבוסס על מושג כללי יותר זה.

למרות שהמילה "מעגל" מתייחסת לרוב למסלול סגור, מסלולים מעגליים אינם מותרים למעשה במודלי המעגל של חישוב שנחקרים לרוב. כלומר, בדרך כלל אנחנו עוסקים במעגלים אציקליים כשאנחנו חושבים על מעגלים כמודלים חישוביים. Quantum circuits פועלים לפי דפוס זה; Circuit קוונטי מייצג סדרה סופית של פעולות שאינה יכולה להכיל לולאות משוב.

מעגלים בוליאניים

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

Example of a Boolean circuit

זרימת המידע לאורך החוטים היא משמאל לימין: החוטים בצד שמאל של הדיאגרמה המסומנים X\mathsf{X} ו-Y\mathsf{Y} הם ביטים של קלט, שכל אחד מהם יכול להיות מוגדר לכל ערך בינארי שנרצה, והחוט בצד ימין הוא הפלט. החוטים הביניים מקבלים את הערכים הנקבעים על ידי השערים, המוערכים משמאל לימין.

השערים הם שערי AND (מסומנים \wedge), שערי OR (מסומנים \vee), ושערי NOT (מסומנים ¬\neg). הפונקציות שמחושבות על ידי שערים אלה מוכרות כנראה לרבים מהקוראים, אך כאן הן מיוצגות בטבלאות ערכים:

a¬a0110abab000010100111abab000011101111\begin{array}{c} \begin{array}{c|c} a & \neg a\\ \hline 0 & 1\\ 1 & 0\\ \end{array}\\ \\ \\ \end{array} \qquad\quad \begin{array}{c|c} ab & a \wedge b\\ \hline 00 & 0\\ 01 & 0\\ 10 & 0\\ 11 & 1 \end{array} \qquad\quad \begin{array}{c|c} ab & a \vee b\\ \hline 00 & 0\\ 01 & 1\\ 10 & 1\\ 11 & 1 \end{array}

שני העיגולים הקטנים והמלאים על החוטים מיד לימין של השמות X\mathsf{X} ו-Y\mathsf{Y} מייצגים פעולות fan-out, שפשוט יוצרות עותק של כל ערך הנישא על החוט שעליו הן מופיעות, ומאפשרות להזין ערך זה למספר שערים. פעולות fan-out לא תמיד נחשבות לשערים בהקשר הקלאסי; לפעמים הן מטופלות כאילו הן "חינמיות" במובן מסוים. כאשר Boolean circuits מומרים ל-quantum circuits שקולים, לעומת זאת, אנחנו כן צריכים לסווג פעולות fan-out במפורש כשערים כדי לטפל בהן ולהתחשב בהן כראוי.

הנה אותו Circuit מוצג בסגנון הנפוץ יותר בהנדסת חשמל, המשתמש בסמלים מוסכמים לשערי AND, OR ו-NOT:

Boolean circuit in a classic style

לא נשתמש בסגנון זה או בסמלי שערים אלה יותר, אבל נשתמש בסמלים שונים לייצוג שערים ב-quantum circuits, שנסביר אותם כשנתקל בהם.

ה-Circuit הספציפי בדוגמה זו מחשב את ה-exclusive-OR (או XOR בקיצור), המסומן בסמל \oplus:

abab000011101110\begin{array}{c|c} ab & a \oplus b\\ \hline 00 & 0\\ 01 & 1\\ 10 & 1\\ 11 & 0 \end{array}

בדיאגרמה הבאה אנחנו בוחנים רק בחירה אחת של קלטים: X=0\mathsf{X}=0 ו-Y=1.\mathsf{Y}=1. כל חוט מסומן בערך שהוא נושא כדי שתוכלו לעקוב אחרי הפעולות. ערך הפלט הוא 11 במקרה זה, שהוא הערך הנכון ל-XOR: 01=1.0 \oplus 1 = 1.

Evaluating a Boolean circuit

שלוש הגדרות הקלט האחרות האפשריות ניתנות לבדיקה באופן דומה.

סוגים אחרים של מעגלים

כפי שנרמז לעיל, מושג ה-Circuit במדעי המחשב הוא כללי מאוד. לדוגמה, לפעמים מנתחים מעגלים שבהם החוטים נושאים ערכים שאינם 00 ו-11, וכן שערים המייצגים בחירות שונות של פעולות.

במעגלים אריתמטיים, למשל, החוטים עשויים לשאת ערכים שלמים בעוד השערים מייצגים פעולות אריתמטיות, כגון חיבור וכפל. הדיאגרמה הבאה מתארת Circuit אריתמטי שמקבל שני ערכי קלט משתנים (xx ו-yy) וכן קלט שלישי קבוע לערך 1.1. הערכים הנישאים על החוטים, כפונקציות של הערכים xx ו-y,y, מוצגים בדיאגרמה.

Example arithmetic circuit

אפשר גם לשקול מעגלים הכוללים אקראיות, כגון כאלה שבהם שערים מייצגים פעולות הסתברותיות.

Quantum circuits

במודל ה-quantum circuit, חוטים מייצגים qubits ושערים מייצגים פעולות על qubits אלה. נתמקד כרגע בפעולות שנתקלנו בהן עד כה, כלומר פעולות יוניטריות ומדידות בסיס סטנדרטי. כשנלמד על סוגים אחרים של פעולות קוונטיות ומדידות, נוכל להרחיב את המודל שלנו בהתאם.

הנה דוגמה פשוטה של Circuit קוונטי:

Simple quantum circuit

ב-Circuit זה, יש לנו Qubit בודד בשם X,\mathsf{X}, המיוצג על ידי הקו האופקי, וסדרה של שערים המייצגים פעולות יוניטריות על Qubit זה. בדיוק כמו בדוגמאות לעיל, זרימת המידע היא משמאל לימין — כך שהפעולה הראשונה שמבוצעת היא פעולת Hadamard, השנייה היא פעולת SS, השלישית היא עוד פעולת Hadamard, והפעולה הסופית היא פעולת TT. לכן הפעלת ה-Circuit כולו מפעילה את ההרכבה של פעולות אלה, THSH,T H S H, על ה-Qubit X.\mathsf{X}.

לפעמים נרצה לציין במפורש את מצבי הקלט או הפלט של מעגלים. לדוגמה, אם נפעיל את הפעולה THSHT H S H על המצב 0,\vert 0\rangle, נקבל את המצב 1+i20+121.\frac{1+i}{2}\vert 0\rangle + \frac{1}{\sqrt{2}} \vert 1 \rangle. ניתן לציין זאת כך:

Simple quantum circuit evaluated

Quantum circuits מתחילים לרוב כשכל ה-qubits מאותחלים ל-0,\vert 0\rangle, כפי שיש לנו במקרה זה, אך יש גם מצבים שבהם ה-qubits בקלט מוגדרים במצבים שונים. הנה דוגמה נוספת של Circuit קוונטי, הפעם עם שני qubits:

Quantum circuit that creates an e-bit

כרגיל, השער המסומן HH מתייחס לפעולת Hadamard, בעוד השער השני הוא פעולת controlled-NOT: העיגול המלא מייצג את הqubit שליטה והעיגול הדומה לסמל \oplus מציין את הqubit יעד.

לפני שנבחן Circuit זה בפירוט רב יותר ונסביר מה הוא עושה, חיוני שנבהיר תחילה כיצד qubits מסודרים ב-quantum circuits. זה קשור למוסכמה שבה Qiskit משתמש לשמות ולסדר מערכות שהוזכרה בקצרה בשיעור הקודם.

מוסכמת סדר ה-qubit של Qiskit עבור מעגלים

ב-Qiskit, ה-qubit העליון ביותר בדיאגרמת Circuit מקבל אינדקס 00 ומתאים למיקום הימני ביותר בצינור של qubits (או במחרוזת, מכפלה קרטזית, או מכפלת טנסור המתאימה לצינור זה), ה-qubit שני מלמעלה מקבל אינדקס 1,1, ומתאים למיקום שני מימין בצינור, וכן הלאה. ה-qubit התחתון ביותר, שיש לו האינדקס הגבוה ביותר, מתאים לכן למיקום השמאלי ביותר בצינור. בפרט, שמות ברירת המחדל של Qiskit עבור qubits ב-Circuit של nn qubits מיוצגים על ידי ה-nn-צינור (qn1,,q0),(\mathsf{q_{n-1}},\ldots,\mathsf{q_{0}}), כאשר q0\mathsf{q_{0}} הוא ה-Qubit בחלק העליון ו-qn1\mathsf{q_{n-1}} בתחתית בדיאגרמות circuit קוונטי.

שים לב שזהו היפוך של המוסכמה הנפוצה יותר לסדר qubits במעגלים, והוא מקור תכוף לבלבול. מידע נוסף על מוסכמת סדר זו ניתן למצוא בדף התיעוד Bit-ordering in Qiskit.

למרות שלפעמים אנחנו סוטים מהשמות ברירת המחדל הספציפיים q0,,qn1\mathsf{q_{0}},\ldots,\mathsf{q_{n-1}} שבהם Qiskit משתמש עבור qubits, תמיד נפעל לפי מוסכמת הסדר המתוארת לעיל בפרשנות דיאגרמות circuit לאורך קורס זה. לפיכך, הפרשנות שלנו ל-Circuit לעיל היא שהוא מתאר פעולה על זוג qubits (X,Y).(\mathsf{X},\mathsf{Y}). אם הקלט ל-Circuit הוא מצב קוונטי ψϕ,\vert\psi\rangle \otimes \vert\phi\rangle, למשל, אז פירוש הדבר הוא שה-Qubit התחתון X\mathsf{X} מתחיל במצב ψ\vert\psi\rangle וה-Qubit העליון Y\mathsf{Y} מתחיל במצב ϕ.\vert\phi\rangle.

כדי להבין מה ה-Circuit עושה, נעבור משמאל לימין דרך פעולותיו.

  1. הפעולה הראשונה היא פעולת Hadamard על Y\mathsf{Y}:

    First operation e-bit creator

    כשמפעילים שער על Qubit בודד כזה, שום דבר לא קורה ל-qubits האחרים (שהוא Qubit אחד נוסף בלבד במקרה זה). כלום לא קורה זה שקול לפעולת הזהות שמתבצעת. המלבן המנוקד בדיאגרמה לעיל מייצג לכן פעולה זו:

    IH=(121200121200001212001212). \mathbb{I}\otimes H = \begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} & 0 & 0\\[2mm] \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} & 0 & 0\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{pmatrix}.

    שים לב שמטריצת הזהות נמצאת בצד שמאל של מכפלת הטנסור ו-HH בצד ימין, דבר שעקבי עם מוסכמת הסדר של Qiskit.

  2. הפעולה השנייה היא פעולת controlled-NOT, כאשר Y\mathsf{Y} הוא השליטה ו-X\mathsf{X} הוא היעד:

    Second operation e-bit creator

    פעולת שער controlled-NOT על מצבי בסיס סטנדרטי היא כדלקמן:

    Controlled-NOT gate

    בהתחשב שאנחנו מסדרים את ה-qubits כ-(X,Y),(\mathsf{X}, \mathsf{Y}), כאשר X\mathsf{X} נמצא בתחתית ו-Y\mathsf{Y} בראש ה-Circuit שלנו, ייצוג המטריצה של שער controlled-NOT הוא:

    (1000000100100100). \begin{pmatrix} 1 & 0 & 0 & 0\\[2mm] 0 & 0 & 0 & 1\\[2mm] 0 & 0 & 1 & 0\\[2mm] 0 & 1 & 0 & 0 \end{pmatrix}.

הפעולה היוניטרית שמיושמת על ידי ה-Circuit כולו, שנקרא לה U,U, היא ההרכבה של הפעולות:

U=(1000000100100100)(121200121200001212001212)=(121200001212001212121200).U = \begin{pmatrix} 1 & 0 & 0 & 0\\[2mm] 0 & 0 & 0 & 1\\[2mm] 0 & 0 & 1 & 0\\[2mm] 0 & 1 & 0 & 0 \end{pmatrix} \begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} & 0 & 0\\[2mm] \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} & 0 & 0\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{pmatrix} = \begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} & 0 & 0\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}}\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\[2mm] \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} & 0 & 0 \end{pmatrix}.

בפרט, בזכרנו את הסימון שלנו למצבי Bell,

ϕ+=1200+1211ϕ=12001211ψ+=1201+1210ψ=12011210,\begin{aligned} \vert \phi^+ \rangle & = \frac{1}{\sqrt{2}} \vert 0 0 \rangle + \frac{1}{\sqrt{2}} \vert 1 1 \rangle \\[2mm] \vert \phi^- \rangle & = \frac{1}{\sqrt{2}} \vert 0 0 \rangle - \frac{1}{\sqrt{2}} \vert 1 1 \rangle \\[2mm] \vert \psi^+ \rangle & = \frac{1}{\sqrt{2}} \vert 0 1 \rangle + \frac{1}{\sqrt{2}} \vert 1 0 \rangle \\[2mm] \vert \psi^- \rangle & = \frac{1}{\sqrt{2}} \vert 0 1 \rangle - \frac{1}{\sqrt{2}} \vert 1 0 \rangle, \end{aligned}

נמצא כי

U00=ϕ+U01=ϕU10=ψ+U11=ψ.\begin{aligned} U \vert 00\rangle & = \vert \phi^+\rangle\\ U \vert 01\rangle & = \vert \phi^-\rangle\\ U \vert 10\rangle & = \vert \psi^+\rangle\\ U \vert 11\rangle & = -\vert \psi^-\rangle. \end{aligned}

Circuit זה לכן מספק לנו דרך ליצור את המצב ϕ+\vert\phi^+\rangle אם נריץ אותו על שני qubits מאותחלים ל-00.\vert 00\rangle. באופן כללי יותר, הוא מספק לנו דרך להמיר את הבסיס הסטנדרטי לבסיס Bell. (שים לב שלמרות שזה לא חשוב לדוגמה זו, גורם הפאזה 1-1 על המצב האחרון, ψ,-\vert \psi^-\rangle, ניתן לסילוק אם נרצה על ידי הוספה קטנה ל-Circuit. לדוגמה, יכולנו להוסיף שער controlled-ZZ בהתחלה, שדומה לשער controlled-NOT אלא שפעולת ZZ מופעלת על ה-qubit היעד במקום פעולת NOT כאשר השליטה מוגדרת ל-1.1. לחלופין, יכולנו להוסיף שער swap בסוף. כל אחת מהבחירות מסלקת את סימן המינוס מבלי להשפיע על פעולת ה-Circuit על שלושת מצבי הבסיס הסטנדרטי האחרים.)

בדרך כלל, quantum circuits יכולים להכיל כל מספר של חוטי qubit. נוכל גם לכלול חוטים של סיביות קלאסיות, המסומנים בקווים כפולים, כמו בדוגמה זו:

Example circuit with measurements

כאן יש לנו שער Hadamard ושער controlled-NOT על שני qubits X\mathsf{X} ו-Y,\mathsf{Y}, בדיוק כמו בדוגמה הקודמת. יש לנו גם שתי סיביות קלאסיות, A\mathsf{A} ו-B,\mathsf{B}, וכן שני שערי מדידה. שערי המדידה מייצגים מדידות בסיס סטנדרטי: ה-qubits משתנים למצבים שלאחר המדידה, בעוד תוצאות המדידה נדרסות על הסיביות הקלאסיות שאליהן מצביעות החצים.

לרוב נוח לתאר מדידה כשער שמקבל Qubit כקלט ומפיק סיבית קלאסית (בניגוד להפקת ה-Qubit במצב שלאחר מדידתו וכתיבת התוצאה לסיבית קלאסית נפרדת). פירוש הדבר הוא שה-Qubit הנמדד הושלך וניתן להתעלם ממנו בבטחה לאחר מכן, מצבו השתנה ל-0\vert 0\rangle או 1\vert 1\rangle בהתאם לתוצאת המדידה.

לדוגמה, דיאגרמת ה-Circuit הבאה מייצגת את אותו התהליך כמו זה שבדיאגרמה הקודמת, אך כאשר אנחנו מתעלמים מ-X\mathsf{X} ו-Y\mathsf{Y} לאחר מדידתם:

Example circuit with measurements compact

ככל שהקורס ממשיך, נראה דוגמאות נוספות של quantum circuits, שבדרך כלל מורכבים יותר מהדוגמאות הפשוטות לעיל. הנה כמה דוגמאות לסמלים המשמשים לסימון שערים שמופיעים לעתים קרובות בדיאגרמות circuit:

  • שערים של Qubit בודד מוצגים בדרך כלל כריבועים עם אות המציינת את הפעולה, כך:

    Single-qubit gates

    שערי NOT (או שווה ערך, שערי XX) מסומנים לפעמים גם על ידי עיגול סביב סימן חיבור:

    Not gate

  • שערי swap מסומנים כדלקמן:

    Swap gate

  • שערים מבוקרים, כלומר שערים המתארים פעולות controlled-unitary, מסומנים על ידי עיגול מלא (המציין את השליטה) המחובר בקו אנכי לפעולה המבוקרת. לדוגמה, שערי controlled-NOT, שערי controlled-controlled-NOT (או Toffoli), ושערי controlled-swap (Fredkin) מסומנים כך:

    Controlled gate

  • פעולות יוניטריות שרירותיות על מספר qubits עשויות להיחשב כשערים. הן מתוארות על ידי מלבנים המסומנים בשם הפעולה היוניטרית. לדוגמה, הנה תיאור של פעולה יוניטרית (לא מוגדרת) UU כשער, יחד עם גרסה מבוקרת של שער זה:

    Arbitrary unitary gate together with controlled version