Jak uzyskać macierz CNOT dla 3-bitowego systemu, w którym qbity kontrolny i docelowy nie sąsiadują ze sobą?


15

W systemie z trzema qbitami łatwo jest wyprowadzić operatora CNOT, gdy qbity kontrolny i docelowy sąsiadują ze sobą w znaczeniu - po prostu tensorujesz 2-bitowy operator CNOT z macierzą tożsamości w pozycji istotności nietkniętego qbita:

C10|ϕ2ϕ1ϕ0⟩=(ja2)⊗do10)|ϕ2)ϕ1ϕ0⟩

Jednak nie jest oczywiste, jak wyprowadzić operatora CNOT, gdy qbity kontrolny i docelowy nie mają znaczenia:

do20|ϕ2)ϕ1ϕ0⟩

Jak to się robi?


Odpowiedzi:


14

Do prezentacji od pierwszych zasad podoba mi się odpowiedź Ryana O'Donnella . Ale dla nieco wyższego poziomu algebraicznego leczenia, oto jak bym to zrobił.

Główną cechą kontrolowanej operacji , dla dowolnego jednostkowego U , jest to, że (spójnie) wykonuje operację na niektórych kubitach w zależności od wartości niektórych pojedynczych kubitów. Sposób, w jaki możemy to napisać jawnie algebraicznie (z kontrolką na pierwszym kubicie) to: gdzie jest macierzą identyfikacji tego samego wymiaru co . Tutaj i są projektorami do stanów iUU1 U | 0 ⟩

doU=|0⟩⟨0|⊗1+|1⟩⟨1|⊗U
1U| 1 ⟩|0⟩⟨0|| 0 ⟩ | 1 ⟩|1⟩⟨1||0⟩|1⟩ kontrolnego kubita - ale nie używamy ich tutaj jako elementów pomiaru, ale do opisania wpływu na inne kubity w zależności od jednej lub drugiej podprzestrzeni przestrzeni stanu pierwszego kubita.

Możemy to wykorzystać do uzyskania macierzy dla bramki która wykonuje operację na kubicie 3, spójnie uwarunkowanym stanem kubit 1, myśląc o tym jako o kontrolowanym operacja na kubitach 2 i 3: X( 1 2doX1,3)XC X 1 , 3(12)⊗X)

doX1,3)=|0⟩⟨0|⊗14+|1⟩⟨1|⊗(12)⊗X)=[140404(12)⊗X)]=[12)02)02)02)02)12)02)02)02)02)X02)02)02)02)X],
gdzie dwa ostatnie są reprezentacjami macierzy blokowych, aby zaoszczędzić miejsce (i poczytalność).

Jeszcze lepiej: możemy rozpoznać, że - na pewnym poziomie matematycznym, gdzie pozwalamy sobie uświadomić, że kolejność czynników tensorowych nie musi być w pewnym ustalonym porządku - kontrola i cel operacji mogą być na dowolnych dwóch tensorach czynniki i że możemy wypełnić opis operatora na wszystkich innych kubitach za pomocą . Pozwoliłoby nam to przejść od razu do przedstawienia C X 1 , 312)C X 3 , 1

doX1,3)=|0⟩⟨0|⏟kontrola⊗12)⏟niezaangażowany⊗12)⏟cel+|1⟩⟨1|⏟kontrola⊗12)⏟niezaangażowany⊗X⏟cel=[12)02)02)02)02)12)02)02)02)02)02)02)02)02)02)02)]+[02)02)02)02)02)02)02)02)02)02)X02)02)02)02)X]
a także pozwala nam natychmiast zobaczyć, co zrobić, jeśli role kontroli i celu zostaną odwrócone:
doX3),1=12)⏟cel⊗12)⏟niezaangażowany⊗|0⟩⟨0|⏟kontrola+X⏟cel⊗12)⏟niezaangażowany⊗|1⟩⟨1|⏟kontrola=[|0⟩⟨0||0⟩⟨0||0⟩⟨0||0⟩⟨0|]+[|1⟩⟨1||1⟩⟨1||1⟩⟨1||1⟩⟨1|]=[1000000000100000000001000000000100000100000000011000000000100000].
Ale co najważniejsze: jeśli możesz zapisać te operatory algebraicznie, możesz zrobić pierwsze kroki w kierunku całkowitego rezygnacji z gigantycznych macierzy, zamiast rozważać algebraicznie te operatory, używając wyrażeń takich jak i C X 3 , 1 = 1 2doX1,3)=|0⟩⟨0|⊗12)⊗12)+|1⟩⟨1|⊗12)⊗XdoX3),1=12)⊗12)⊗|0⟩⟨0|+X⊗12)⊗|1⟩⟨1|. Oczywiście będzie granica tego, co możesz z nimi zrobić - prosta zmiana reprezentacji raczej nie sprawi, że trudny algorytm kwantowy zostanie skutecznie rozwiązany, a tym bardziej możliwy do ręcznego obliczenia - ale o wiele łatwiej można argumentować o prostych obwodach używając tych wyrażeń niż z gigantycznymi matrycami zajmującymi przestrzeń.

O tak, przypominam sobie projektory od początku w książce Mermin. Dodawanie projektorów i matryc to sposób na kodowanie logiki warunkowej w matrycach!
— ahelwer

„prosta zmiana reprezentacji raczej nie sprawi, że trudny algorytm kwantowy zostanie skutecznie rozwiązany” - a co z rotacją knota?
— meowzz

1
@meowzz: Od czasu do czasu taka zmiana notacji pozwala na postęp konceptualny i pomaga w łatwiejszym rozwiązywaniu problemów. Ale nie często i prawdopodobnie nie w przypadku tej konkretnej zmiany notacji, która jest dość dobrze znana. Jeśli chodzi o konkretny przypadek rotacji Knota, pytanie, które zadałbym, brzmiałoby: jaki konkretny postęp umożliwił rozwiązanie problemów i dla jakich problemów był pomocny.
— Niel de Beaudrap,

8

To dobre pytanie; podręczniki wydają się przekraść. Dokładnie to pytanie dotarłem kilka dni temu, przygotowując wykład z zakresu informatyki kwantowej.

O ile mi wiadomo, nie ma sposobu na uzyskanie pożądanego macierz 8x8 korzystając produkt Kronecker notacji dla macierzy. Wszystko, co naprawdę możesz powiedzieć, to: Twoja operacja zastosowania CNOT do trzech kubitów, przy czym kontrola jest pierwsza, a cel trzeci, ma następujące skutki:⊗

|000⟩↦|000⟩

|001⟩↦|001⟩

|010⟩↦|010⟩

|011⟩↦|011⟩

|100⟩↦|101⟩

|101⟩↦|100⟩

|110⟩↦|111⟩

|111⟩↦|110⟩

i dlatego podaje ją następująca macierz:

U=[1000000001000000001000000001000000000100000010000000000100000010]

Ta macierz faktycznie nie jest ani ani . Nie ma dla niego zwięzłej notacji opartej na produkcie Kronecker; tak po prostu jest.Uja2)⊗doN.OT.doN.OT.⊗ja2)


1

Zasadniczo CNOT zmienia cel na podstawie kontroli. Wybieram odwrócenie celu, jeśli kontrola to , możesz też wybrać . Przyjmijmy więc ogólny stan wielocząstkowy . Teraz wybierasz kontrolę i cel, powiedzmy, że jest kontrolą, a jest celem. Zastosowanie CNOT na będzie po prostu ↑(=[1 0]T.)↓(=[0 1]T.)|ϕ⟩=|↑1↓2)↓3)....↑n-1↓n⟩ja′thk′th|ϕ⟩

CNOT|ϕ⟩=CNOT|↑1↓2...↑i...↑k...↑n−1↓n⟩=|↑1↓2...↑i...↓k...↑n−1↓n⟩

Aby skonstruować macierz takiej bramki CNOT, stosujemy ( macierz Pauli), jeśli i- stan jest w górę, i ( Tożsamość), jeśli i- stan jest w dół. Stosujemy te matryce na pozycji, która jest naszym celem. Matematycznie, σxxi′thI2×2i′thk′th

CNOT=[|↑1...↑i...↑k−1⟩⟨↑1...↑i...↑k−1|⊗σx⊗|↑k+1...↑n⟩⟨↑k+1...↑n|+all permutations of states other then i′th]+[|↑1...↓i...↑k−1⟩⟨↑1...↓i...↑k−1|⊗I⊗|↑k+1...↑n⟩⟨↑k+1...↑n|+all permutations of states other then i′th]

Uwaga stan (cel) są wyłączone podczas tworzenia macierzy permutacji i co położeniu operator lub opisana.k′thk′thσxja

Weźmy przykład pięciu kubitów, w których qubit jest celem, a kontroluje. Zbudujmy macierz permutacji . Rozumiem, jeśli kontrola jest w odwróć cel. Możesz też wziąć odwrotnie.2)nre4thdoN.OT.↑

doN.OT.=|↑1⟩⟨↑1|⊗σx⊗|↑3)↑4↑5⟩⟨↑3)↑4↑5|+|↑1⟩⟨↑1|⊗σx⊗|↑3)↑4↓5⟩⟨↑3)↑4↓5|+|↑1⟩⟨↑1|⊗σx⊗|↓3)↑4↑5⟩⟨↓3)↑4↑5|+|↑1⟩⟨↑1|⊗σx⊗|↓3)↑4↓5⟩⟨↓3)↑4↓5|+|↓1⟩⟨↓1|⊗σx⊗|↑3)↑4↑5⟩⟨↑3)↑4↑5|+|↓1⟩⟨↓1|⊗σx⊗|↑3)↑4↓5⟩⟨↑3)↑4↓5|+|↓1⟩⟨↓1|⊗σx⊗|↓3)↑4↑5⟩⟨↓3)↑4↑5|+|↓1⟩⟨↓1|⊗σx⊗|↓3)↑4↓5⟩⟨↓3)↑4↓5|+|↑1⟩⟨↑1|⊗ja⊗|↑3)↓4↑5⟩⟨↑3)↓4↑5|+|↑1⟩⟨↑1|⊗ja⊗|↑3)↓4↓5⟩⟨↑3)↓4↓5|+|↑1⟩⟨↑1|⊗ja⊗|↓3)↓4↑5⟩⟨↓3)↓4↑5|+|↑1⟩⟨↑1|⊗ja⊗|↓3)↓4↓5⟩⟨↓3)↓4↓5|+|↓1⟩⟨↓1|⊗ja⊗|↑3)↓4↑5⟩⟨↑3)↑4↓5|+|↓1⟩⟨↓1|⊗ja⊗|↑3)↓4↓5⟩⟨↑3)↓4↓5|+|↓1⟩⟨↓1|⊗ja⊗|↓3)↓4↑5⟩⟨↓3)↓4↑5|+|↓1⟩⟨↓1|⊗ja⊗|↓3)↓4↓5⟩⟨↓3)↓4↓5|

-2

najpierw napisz macierz CNOT⊗𝐼2, a następnie zmień kolejność index2 i index3 za pomocą matlaba. w ten sposób możesz wykonać dowolną liczbę kubitów.


Cześć! Czy możesz rozwinąć swoją odpowiedź, aby była jaśniejsza? Być może pomoże
— jakiś
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.