Будь-класичний один біт функції f: x ↦ y , де x ∈ { 0 , 1 }н є н вхід -розрядним і у∈ { 0 , 1 } є н вихід -бітний може бути записані у вигляді оборотного обчислення,
fr: ( х , у) ↦ ( x , y⊕ f( х ) )
(Зверніть увагу, що будь-яка функція
м виходів може бути записана як тільки
м окремі 1-бітні функції.)
Квантовий хід, що реалізує це, є в основному просто квантовим переходом, що відповідає оцінці оборотної функції. Якщо ви просто випишете таблицю істинності функції, кожен рядок відповідає рядку унітарної матриці, і результат показує, який запис стовпця містить 1 (усі інші записи містять 0).
У випадку XNOR у нас є стандартна таблиця істинності, а таблиця правдивості оборотної функції
Таким чином, унітарна матриця дорівнює
U=( 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0
х00011011f( х )1001( х , у)000001010011100101110111( х , у⊕ f( х ) )001000010011100101111110
U= ⎛⎝⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜0100000010000000001000000001000000001000000001000000000100000010⎞⎠⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟.
Це може бути легко розкладено через пару контрольованих воріт і трохи перевернути або два.
Метод, який я тільки що окреслив, дає вам дуже безпечний спосіб зробити конструкцію, яка працює для будь-якого , але він не ідеально реконструює відповідність між XOR та контрольованим не. Для цього нам потрібно припустити трохи більше про властивості функції .f( х )f( х )
Припустимо, що ми можемо розкласти вхід на таким, що і такі, що для всіх значень , значення виразні для кожного . У цьому випадку ми можемо визначити оцінку оборотної функції якЦе означає, що ми використовуємо на 1 біт менше, ніж у попередній конструкції, але звідси техніку можна повторити.ха , бa ∈ { 0 , 1 }n - 1b ∈ { 0 , 1 }аf( а , б )б
f: ( a , b ) ↦ ( a , f( а , б ) ) .
Отже, повернемося до таблиці правди для XNOR.
Ми можемо це бачити, наприклад, коли ми фіксуємо , два виходи становлять , отже, різні. Аналогічно для фіксації . Таким чином, ми можемо перейти до побудови оборотної функції
і це дає нам унітарний
a b00011011f( а , б )1001
a = 01 , 0a = 1a b00011011a f( а , б )01001011
U= ⎛⎝⎜⎜⎜0100100000100001⎞⎠⎟⎟⎟
cNOT ⋅ ( 1 ⊗ X)