סימולטור מחשב קוונטי
כתוב מעגל קוונטי קטן ב- JavaScript, דמיין אותו ישירות בדפדפן שלך, ולראות את תרשים המעגל, ההסתברות וקטור המדינה. או לתאר חישוב ברמה גבוהה (למשל תוספת) ולצפות בו באופן אוטומטי הופך למעגל קוונטי אמיתי.
מודל רעש
מחשבים קוונטיים אמיתיים לא מתחשבים בצורה מושלמת: qubits הם רגישים מאוד לאבד חלק מהמידע שלהם (decoherence) באמצעות כל אינטראקציה לא רצויה עם הסביבה שלהם - חום, שדות אלקטרומגנטיים, qubiting שכנים. פעולות שער לעולם אינן מדויקות לחלוטין, ואפילו הקריאה הסופית יכולה להשתבש. סימולטור זה קובע בצורה אידיאלית כברירת מחדל; כאן אתה יכול לאפשר מודלים טיפוסיים של שגיאות ולצפות את ההשפעה שלהם ישירות בתוצאות.
תאר חישוב עם קוונטים.add, קוונטית.subtract, קוונטית.multiply, קוונטי.divide או קוונטי.random. Ctrl+ הכניסה מתחילה את הסימולציה. תיעוד מלא באמצעות כפתור "Documentation"
קוד זה נוצר באופן אוטומטי מקוד התוכנה לעיל וסימולציה ישירות. אתה יכול לערוך אותו כאן באופן ידני ולהפעיל אותו שוב.
המעגל שנוצר נערך באופן ידני. לכן, קבוצת הרישום בתרשים מוסתרת; הפעלת הקוד מעל שוב תכתב את השינויים הללו.
מקסימום 4000 דמויות שיטות קוונטיות זמינות: x, y, z, h, s, sdg, t, t, t, t, tdg, rx, ry, rz, cnot, cz, ccnot (alias: toffoli), חילופי, מדידה, לרוץ. Ctrl+ הכניסה מתחילה את הסימולציה.
המונחים:
נקודת המבט של הצעד מציגה את ההסתברויות וקטור המדינה בדיוק לאחר השער שנבחר. תוצאות הירי למטה תמיד חלות על המעגל המלא.
פורמט OpenQASM 2.0
OpenQASM 2.0 הוא פורמט ההחלפה הנפוץ עבור מעגלים קוונטיים והוא קורא על ידי צ'יסקיט, בין היתר. תגית: סימולטור זה קורא q0 הכי חשוב (שמאל) ואילו צ'יסקיט קורא q0(ב) ככל הפחות משמעותי – מחרוזת מעט נמדדת מופיעה שם.
ההסתברות
ההזדמנות למדוד כל מחרוזת קטנה אפשרית, כפי שנקבע בדיוק מן הווקטור הממלכתי. המונחים: q0 שמאל (כמעט משמעותי)
Bloch Spheres
המצב של כל qubit אינדיבידואלי כחץ במרחב Bloch: הקוטב הצפוני = |0⟩הקוטב הדרומי = |1⟩, equator = משקל שווה. אם החץ הוא בבירור קצר יותר מאשר רדיוס התחום, ל-qubit אין מצב טהור משלו - הוא מסבך עם נקודות אחרות. חץ קצר יכול לבוא גם מרעש: עם מודל רעש פעיל ה-qubit מאבד קוהרנטיות והחץ מתכווץ פנימה. sphere Noisy הוא נספח כאן - וקטור Bloch הוא בממוצע על מסלול הרעש. עם תצוגת השלבים לעיל, שער החצים נע לפי שער (ללא רעש בלבד).
תוצאות קטלניות
כמה פעמים כל מחרוזת קטנה באמת התרחשה במדידות המדוימות. עם מספר תוצאות אפשריות, המספרים מתפזרים באופן אקראי סביב ההסתברות המדויקת.
המדינה Vector
הגדלים המורכבים מאחורי ההסתברויות: הגודל הריבועי של אמפקט (אמיתי)² + דמיוני²) נותן את ההסתברות של המדינה.
| מדינה | חלק אמיתי | חלק דמיוני |
|---|
יסודות: איך זה עובד?
תוכנית ל-qubit פיזי
מחשב קוונטי אמיתי הוא יותר מאשר שבב. אלקטרוניקה בקרה קלאסית תרגם את המעגל לדופקים מדויקים. בדוגמה המוצגת, קירור, pump, qubit, ו לייזרי קראט מעצבים אותות אלה על שולחן אופטי ומכוונים אותם לתוך תא ריק מוגן. שם הם משתנים ומדידים את מצב ה-qubit; התוצאה המדידה חוזרת למחשב הקלאסי.
המונחים:
גם קצת קלאסית 0 או 1qubit יכול להתקיים גם בסופרפוזיציה של שתי מדינות הבסיס |0⟩ ו |1⟩עם כמה qubits, כל קובעי הבסיס כתובים כמחרוזת קטנה, למשל. |10⟩ עבור 2 המונחים: where q0 בסימולטור זה תמיד הדבר החשוב ביותר (שמאל)
סופרפוזיציה
qubit בסופרפוזיציה בו זמנית נושא מרכיבים של מספר מדינות בסיס. מרכיבים אלה מתוארים כמתפתחים מורכבים; הגודל הריבועי של amplitude נותן את ההסתברות להשיג את המדינה המקבילה למדידה.
אזור Bloch
מצב של qubit אחד יכול להיות ויזואליזציה כחץ בתחום: הקוטב הצפוני מייצג |0⟩הקוטב הדרומי |1⟩, וכל הנקודות על קו המשווה הן בעלות משקל שווה - השלב קובע את הכיוון לאורך קו המשווה שבו נקודות החצים. שערי הסיבוב rx, ryו rz לסובב את החץ סביב ציר בהתאמה, שערי שלב כמו S ו-T לסובב אותו סביב ציר Z. עם qubits מסובכים, החץ מתכווץ לכיוון מרכז התחום: ה-qubit הפרט אז כבר אין מצב טהור משלו - כה סבך הופך פשוטו כמשמעו.
מדד וצילומים
measureAll() מודדים את כל הקביטים בבת אחת ומסתיימים את המעגל. מאז מדידה אחת בלבד מניבה תוצאה אקראית אחת, המעגל נמדד באופן קונספטואלי "צילומים" פעמים עם "צילומים" עם run({ shots })כך שהתפלגות ההסתברות מופיעה כמכשיר. ההסתברויות המדויקות נקובות גם ישירות מן הווקטור של המדינה, ללא תלות באקראיות של היריות.
שער הממזר
השער האדמרד h(q) לוקח qubit ממדינה מוגדרת (|0⟩ או |1⟩) לסופרפוזיציה של |0⟩ ו |1⟩ על כך 50% / 50% כאשר נמדד.
שערי שלב: S & T
השערים s(q) ו t(q) אין לשנות את ההסתברות המדידה של qubit אחד; הם רק לסובב את השלב של |1⟩ ביקורת - S By 90T By 45הם רק מראים את ההשפעה שלהם בשילוב עם סופרפוזיציה: בין שני השערים האדמיראדים, השלב מחליט כיצד הגדלים משלבים או מבטלים (התערבות). גרסאות dagger sdg(q) ו tdg(q) לסובב בדיוק את הדרך הפוכה ו undo S ו- T. הכלל הוא: שני T לעשות S, שני S לעשות Z.
CNOT סיבוכים מותניים
CNOT שער השער cnot(control, target) הופך את המטרה ל-qubit בדיוק כאשר בקרת ה-qubit נמצאת במצב |1⟩אם qubit הבקרה הוא בסופרפוזיציה לפני כן, זה יכול ליצור סבך - שני ה-qubits כבר לא ניתן לתאר באופן עצמאי אחד מהשני, כמו למשל מדינת בל. אם qubit השליטה הוא במצב מוגדר, במקום זאת, CNOT רק עושה קצת מצב ללא סיבוכים. לא כל CNOT באופן אוטומטי יוצר סבך.
CZהיחס הסימטרי של CNOT
CZ שער השער cz(a, b) למנוע את הסימן של amplitude בדיוק כאשר שני qubits הם |1⟩בניגוד CNOTאין שליטה ואין יעד - השער פועל זהה בשני הקוויביטים, ולכן הוא נמשך שני דוטים מחוברים בתרשים. CZ ו CNOT ניתן להפוך אחד לשני: CNOT הוא CZ qubit היעד שלו מועבר דרך שער אדריד לפני ואחרי. CZ הוא אבן בניין מרכזית של אלגוריתמים רבים, כגון חיפוש גרוב.
GHZ מדינה: הסתבכו כשלישייה
GHZ המדינה (שנקראה לאחר גרינברגר, הורין וזייד) מרחיבה את עקרון מדינת בל לשלושה qubits: שער אחד האדמרד בתוספת שני CNOTs מסבך את כל השלושה כך המדידה רק מניבה רק מניבה רק מניבה. |000⟩ או |111⟩ אף פעם לא מעורב מחרוזת. אין ל-qubit מדינה משלה יותר; המידע נמצא אך ורק בקורלציה המשותפת.
אלגוריתם דויטש: היתרון הקוונטי הקטן ביותר
האלגוריתם דויטש עונה, עם הערכה אחת של אורקל לא ידוע, שאלה שעבורה מחשב קלאסי צריך שתי הערכות: האם הפונקציה קבועה או מאוזנת? הטריק הוא לשלוח את הקלט דרך האורקל בסופרפוזיציה - הודות להפרעה, התשובה לאחר מכן היא מקודמת באופן חד-משמעי בנקודת הקלט. העיקרון שמאחוריו (phase Kickback) נמצא בבסיס כמעט כל אלגוריתמי הקוונטים.
חיפוש ב-Goverr: Amplitudes
חיפוש גרובר מוצא כניסה מסומנים במערכת ללא הפרעה עם פחות שאילתות באופן משמעותי מאשר צורך קלאסי. אורקל מסמן את המדינה המבוקשת עם תפנית בשלב (כאן דרך a point) CZ שער), ואז מפעיל הדיפוזיה מדגים את האמרה המסומנת על חשבון כל האחרים. עם 2 qubits, השקיה אחת מספיקה כדי למדוד את הלהיט עם 100% הסתברות
תוספת בולטת: מ קוונטים.add() למעגל
עורך קוד התוכנה לעיל מתרגם quantum.add({ a, b }) לתוך מעגל של X, CNOTו CCNOT השערים (Toffoli) שמשכפלים תוספת קלאסית באופן רציונאלי לחלוטין: כל שער יכול להיות בלתי שווה בדיוק, כי שום מידע לא נמחק. A A A CCNOT שער (ccnot(c1, c2, target)(הופנה מהדף היעד qubit רק כאשר שתי נקודות השליטה הן |1⟩ - זה מספיק כמו אבן בניין כדי לבנות מחדש כל מעגל קלאסי, כולל סולם מלא עם לשאת. הקלטים A ו- B מוחזרים לראשונה כמדינות בסיס מוגדרות (ללא סופרפוזיציה) באמצעות שערי X. כי המעגל כולו עובר רק דרך מצבים מוגדרים במקום סופרפוזיציה, המדידה בסוף מניבה תוצאה אחת בדיוק עם תוצאה אחת. 100% הסתברות - הסכום הקלאסי הנכון. זו הסיבה quantum.add() מייצרת תוצאה דטרמיניסטית למרות הסימולציה הקוונטית, במקום כמה מדינות אפשריות עם הסתברות נמוכה יותר 100%.
קטגוריה: תוספת הפוכה
כי כל שער של מעגל קוונטי הוא בדיוק בלתי נמנע, מעגל הסולם המלא יכול להתבצע לאחור - והתוספת הופכת תת-קרקעית: quantum.subtract({ a, b }) משתמש בדיוק את שערי הסולם בסדר הפוך ובכך מצמיד − b. זה לא גימיק, אבל העיקרון הבסיסי של חישוב בלתי הפיך: שום צעד חישובי לא הורס מידע, כל צעד יכול להיות לא אחד. בגרסה זו, ≥ B נדרש כך שלא מתרחשת תוצאה שלילית.
המונחים: Quantum.multiply()
Multiplication כאן מופיע מאותו אבני בניין ניתוק כמו גם: לאחר שיטת הספר, גורם אוסיף מספר פעמים בעמדות משתנות - התאמת נקודות סט של גורם b. כל תוספת חלקית היא אותה סוללת ripple-carry הפוכה; הנושא זורם לתוך המוצר הבא בכל פעם. מכיוון שרישום התוצאות גדל עם המוצר, הגורמים מוגבלים 3 bits (0–7כאן - רק אז לעשות גורם, מוצר, לשאת qubit יחד כדי להיכנס סימולטור הזה 10 נקודות.
חילוק: quantum.divide()
גם החטיבה משתמשת רק בלוקים של בנייה הפוכה: quantum.divide({ a, b }) מבצע חלוקה ארוכה הבנויה מתחלפות, ניתוק מחדש של הדיודור מן הרשום הנותרים; התוצאה היא המכסה הנדרשת ו השאר (a = quotient · b + remainder). כי דיבידנד, divisor, מכס ו qubit הלוואה חייב להתאים את כולם 10 qubits יחד, החטיבה היא המבצע המגביל ביותר: bits(a) + bits(b) + bits(a÷b) + 1 ≤ 10 חייב להחזיק, ואת הדיודור b חייב להיות ≥ 1 (ללא חלוקה באפס). אם קלט לא מתאים לתקציב, העורך מדווח על כך במקום מחשוב.
אקראיות אמיתית: קוונטית.random()
מחשבים קלאסיים לא יכולים ליצור אקראיות אמיתית – "מספרי הבטן" שלהם מגיעים מאלגוריתמים determinסטים (פסודו-randomness). מחשב קוונטי יכול: quantum.random({ bits }) מכניס כל חלק לתוך 50/50 על-ידי שימוש בשער האדמרד, ורק המדידה מחליטה – באופן בסיסי לא צפוי – איזה ערך יוצא. על חומרה קוונטית אמיתית זה אקראיות אמיתית פיזית; סימולטור זה מחק אותו עם פסאודו-randomness של הדפדפן שלך.
סימולטור לעומת חומרה קוונטית אמיתית
סימולטור זה קובע את המדינה בדיוק באמצעות קידוד צף קלאסי בדפדפן שלך - זה רק עובד כי רק מעגלים קטנים מאוד עם עד 10 נקודות נחשבות כאן. מחשבים קוונטיים אמיתיים משתמשים בקביטים פיזיים, הם טעויות (decoherence, רעש), ואת היתרון שלהם רק מראה עם מעגלים גדולים יותר כי כבר לא ניתן לדמות קלאסית בפועל. כלי זה הוא כלי למידה, לא מעבד קוונטי אמיתי.