שער פרדקין

שער פרדקין (באנגלית: Fredkin Gate) הוא שער קוונטי המבוסס על שולשה קיוביטים. השער הומצא על ידי אדוארד (אד) פרדקין. השער ידוע גם כ-"שער החלפה מבוקר" (באנגלית: controlled-SWAP).
234x234 פיקסלים
== הגדרה ==
לשער שלוש כניסות ושלוש יציאות המוגדרות כך: כניסת בקרה (<math>C</math>), שתי כניסות מטרה (<math>I_1,I_2</math>) ושתי יציאות (<math>O_1,O_2</math>). מטרת השער היא לבצע החלפה בין שני הקיוביטים, אם ורק אם קיוביט הבקרה (<math>C</math>) דלוק.

=== דרך הפעולה ===
כאשר כניסת הבקרה (<math>C</math>) כבויה, השער מעתיק את <math>I_1</math> ל-<math>O_1</math>, ואת <math>I_2</math> ל-<math>O_2</math>. אולם, כאשר כניסת הבקרה (<math>C</math>) דולקת, השער מעתיק את <math>I_1</math> ל-<math>O_2</math>, ואת <math>I_2</math> ל-<math>O_1</math>. בנוסף, השער לא משפיע על קיוביט הבקרה (<math>C</math>). משום כך פעולת השער הפיכה ואינה מאבדת מידע בתהליך.

לכן גם מכונה שער זה כ-"שער החלפה מבוקר", מפני שהוא מחליף בין שני קיוביטים בתנאי (כלומר – שניתן להדליקו ולכבותו). 

=== ייצוג של השער בדרכים שונות ===

====== טבלת אמת ======
{| class="wikitable" align="center"
|-
! colspan="3" | כניסה
! colspan="3" | יציאה
|- align="center"
! C !! I<sub>1</sub> !! I<sub>2</sub>
! C !! O<sub>1</sub> !! O<sub>2</sub>
|- align="center"
| 0 || 0 || 0 
| 0 || 0 || 0 
|- align="center"
| 0 || 0 || 1 || 0 || 0 || 1 
|- align="center"
| 0 || 1 || 0 || 0 || 1 || 0 
|- align="center"
| 0 || 1 || 1 || 0 || 1 || 1 
|- align="center"
| 1 || 0 || 0 || 1 || 0 || 0 
|- align="center"
| 1 || 0 || 1 || 1 || 1 || 0
|- align="center"
| 1 || 1 || 0 || 1 || 0 || 1 
|- align="center"
| 1 || 1 || 1 || 1 || 1 || 1
|}

====== מטריצה מייצגת ======
<math>
\begin{bmatrix}
1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\
0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\
\end{bmatrix}
</math>

====== הגדרה לוגית ======
<math>S = ((I_1)\ \ XOR\ \ (I_2))\ AND\ (C)</math>

<math>O_1 = (I_1)\ \ XOR\ \ (S)</math>

<math>O_2 = (I_2)\ \ XOR\ \ (S)</math>

====== הגדרה בקוד (פייתון) ======
<syntaxhighlight lang="python3" line="1">
def fredkin(i_1: bool, i_2: bool, c: bool):
 """שער פרדקין עבור מערכת קלאסית
 מחזיר: tuple באורך 3 כאשר (o_1, o_2, c)"""

 if c:
 return i_1, i_2, c
 else:
 return i_2, i_1, c

</syntaxhighlight>

== שימושים ==

=== - מעגל סוכם לוגי מלא של שלושה קיוביטים ===
השער משמש ליצירת מעגלים לוגיים המסוגלים לסכום 3 קיוביטים שונים (כמתואר בהמשך).

== דוגמאות ==
דוגמה נפוצה לשימוש בשער פרדקין היא "מעגל סוכם לוגי מלא של 3 קיוביטים". המעגל מסוגל לסכום שלושה קיוביטים ולפלוט שני קיוביטים המתארים את סכומם כמספר בינארי.
שרטוט המעגל. הביטים 0 ו-1 הם קבועים (בתחילת ההרצה, ערכיהם יהיהו 0 ו-1 בהתאמה). הביטים p, q ו-r מייצגים את המשתנים הנסכמים (באופן קלאסי, יוכל כל משתנה לייצג את המספר 0 או המספר 1). פלט הבקרה אינו משנה את הקיוביטים המקוריים (קרי p ו-q). בנוסף, פלט האשפה חסר משמעות ומהווה תוצר לוואי של אלגוריתם המעגל. איחוד תוצאות הפלטים: "זוגיות" ו-"שארית", משמעו מספר הסכום בבינארית (כאשר "זוגיות" מסמן את הספרה הראשונה, ו-"שארית" את הספרה השנייה. למשל, עבור הסכום '2', "זוגיות" יהיה כבוי ו-"שארית" יהיה דלוק).]] 

== ראו גם ==

* שערים קוונטיים
* מחשוב קוונטי
* מכניקת הקוונטים
* שערים לוגיים

קטגוריה:חישוב קוונטי