מיפוי
צפה בסרטון על מיפוי של אוליביה ליינס, או פתח את הסרטון בחלון נפרד ב-YouTube.
מבוא
בשיעור זה נתמקד בצעד הראשון והמאתגר לעיתים קרובות ביותר בהגדרת תוכנית קוונטית: מיפוי בעיה להרצה על מחשב קוונטי. צעד זה עוסק בכיצד משתמש מתחיל מבעיה חישובית ומתרגם אותה למשהו שניתן לפתור על מחשב קוונטי.
בשיעורים 2 ו-3 של קורס זה ציינו שהשלב של מיפוי הוא הראשון מבין ארבעה שלבים כוללים במסגרת Qiskit patterns. משיעורים אלה ייתכן שאתה זוכר שמטרת המיפוי היא לתרגם או לשכתב בעיה חישובית לפונקציית עלות או ערך ציפייה שאנחנו יכולים להעריך באמצעות מחשב קוונטי.
בשיעור 3 דנו בדוגמה קונקרטית אחת עם Max-Cut, בעיה קשה חישובית אך נפוצה מאוד באופטימיזציה קומבינטורית. בדוגמה ההיא עברנו על מספר שלבים לתרגום בעיית הגרף ההתחלתית לבעיה שניתן לפתור על מח שב קוונטי. הפכנו את בעיית מציאת מספר החתכים המקסימלי בגרף לפונקציית עלות, שכתבנו את פונקציית העלות כהמילטוניאן, ואז הכנו מצב קוונטי ניסיוני שמצב הבסיס שלו תאם לחתך המקסימלי. לבסוף, בנינו Circuit קוונטי המייצג את מצב המצב הקוונטי הניסיוני הרצוי, ואז הוספנו את ה-Gate-ים הספציפיים כדי לאפשר לסטייט לאבולב עם הזמן. רצף שלבים זה היה כולו חלק מהמיפוי. בעוד שהשלבים המדויקים היו ייחודיים לבעיית Max-Cut, ניתן ליישם את אותה הנוהל הכללי על יישומים רבים אחרים, כגון כימיה קוונטית וסימולציות קוונטיות.
מיפוי יכול להיות קשה. אין אסטרטגיה אחת שמתאימה לכולם לכל בעיה בודדת, כך שזה יכול להיות מאיים. בשיעור זה נסתכל על כמה שיקולים כלליים למיפוי, ואז נצלול לתוך כמה בעיות דוגמה מייצגות כדי להדגים את הדרכים השונות למיפוי בעיה למחשב קוונטי.
שיקולים כלליים
בעוד שהאסטרטגיה המדויקת שבה משתמשים למיפוי בעיה למחשב קוונטי תלויה בבעיה שבידינו, הן בדרך כלל מגשימות כמה דברים עיקריים.
ראשית, ייתכן שתצטרך לפשט את הבעיה כדי להפוך אותה לאפשרית. זה לא ייחודי לקוונטי – כל הדיסציפלינות המדעיות משתמשות במודלים פשוטים כדי לחקור תופעות שהן מתעניינות בהן, תוך התעלמות מפרטים לא רלוונטיים. בפיזיקה, יש ביטוי מפורסם שמביא עיקרון זה לקיצוניות: "הנח פרה כדורית". לעיתים קרובות קשה מדי לתאר מערכת בדיוק כפי שהיא נראית, אך אנחנו יכולים במקום זאת לבצע פישוטים סבירים שיכולים עדיין להוביל לפתרונות מועילים. כמה דוגמאות כיצד אנחנו עשויים לעשות זאת בחישוב קוונטי הן הגבלת הגודל או עומק ה-Circuit על ידי בחירת ansatz יעיל לחומרה, קיטוע אבולוציות זמן מורכבות, או הזנחת איברי ההמילטוניאן התורמים מעט לאנרגיה הסופית של מצב קוונטי.
שנית, מיפוי כרוך בכתיבת הבעיה באופן שמחשב קוונטי יוכל להבין. לעיתים קרובות זה כרוך בשאלת שלוש שאלות אלה:
- מה ייצגו ה-Qubit-ים שלנו במודל שלנו?
- האם הבעיה שלנו רציפה? מכיוון שמחשבים קוונטיים הם דיגיטליים, אם הבעיה רציפה, נצטרך למצוא דרך לדגם אותה.
- לבסוף, האם הטופולוגיה של הבעיה מתיישרת עם הטופולוגיה של החומרה? אם לא, ייתכן שנצטרך ליישם כמה טריקים כדי לגרום לזה לעבוד.
בואו נתמודד עם השאלה הראשונה, שנמצאת בלב רבות מהקשיים בהבנת מיפוי: מה יכול Qubit לייצג?
Qubit-ים יכולים לשמש לייצוג דברים רבים. הראשון, ואולי הפשוט ביותר, הוא צומת על גרף. גרפים משמשים להצגת קישוריות בסוגים רבים ושונים של בעיות מתמטיות, והצמתים הם אלמנט בסיסי המייצג נקודה או ישות בתוך רשת. בהתאם למה שהרשת כולה מייצגת, זה יכול להיות עיר, אדם, או פרומגנט בסריג.
Qubit-ים יכולים לשמש גם לייצוג בוזונים ופרמיונים, אם כי אזהיר כאן שQubit בודד לא בדיוק שווה לבוזון אחד או פרמיון אחד – זה קצת יותר מסובך מזה, כפי שנדון עוד יותר בשיעור.
עכשיו אנחנו מקבלים דוגמאות שהן קצת יותר מורכבות. למודלים האלה, כבר לא הגיוני לדבר במונחים של Qubit-ים בודדים, במקום זאת אנחנו צריכים קבוצות שלהם כדי להרכיב משהו פיזי. לדוגמה, קבוצת Qubit-ים, כאן מיוצגת על טופולוגיה של שושן כבד, יכולה לשמש לייצוג מיקומים גיאומטריים של חומצות אמינו; שרשראות פולימר. דוגמה נוספת היא הסימולציה של פיזור הדרון במודלי פיזיקת אנרגיה גבוהה, שניתן לעשות על ידי סימולציה של אבולוציית הזמן של חבילת גל הדרונית. במקרה זה, רגיסטר של Qubit-ים יכול לשמש לקידוד מצבים שונים של שדה קוונטי; מצב הוואקום של אותו שדה, או חבילת גל שמתפשטת על גבי הוואקום הזה.
אבל בנקודה זו דיברנו בצורה מופשטת מספיק על האתגר שלפנינו. בואו נסתכל על הדוגמאות האלה בפירוט.
דוגמאות מיפוי
Max-Cut
בואו נתחיל עם הדוגמה הראשונה שלנו. אחת מבעיות המיפוי הפשוטות ביותר היא זו שכבר כיסינו במידה מסוימת: דוגמת Max-Cut. בבעיה ההיא המיפוי היה די קל בשבילנו מכיוון ש-Qubit אחד היה שווה לצומת אחד על הגרף שלנו.
נזכור שכדי למפות את בעיית Max-Cut, הבענו את פונקציית העלות כהמילטוניאן באמצעות ניסוח QUBO. פונקציית עלות המילטוניאן היא פונקציה שמקודדת את הפתרון האופטימלי של הבעיה במצב הבסיס של ההמילטוניאן. כדי לבנות את ה-cost Hamiltonian, השתמשנו במחלקה SparsePauliOp ב-Qiskit כדי לציין את הקישוריות של הגרף שלנו, ושלב המיפוי לאופרטורים הקוונטיים נעשה. וה-Circuit הקוונטי היה פשוט ה-QAOA ansatz. לרענון, ראה את שיעור Utility-scale QAOA, שם אנחנו הולכים על כל זה בהרבה יותר פירוט.
בשיעור ההוא, אפילו בדוגמה של 100 Qubit ובקנה מידה של שימוש, קישוריות הגרף כבר התאימה לטופולוגיה של חומרת הסופרמוליכה שלנו. אז לא היינו צריכים לדאוג לכיצד להתמודד עם טופולוגיות שונות. אבל זה לא תמיד המקרה. אם היה לנו גרף מורכב יותר או מחובר יותר בצפיפות מהדוגמאות שהדגשנו עד כה, היינו צריכים ליישם סדרה של שערי SWAP כדי לשנות את הקישור יות האפקטיבית של החומרה. זה מטופל בשלב השני של Qiskit patterns, טרנספילציה, אבל יש לקחת אותו בחשבון אפילו בשלב המיפוי.
קיפול חלבונים
בואו נחקור דוגמה המעוצבת במאמר בשם "Resource-efficient quantum algorithm for protein folding", שנכתב על ידי IBM® ושותפים באוניברסיטת ניו סאות' ויילס.
קצת רקע ביוכימי: חלבונים הם מקרומולקולות המורכבות משרשראות ארוכות של חומצות אמינו. שרשראות אלה מתקפלות למבנים מורכבים המבצעים מגוון רחב של פונקציות ביולוגיות. קביעת המבנה של חלבון במרחב התלת-ממדי, והבנת הקשרים בין מבנה ותפקוד, הן מן הבעיות המאתגרות ביותר בביוכימיה כיום. חלבונים מתקפלים למבנים שימושיים בשל אינטראקציות בין חומצות אמינו. כאשר מבנה מסתחרר ומתקפל, חומצות אמינו שרחוקות זו מזו לאורך השרשרת עשויות להגיע זו ליד זו ועשויות לקיים אינטראקציה חזקה.
כדי לדגמן זאת על מחשב קוונטי, אנחנו צריכים המילטוניאן המתאר את כל האינטראקציות הללו בין חומצות האמינו. אז אנחנו יכולים לחזות את המבנה הסופי על ידי מציאת המצב שימזער את האנרגיה של ההמילטוניאן שלנו. כאן נתמק ד בכיצד שרשראות חומצות אמינו יכולות להיות מדוגמנות על מחשב קוונטי וכיצד אנחנו יכולים לקבל מרחקים בין-חומצת-אמינו לחישוב אנרגיות אינטראקציה. עם זה, נאסוף את כל התרומות הנחוצות להמילטוניאן הדרוש לסימולציה על מחשב קוונטי.
בחלבונים אמיתיים, חומצות אמינו יכולות לתפוס רצף רציף של מיקומים אפשריים. אולם, אנחנו הולכים להשתמש בפישוט ולהגביל אותם באמצעות מודל סריג, שבו כל חומצת אמינו תופסת נקודה על רשת. כאן, הסופרים השתמשו בסריג טטרהדרלי. הערה מהירה: כאן אנחנו מקודדים את כיוון הקשתות, לא את הצמתים עצמם כמו בבעיית Max-Cut. כל Qubit מייצג נתיב צעד-בודד אפשרי לאורך הרשת הטטרהדרלית. שים לב שלאתרים סמוכים יש תוית A או B בשל הכוונות השונות שלהם בסריג.
שרשרת החלבון מיוצגת כסדרה של פניות או כיוונים על הסריג הזה. כל פנייה בין חומצות אמינו יכולה להיות באחד מארבעה כיוונים, המתאימים לקשתות הטטרהדרון. ארבע הפניות האפשריות הללו מקודדות באמצעות ארבעה Qubit-ים למצבים 0001, 0010, 0100, או 1000.

בואו נסתכל על דוגמה בתרשים לעיל. בואו נמקם את חומצת האמינו הראשונה שלנו על הנקודה המסומנת "B" המסוגלת בעיגול א דום בסריג הטטרהדרלי שלנו. הכיוון לחומצת האמינו הראשונה עד השנייה הוא שרירותי מכיוון שניתן תמיד לסובב את המערכת כדי לגרום לקשת ההיא להצביע לכל כיוון שנרצה. אז, אנחנו יכולים למקם את חומצת האמינו השנייה על הנקודה שמתחת לראשונה המסומנת "A". זה לא כל כך קל לראות, אבל הנתיב מהשנייה לשלישית הוא גם שרירותי. כל שלוש הבחירות יביאו לכך שיהיו לנו שתי קשתות עם זווית של כ-109.5 מעלות ביניהן. בחירת הקשת השנייה הזו פשוט קובעת את האוריינטציה של החלבון שלנו במרחב. אז, ללא אובדן כלליות, אנחנו יכולים לבחור שהפניות הראשונות יהיו פשוט 0001 ו-0010.
עם הפישוטים האלה, תצורת שרשרת חומצות האמינו נתונה על ידי ביטוי זה:
עד כה, מיפינו את קשתות הטטרהדרון ל-Qubit-ים, וה-Circuit הקוונטי שלנו יהי ה ansatz. עכשיו אנחנו צריכים לשקול כיצד לקודד את האנרגיה של הבעיה להמילטוניאן, כדי שמצב הבסיס שלו ייתן לנו את דפוס הקיפול האופטימלי.
לכל תצורה נתונה, תהיה אנרגיה קשורה בשל אינטראקציות בין חומצות האמינו. אינטראקציות אלה חזקות ביותר כאשר שתי חומצות האמינו קרובות זו לזו. ברור שחומצות אמינו שסמוכות בשדרת השרשרת תמיד יקיימו אינטראקציה זו עם זו. אבל מכיוון שהחלבון יכול להסתחרר ולהתקפל, זוגות אחרים של חומצות אמינו יכולים גם כן לקיים אינטראקציה. חומצות אמינו 10 ו-20 עשויות בסופו של דבר להיות על אתרים סמוכים לאחר שהחלבון התקפל, לדוגמה. אז, אנחנו צריכים נוסחה לתאר את המרחק בין חומצות האמינו ו- באמצעות המידע המקודד על ה-Qubit-ים של התצורה. בדרך זו אנחנו יכולים להשתמש במרחק הפרדה שלהם כדי לקבוע עד כמה חזק הם מקיימים אינטראקציה.
ראשית, בואו נציג פונקציה המציינת אם קשת נמצאת בשימוש לפנייה בחומצת אמינו או לא. כאן יכול לקבל כל אחד מארבעת הכיוונים האפשריים. בהתבסס על התצורה שהתחלנו איתה לעיל, אנחנו יכולים לכתוב פונקציות אלה:
אז אנחנו יכולים להגדיר הפרש במספר הפניות עם תוית על סריגים A ו-B מאינדקס עד אינדקס כ-:
למה נעשה זאת? ובכן, מסתבר שפנייה של מאתר סריג A ל-B מבוטלת בדיוק על ידי פנייה של מאתר סריג B ל-A. אז כדי לדעת את המרחק שחומצת האמינו באתר נמצאת מזו שבאתר , אנחנו פשוט צריכים למצוא את ההפרש בין צעדים שנעשו לאורך קשתות מאתרים A ומאתרים B. מאחר שאתרי A ו-B מתחלפים בהכרח לאורך שדרת החלבון, זה נלכד ב-. אותו טיעון חל על כל ארבעת סוגי הקשתות. אז, ניתן לחשב את המרחק הכולל בין חומצות אמינו בצעדי סריג טטרהדרלי על ידי ביטוי זה:
אבל כיצד אנחנו מקבלים את ההמילטוניאן מהמשוואה הארוכה הזאת עבור המרחק הכולל בין חומצות האמינו? ראשית, אנחנו יכולים להמיר מהמרחק בצעדי סריג למרחב אוקלידי עם גיאומטריה פשוטה:
לאחר מכן, מרחקים אלה ישמשו לחישוב האנרגיה של תצורת החלבון. בהתאם למטרותינו, אנחנו עשויים לקבוע מרחק סף שמתחתיו מחשיבים את הזוג כמקיים אינטראקציה, או שאנחנו עשויים לעשות משהו מורכב יותר.
ייתכן שלא ברור, אבל למעשה סיימנו עם שלב המיפוי בכך. מצבי ה-Qubit-ים מציינים את "הפנייה" של החלבון בכל אתר סריג, ואוסף הפניות קובע את המרחק בין כל זוג חומצות אמינו. לזוגות של מינים שונים של חומצות אמינו יש אינטראקציות שונות, חלקן משיכה, חלקן דחייה. אם אתה משתמש בתצורה ובמרחקים רק כדי לקבוע אם אינטראקציות חומצות אמינו ידועות הן "פועלות" או "לא פועלות", עוצמות אלה כבר חושבו ואפשר פשוט לחפש אותן בטבלה כזו:

לסיכום, בדוגמה זו, ה-Qubit-ים משמשים לסימון צעדים בנתיב לאורך סריג, שיחד יוצרים שרשרת של חומצות אמינו. על ידי סימולציה של כיצד הן מתכופפות ומתקפלות אנחנו יכולים לקוות למצוא תוצאות טובות יותר במחקר רפואי. דילגנו על כיצד לחשב כמה איברים של ההמילטוניאן הזה מכיוון שהם היו ספציפיים מאוד לבעיה זו, בעוד שהגדרת כיוונים על סריג ניתנת ליישום יותר כללי. עכשיו לאחר שיש לך המילטוניאן כללי, אתה תמיד תרצה לתרגם אותו לאופרטורי פאולי, שהם טבעיים למחשב הקוונטי. על כך נדון בהמשך.
טרנספורמציית Jordan-Wigner
עכשיו בואו נחקור כיצד לתרגם מערכת של חלקיקים תת-אטומיים לאופרטורי פאולי.
חלקיקים תת-אטומיים מחולקים לשתי קטגוריות – בוזונים ופרמיונים. בוזונים, כמו פוטונים או ה-Higgs, מציתים קבוצה מסוימת של כללים סטטיסטיים. פרמיונים, כמו אלקטרונים או נייטרינוס, מציתים קבוצה אחרת. ההבדל העיקרי ביניהם הוא שבוזוני ם מורשים לתפוס את אותו מצב – אין הגבלה על כמה בוזונים יכולים להיות במצב הבסיס או בכל מצב מעורר. פרמיונים, לעומת זאת, הם אנוכיים – הם דורשים שלכל חלקיק יהיה מצב קוונטי משלו.
לבוזונים יש גם ספינות שלמות בעוד לפרמיונים יש ספין חצי-שלם, כמו אלקטרון עם ספין-1/2, וחלקיקים אקזוטיים יותר עם ספין-3/2. כדי לתאר מערכת של חלקיקים, אנחנו צריכים תיאור של האנרגיה שלהם. בואו נתמקד בפרמיונים. אנחנו יכולים להתחיל עם המילטוניאן שנכתב במונחים של מה שאנחנו קוראים אופרטורי c. אלה בעצם אובייקטים מתמטיים המתאימים ליצירה או השמדה של פרמיון ממצב במערכת. אלה נכתבים לרוב כ- ו-, כאשר הוא האופרטור שיוצר פרמיון במצב ו- הוא האופרטור שמשמיד פרמיון במצב .
אבל זכור, מחשבים קוונטיים בדרך כלל פועלים בבסיס Qubit עם כללים ספציפיים לייצוג מערכות פרמיוניות; הם לא עובדים באופן מובנה בשפה של אופרטורים פרמיוניים. כדי לגשר על הפער הזה, אנחנו צריכים למפות את הסימון הפרמיוני הזה לאופרטורי פאולי, שמתאימים באופן טבעי לשערי קוונטום.
ישנן מספר טרנספורמציות כאלה לפרמיונים. בחירה נפוצה היא טרנספורמציית Jordan-Wigner. המיפויים של Bravyi-Kitaev ו-parity הם קידוד פרמיוני עדכני יותר. אופרטורים בוזוניים ניתנים לטרנספורמציה באמצעות טרנספורמציית Holstein-Primakoff או מיפוי ישיר של מצבי Fock לתת-בסיס של המודים הבוזוניים הזמינים, בין אפשרויות אחרות. קידודים נוספים נחקרים גם כיום באופן פעיל. לעת עתה, אנחנו הולכים להתמקד רק בטרנספורמציית Jordan-Wigner.
טרנספורמציית Jordan-Wigner כרוכה במיפוי פרמיון בודד לQubit-ים רבים. מדוע אנחנו לא יכולים פשוט להקצות Qubit אחד לייצוג כל אלקטרון? זה קשור להבחנה של פרמיונים זהים. Qubit-ים ניתנים להבחנה ואלקטרונים לא. לדוגמה, אנחנו יכולים בקלות לתייג ולזהות Qubit-ים בודדים על כל מכשיר. אבל אי-ההבחנה של אלקטרונים אומר שאנחנו לא יכולים לתייג אותם בכלל. לכן, אנחנו למעשה צריכים לתייג את האופרטורים לפי אורביטלים תפוסים, כמו 1s, 2p, 2p, וכן הלאה, במקום אלקטרונים ספציפיים. אז, כל Qubit ממלא בערך את התפקיד של אורביטל במולקולה שתפוס או לא תפוס. אבל כיצד אנחנו עושים זאת הוא קצת יותר מורכב. מיפוי Jordan-Wigner עוקב אחר אנטי-סימטריה ומבטיח את הסטטיסטיקה הנכונה של המערכת הפרמיונית הכוללת. מיפוי Jordan-Wigner מבטא אופרטורים פרמיוניים במונחים של אופרטורי פאולי באמצעות יחסים אלה:
מיפוי Jordan-Wigner הוא פשוט מבחינה רעיונית בשל ההתאמה אחד לאחד בין אורביטלים ו-Qubit-ים. ישנם מיפויים נוספים המגשימים מטרה דומה, כולל מיפוי ה-parity. חישוב ה-parity של מצב דורש התייחסות ל-Qubit-ים מרובים. במיפוי ה-parity (ובחלק מהאחרים) הפרשנות של Qubit אחד המתאים לאורביטל אחד לא מחזיקה. עכשיו בואו נעבור על דוגמה פשוטה. נניח שאנחנו רוצים לחשב את האינטראקציה של Qubit בודד . אנחנו מתחילים על ידי הצבת ההגדרות שלנו עבור אופרטורי היצירה וההשמדה.
המחליף . אז, הביטוי הסופי הופך ל: