Відображення
Перегляньте відео про відображення від Олівії Лейнс або відкрийте відео в окремому вікні на YouTube.
Вступ
У цьому уроці ми зосередимося на першому — і нерідко найскладнішому — кроці при визначенні квантової програми: відображенні задачі на квантовий комп'ютер. Цей крок охоплює перетворення обчислювальної задачі на щось, що може розв'язати квантовий комп'ютер.
У другому та третьому уроках цього курсу ми вже згадували, що етап відображення є першим із чотирьох кроків фреймворку Qiskit patterns. З цих уроків ти пам'ятаєш, що мета відображення — транслювати обчислювальну задачу або переписати її у вигляді функції витрат або очікуваного значення, яке можна обчислити за допомогою квантового комп'ютера.
У третьому уроці ми розглянули конкретний приклад із Max-Cut — обчислювально складною, але поширеною задачею комбінаторної оптимізації. Ми пройшли кілька кроків: перетворили вихідну задачу на графі у функцію витрат, переписали її як Гамільтоніан, підготували пробний квантовий стан, основний стан якого відповідає максимальному розрізу. Нарешті, побудували квантову схему, що представляє цей пробний стан, і додали конкретні гейти для еволюції стану. Ця послідовність кроків — і є відображення. Хоча точні кроки специфічні для Max-Cut, той же загальний підхід застосовується до багатьох інших задач, наприклад квантової хімії та квантових симуляцій.
Відображення може бути складним. Не існує єдиного рецепту для кожної задачі, що може бути лячно. У цьому уроці ми розглянемо загальні міркування щодо відображення, а потім на конкретних прикладах покажемо різні способи відобразити задачу на квантовий комп'ютер.
Загальні міркування
Хоча конкретна стратегія відображення задачі на квантовий комп'ютер залежить від самої задачі, як правило, потрібно вирішити кілька основних завдань.
По-перше, може знадобитися спрощення задачі для забезпечення її розв'язності. Це не є специфікою квантових обчислень — усі наукові дисципліни використовують спрощені моделі для дослідження явищ, ігноруюч и неважливі деталі. У фізиці є відомий вираз, що доводить цей принцип до абсурду: «припустимо сферичну корову». Часто неможливо описати систему точно, але ми можемо зробити розумні спрощення, що все ж дають корисні результати. Деякі приклади в контексті квантових обчислень: обмеження розміру або глибини схеми шляхом вибору апаратно-ефективного ансатцу, зрізання складних часових еволюцій або відкидання доданків Гамільтоніана з малим внеском до кінцевої енергії.
По-друге, відображення передбачає запис задачі так, щоб квантовий комп'ютер міг її «зрозуміти». Зазвичай це означає відповіді на три запитання:
- Що будуть представляти кубіти в нашій моделі?
- Чи є задача неперервною? Оскільки квантові комп'ютери цифрові, неперервні задачі потрібно дискретизувати.
- Чи відповідає топологія задачі топології апаратного забезпечення? Якщо ні, можуть знадобитися спеціальні прийоми.
Розглянемо перше запитання, яке є серцем багатьох труднощів з відображенням: що може представляти кубіт?
Кубіти можуть представляти багато речей. Перше й, мабуть, найпростіше — вузол на графі. Графи показують зв'язність у різних математичних задачах, а вузли — фундаментальні елементи, що представляють точки або сутності в мережі. Залежно від того, що представляє вся мережа, це може бути місто, людина або феромагнетик у решітці.
Кубіти також можуть представляти бозони та ферміони, хоча тут застережу: один кубіт не дорівнює рівно одному бозону або ферміону — все трохи складніше, як ми обговоримо далі.
Тепер перейдемо до складніших прикладів. У цих моделях немає сенсу говорити про окремі кубіти — потрібні їхні групи для опису чогось фізичного. Наприклад, група кубітів на топології важкого шестикутника може представляти геометричні положення амінокислот, полімерні ланцюги. Ще один приклад — симуляція розсіювання адронів у фізиці високих енергій шляхом симуляції часової еволюції адронного хвильового пакету. У цьому випадку регістр кубітів кодує різні стани квантового поля: вакуумний стан або хвильовий пакет, що поширюється поверх вакууму.
Але досить абстрактних міркувань. Розглянемо ці приклади детально.
Приклади відображення
Max-Cut
Почнемо з першого прикладу. Одне з найпростіших відображень — те, що ми вже детально розглянули: Max-Cut. У цій задачі відображення було відносно простим: один кубіт відповідав одному вузлу графа.
Нагадаємо: для відображення Max-Cut ми виразили функцію витрат як Гамільтоніан за допомогою формулювання QUBO. Гамільтоніан функції витрат — функція, що кодує оптимальне рішення задачі в основному стані Гамільтоніана. Для побудови ми використовували клас SparsePauliOp у Qiskit для задання зв'язності графа, і відображення на квантові оператори було виконано. Квантова схема — просто ансатц QAOA. Для нагадування зверни увагу на урок Utility-scale QAOA, де все це розглянуто докладніше.
У тому уроці, навіть у масштабному 100-кубітному прикладі, зв'язність графа вже відповідала топології надпровідного апаратног о забезпечення — не потрібно було турбуватися про різні топології. Але так буває не завжди. Якби граф був більш складним або щільно зв'язаним, довелося б реалізувати серію SWAP-гейтів для зміни ефективної зв'язності апарата. Це обробляється на другому кроці Qiskit patterns (транспіляція), але варто враховувати вже на етапі відображення.
Фолдинг білків
Далі розглянемо приклад, змодельований у статті «Resource-efficient quantum algorithm for protein folding», написаній IBM® та співавторами з Університету Нового Південного Уельсу.
Трохи біохімії: білки — це макромолекули, що складаються з довгих ланцюгів амінокислот. Ці ланцюги згортаються у складні структури, що виконують широкий спектр біологічних функцій. Визначення тривимірної структури білка і розуміння зв'язку між структурою та функцією — одні з найскладніших задач сучасної біохімії. Білки згортаються в корисні структури завдяки взаємодіям між амінокислот ами. При скручуванні і складанні ланцюга амінокислоти, що знаходяться далеко одна від одної, можуть опинитися поряд і сильно взаємодіяти.
Щоб змоделювати це на квантовому комп'ютері, потрібен Гамільтоніан, що описує всі ці взаємодії. Тоді передбачення кінцевої структури зводиться до пошуку стану з мінімальною енергією. Ми зосередимося на тому, як ланцюги амінокислот моделюються на квантовому комп'ютері і як отримати відстані між амінокислотами для розрахунку енергій взаємодії. Так ми зберемо всі необхідні доданки Гамільтоніана.
У реальних білках амінокислоти можуть займати будь-яке положення в просторі. Але ми використаємо спрощення і обмежимо їх за допомогою моделі решітки, де кожна амінокислота займає точку сітки. Автори використовували тетраедричну решітку. Важливо: тут ми кодуємо напрямки ребер, а не самі вузли, як у Max-Cut. Кожен кубіт представляє можливий односкоковий шлях вздовж тетраедричної сітки. Сусідні вузли позначено A або B через різну орієнтацію в решітці.
Ланцюг білка представлено як серію поворотів або напрямків на цій решітці. Кожен поворот між амінокислотами може бути в одному з чотирьох напрямків, що відповідають ребрам тетраедра. Ці чотири можливі повороти кодуються чотирма кубітами у стани 0001, 0010, 0100 або 1000.

Розглянемо приклад на малюнку вище. Помістимо першу амінокислоту в точку з міткою «B», обведену червоним. Напрямок до другої амінокислоти довільний, оскільки систему завжди можна повернути. Тому можна помістити другу амінокислоту знизу від першої (у точці «A»). Третій вибір також довільний. Отже, без втрати загальності перші два повороти можна прийняти рівними 0001 і 0010.
З цими спрощеннями конфігурація ланцюга амінокислот задається виразом:
Отже, ми відобразили ребра тетраедра на кубіти, а квантова схема буде ансатцом. Тепер потрібно закодувати енергію задачі в Гамільтоніан, основний стан якого дає оптимальну конфігурацію.
Для будь-якої конфігурації існує асоційована енергія, зумовлена взаємодіями між амінокислотами. Найсильніші взаємодії — між сусідніми за ланцюгом амінокислотами. Але через складання білка амінокислоти, що далеко одна від одної в ланцюзі, можуть опинитися поруч. Тому потрібна формула для відстані між амінокислотами та через конфігураційні кубіти.
Введемо функцію , яка показує, чи використовується ребро для повороту в амінокислоті . Тут може приймати будь-який із чотирьох можливих напрямків. На основі вихідної конфігурації:
Потім визначимо різницю кількості поворотів типу на вузлах A і B від індексу до як :
Чому саме так? Поворот від вузла A до B точно компенсується поворотом від B до A. Тому відстань від амінокислоти до — просто різниця кроків по ребрах від вузлів A і B. Оскільки вузли A і B чергуються, це враховується множником . Аналогічно для всіх чотирьох типів ребер. Загальна відстань у кроках тетраедричної решітки:
Як перейти від цього виразу до Гамільтоніана? Спочатку перетворюємо відстань у кроках решітки на евклідову відстань:
Ці відстані використовуються для обчислення енергії конфігурації. Залежно від мети можна задати порогову відстань, нижче якої пара вважається взаємодіючою, або застосувати складнішу функцію.
Хоча може бути не очевидно, але на цьому кроці відображення фактично завершено. Стани кубітів позначають «поворот» білка в кожному вузлі решітки, а сукупність поворотів визначає відстань між будь-якою парою амінокислот. Пари різних амінокислот мають різні взаємодії — притягання або відштовхування. Якщо ти лише визначаєш, чи «включена» чи «виключена» відома взаємодія амінокислот, силу цих взаємодій уже розраховано і можна просто знайти в таблиці:

Підсумовуючи: у цьому прикладі кубіти використовуються для позначення кроків шляху вздовж решітки, які разом утворюють ланцюг амінокислот. Симулюючи їхнє згинання і складання, ми сподіваємося отримати кращі результати в медичних дослідженнях. Ми пропустили кілька доданків Гамільтоніана, оскільки вони є надто специфічними для цієї задачі, тоді як визначення напрямків на решітці є більш загальним підходом. Маючи загальний Гамільтоніан, завжди слід транслювати його в оператори Паулі, що є власними операторами квантового комп'ютера. Про це — далі.
Перетворення Джордана–Вігнера
Розглянемо, як транслювати систему субатомних частинок у оператори Паулі.
Субатомні частинки діляться на дві категорії: бозони і ферміони. Бозони (наприклад, фотони або бозон Хіггса) підпорядковуються певній статистиці. Ферміони (наприклад, електрони або нейтрино) — іншій. Ключова від мінність: кілька бозонів можуть займати один стан (немає обмежень на заповнення), тоді як ферміони «ревниво» вимагають, щоб кожна частинка мала власний квантовий стан.
Бозони мають цілий спін, ферміони — напівцілий (наприклад, спін-1/2 для електрона, спін-3/2 для екзотичніших частинок). Для опису системи частинок потрібен опис їхньої енергії. Зосередимося на ферміонах. Можна почати з Гамільтоніана, записаного через c-оператори — математичні об'єкти, що відповідають створенню або знищенню ферміона в стані системи. Їх позначають і : — оператор створення ферміона в стані , — оператор знищення в стані .
Але квантові комп'ютери, як правило, працюють у базисі кубітів зі специфічними правилами для представлення ферміонних систем; вони не є власне мовою ферміонних операторів. Щоб усунути цю прогалину, потрібно відобразити ферміонне позначення на оператори Паулі, які природно відповідають квантовим гейтам.
Існує кілька таких перетворень для ферміонів. Поширений вибір — перетворення Джордана–Вігнера. Відображення Бравого–Кітаєва та паритетне відображення є більш сучасними ферміонними кодуваннями. Бозонні оператори можна перетворити за допомогою перетворення Гольштейна–Примакова або безпосередньо відобразивши стани Фока на підбазис доступних бозонних мод. Зараз зосередимося лише на перетворенні Джордана–Вігнера.
Перетворення Джордана–Вігнера передбачає відображення одного ферміона на багато кубітів. Чому не просто призначити один кубіт для кожного електрона? Це пов'язано з невідрозрізнюваністю ідентичних ферміонів. Кубіти розрізнювані, а електрони — ні. Наприклад, окремі кубіти на будь-якому пристрої легко мітити та ідентифікувати. Але невідрозрізнюваність електронів означає, що їх взагалі не можна мітити. Тому доводиться мітити оператори відповідно до зайнятих орбіталей (1s, 2p тощо), а не конкретних електронів. Кожен кубіт грає приблизну роль орбіталі молекули — зайнятої або вільної. Відображення Джордана–Вігнера враховує антисиметрію і забезпечує правильну статистику всієї ферміонної системи. Відображення Джордана–Вігнера виражає ферміонні оператори через оператори Паулі за такими формулами:
Відображення Джордана–Вігнера концептуально просте завдяки відповідності «орбіталь — кубіт». Існують й інші відображення, зокрема паритетне, де один кубіт не відповідає одній орбіталі. Розглянемо простий приклад. Обчислимо однокубітну взаємодію . Підставимо визначення операторів народження та знищення:
Комутатор . Тому кінцевий вираз:
Ми успішно переписали ферміонний вираз у термінах операторів Паулі, зрозумілих квантовому комп'ютеру.
Коротко розглянемо реалізацію відображення Джордана–Вігнера в Qiskit. Важливо розуміти, як ці перетворення працюють, але вручну виконувати їх кожного разу — непрактично, особливо для великих систем. На щастя, Qiskit спрощує це завдяки функції SparsePauliOp.
Кроки:
- Використати функцію
from_listкласу SparsePauliOp для створення оператора одиниці, що відповідає розміру простору параметрів. - Слідуючи визначенням операторів народження та знищення, використати
from_listдля визначення операторів Паулі , , . Це відобразить ферміонні оператори на спінові оператори кубітів, кодуючи ферміонні числа заповнення у обчислювальний базис кубітів. - Згенерувати бажаний Гамільтоніан у базисі Паулі, застосовуючи операторів до орбіталей, що нас цікавлять. Зазвичай це передбачає створення одиничної матриці для «ядерних» (невзаємодіючих) орбіталей і застосування операторів народження та знищення до активного простору.
Тепер розглянемо складніший приклад. Пам'ятаєш статтю «Scalable Circuits for Preparing Ground States on Digital Quantum Computers: The Schwinger Model Vacuum on 100 Qubits» з попереднього уроку? Ми не будемо детально її аналізувати — лише зосередимося на відображенні Джордана–Вігнера, що використовується для вираження Гамільтоніана вузлів решітки з вузлами для моделі Швінгера за відсутності електричного поля.
Тут важко точно сказати, що представляє один кубіт, бо лише сукупність кубітів разом утворює щось фізичне — у нашому випадку хвильовий пакет. Грубо кажучи, кубіти можна розглядати як дискретизовані ділянки простору. Тут — об'єм решітки, де кожен елемент (одинична клітинка) містить два кубіти. Ферміонні оператори, що ми бачили раніше, описують амплітуди хвильової функції в конкретному вузлі. Гамільтоніан містить ці ферміонні оператори народження та знищення, і ми використовуємо перетворення Джордана–Вігнера для їхнього відображення на оператори Паулі.
де — оператор Паулі , а — Маючи Гамільтоніан у такому вигляді, найскладніша частина відображення завершена — тепер його легко записати у схему з операторами Паулі.
Висновок
Ми розглянули чотири приклади того, як конкретні техніки відображення нещодавно використовуються в квантових обчисленнях, починаючи від найпростішого і завершуючи застосуванням перетворення Джордана–Вігнера до адронної динаміки. Більшість цього матеріалу є дуже технічною, і якщо ти з ним не знайомий, він може здатися лякаючим. Але з кожним разом, коли ти практикуєшся, стає легше — саме тому цей курс називається «Квантові обчислення на практиці». Ніхто не може просто взяти і відразу почати цим займатися — потрібно вчитися, ламати голову та, мабуть, відчувати розчарування. Але я закликаю тебе не уникати цього дискомфорту, а справді досліджувати питання, що виникають. Це єдиний спосіб навчитися.