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 ⟩
C U=| 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 2C X1 , 3XC X 1 , 3( 12)⊗X)
C X1 , 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
C X1 , 3==| 0⟩⟨ 0 |kontrola⊗12)niezaangażowany⊗12)cel⎡⎣⎢⎢⎢12)02)02)02)02)12)02)02)02)02)02)02)02)02)02)02)⎤⎦⎥⎥⎥+| 1⟩⟨ 1 |kontrola⊗12)niezaangażowany⊗Xcel+⎡⎣⎢⎢⎢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:
C X3 , 1===12)cel⊗12)niezaangażowany⊗ | 0⟩⟨ 0 |kontrola⎡⎣⎢⎢⎢⎢⎢| 0⟩⟨ 0 || 0⟩⟨ 0 || 0⟩⟨ 0 || 0⟩⟨ 0 |⎤⎦⎥⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢10000000000001000010000000000001+Xcel⊗12)niezaangażowany⊗ | 1⟩⟨ 1 |kontrola+⎡⎣⎢⎢⎢⎢⎢| 1⟩⟨ 1 || 1⟩⟨ 1 || 1⟩⟨ 1 || 1⟩⟨ 1 |⎤⎦⎥⎥⎥⎥⎥00001000010000000000001000010000⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥.
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 2C X1 , 3= | 0 ⟩⟨ 0|⊗12)⊗12)+ | 1 ⟩⟨ 1|⊗12)⊗XC X3 , 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ń.