Існує гарне пояснення Крейг Gidney тут (він також має інше великий вміст, в тому числі схеми симулятора, на своєму блозі ).
По суті, алгоритм Гровера застосовується, коли у вас є функція, яка повертається True
для одного з можливих входів, а також False
для всіх інших. Завдання алгоритму - знайти той, який повертається True
.
Для цього ми виражаємо входи як бітові рядки та кодуємо їх за допомогою та станів рядків кубітів. Отже, бітова рядок буде кодована, наприклад, у чотирьох кубітному стані .|0 ⟩|1 ⟩0011
|0011 ⟩
Нам також потрібно вміти реалізовувати функцію за допомогою квантових воріт. Зокрема, нам потрібно знайти послідовність воріт, яка реалізує єдину таку, щоU
U| ⟩=- | а⟩ ,U| б⟩= | б ⟩
де - бітова рядок, для якої повертається функція, а - будь-яка, для якої вона повертається .аTrue
бFalse
Якщо ми почнемо з суперпозицією всіх можливих бітових рядків, що досить легко зробити, просто Hadamarding все, всі входи починаються з однієї і тієї ж амплітудою (де є довжина бітових рядків, які ми шукаємо, і, отже, кількість кубітів, які ми використовуємо). Але якщо ми застосуємо оракул , амплітуда стану, який ми шукаємо, зміниться на .12н√нU-12н√
Це не будь-яка легко помітна різниця, тому нам потрібно її посилити. Для цього ми використовуємо Гровер Diffusion оператора , . Ефект цього оператора полягає в тому, щоб подивитися на те, чим кожна амплітуда відрізняється від середньої амплітуди, а потім обернути цю різницю. Отже, якщо певна амплітуда була на певну суму більше середньої амплітуди, вона стане на ту саму суму меншою, ніж середня, і навпаки.D
Зокрема, якщо у вас суперпозиція бітових рядків , дифузійний оператор має ефектбj
D:∑jαj|бj⟩↦∑j( 2 мкм-αj)|бj⟩
де - середня амплітуда. Тож будь-яка амплітуда перетворюється на μ - δ . Щоб дізнатися, чому він має такий ефект, і як його реалізувати, дивіться у цих конспектах лекцій .μ = ∑jαjμ + δμ - δ
Більша частина амплітуд буде мініатюрною більшою, ніж середня (завдяки ефекту одинарного - 12н√ ), тому вони стануть крихітним трохи менше середнього за допомогою цієї операції. Не велика зміна.
На стан, який ми шукаємо, буде впливати сильніше. Його амплітуда набагато менша від середньої, і тому вона стане набагато більшою середньою після застосування оператора дифузії. Кінцевий ефект дифузійного оператора полягає в тому, щоб спричинити перешкодний вплив на стани, котрий амплітуда 12н√ з усіх неправильних відповідей і додає їх до правильної. Повторивши цей процес, ми можемо швидко дійти до того, що наше рішення виділяється з натовпу настільки, що ми можемо його ідентифікувати.
Звичайно, все це свідчить про те, що всю роботу виконує дифузійний оператор. Пошук - це лише програма, яку ми можемо підключити до неї.
Детальні відомості про те, як реалізуються функції та оператор дифузії, див. Відповіді на інші запитання .