Circuits
W informatyce circuits są modelami obliczeniowymi, w których informacja jest przenoszona przez przewody w sieci gates, reprezentujących operacje na informacji przenoszonej przez te przewody. Quantum circuits to konkretny model obliczeń oparty na tym ogólniejszym pojęciu.
Choć słowo „circuit" często kojarzy się z okrężną ścieżką, okrężne ścieżki nie są dozwolone w modelach obliczeniowych opartych na circuits, które są najczęściej badane. Innymi słowy, zazwyczaj rozważamy acyclic circuits (acykliczne), gdy myślimy o circuits jako modelach obliczeniowych. Quantum circuits podążają za tym wzorcem — quantum circuit reprezentuje skończoną sekwencję operacji, która nie może zawierać pętli sprzężenia zwrotnego.
Boolean circuits
Oto przykład (klasycznego) Boolean circuit, w którym przewody przenoszą wartości binarne, a gates reprezentują operacje logiki Boolean:
Przepływ informacji wzdłuż przewodów przebiega od lewej do prawej: przewody po lewej stronie rysunku, oznaczone i , to bity wejściowe, które można ustawić na dowolną wybraną wartość binarną, a przewód po prawej stronie to wyjście. Pośrednie przewody przyjmują wartości wyznaczone przez gates, które są obliczane od lewej do prawej.
Gates to: AND gates (oznaczone ), OR gates (oznaczone ) i NOT gates (oznaczone ). Funkcje obliczane przez te gates są prawdopodobnie znane wielu czytelnikom, ale poniżej przedstawione są w postaci tablic wartości:
Dwa małe, wypełnione kółka na przewodach tuż po prawej stronie nazw i reprezentują operacje fan-out, które po prostu tworzą kopię wartości przenoszonej przez przewód, na którym się pojawiają, umożliwiając jej podanie na wejście wielu gates. Operacje fan-out nie zawsze są uznawane za gates w klasycznym ujęciu — czasem traktuje się je jako „darmowe" w pewnym sensie. Kiedy jednak Boolean circuits są przekształcane w równoważne quantum circuits, musimy jawnie klasyfikować operacje fan-out jako gates, aby je prawidłowo obsłużyć i uwzględnić.
Oto ten sam circuit przedstawiony w stylu popularniejszym w elektrotechnice, który używa konwencjonalnych symboli dla gates AND, OR i NOT:
Nie będziemy dalej używać tego stylu ani tych konkretnych symboli gates, natomiast będziemy używać innych symboli do reprezentowania gates w quantum circuits — wyjaśnimy je, gdy się z nimi spotkamy.
Konkretny circuit w tym przykładzie oblicza exclusive-OR (w skrócie XOR), oznaczany symbolem :
Na następnym diagramie rozważamy tylko jeden wybór wejść: i Każdy przewód jest oznaczony wartością, którą przenosi, dzięki czemu możesz śledzić poszczególne operacje. Wartość wyjściowa wynosi w tym przypadku , co jest poprawną wartością dla XOR:
Pozostałe trzy możliwe ustawienia wejść można sprawdzić w podobny sposób.
Inne typy układów
Jak wspomniano powyżej, pojęcie układu w informatyce jest bardzo ogólne. Analizuje się na przykład układy, których przewody przenoszą wartości inne niż i , a także układy z bramkami reprezentującymi różne operacje.
W układach arytmetycznych przewody mogą przenosić wartości całkowite, a bramki reprezentują operacje arytmetyczne, takie jak dodawanie i mnożenie. Poniższy rysunek przedstawia układ arytmetyczny, który przyjmuje dwie zmienne wartości wejściowe ( i ) oraz trzecie wejście ustawione na wartość Wartości przenoszone przez przewody, jako funkcje wartości i są pokazane na rysunku.
Możemy też rozważać układy uwzględniające losowość, np. takie, w których bramki reprezentują operacje probabilistyczne.
Quantum circuits
W modelu Quantum circuit przewody reprezentują Qubit/kubity, a bramki — operacje na tych Qubit/kubitach. Na razie skupimy się na operacjach, które poznaliśmy do tej pory, a mianowicie na operacjach unitary i pomiarach w bazie standardowej. W miarę poznawania innych rodzajów operacji kwantowych i pomiarów będziemy mogli odpowiednio rozszerzać nasz model.
Oto prosty przykład Quantum circuit:
W tym układzie mamy jeden Qubit o nazwie reprezentowany przez poziomą linię, oraz ciąg bramek reprezentujących operacje unitary na tym Qubit/kubicie. Podobnie jak w powyższych przykładach, informacja płynie od lewej do prawej — pierwszą wykonywaną operacją jest operacja Hadamard, drugą jest operacja , trzecią kolejna operacja Hadamard, a ostatnią operacja . Zastosowanie całego układu odpowiada więc złożeniu tych operacji, na Qubit
Czasem możemy chcieć jawnie wskazać stany wejściowe lub wyjściowe układów. Na przykład, jeśli zastosujemy operację do stanu otrzymamy stan Można to przedstawić następująco:
Quantum circuits często zaczynają się z wszystkimi Qubit/kubitami zainicjalizowanymi do tak jak w tym przypadku, ale zdarzają się też sytuacje, w których wejściowe Qubit/kubity są początkowo ustawione w różnych stanach. Oto kolejny przykład Quantum circuit, tym razem z dwoma Qubit/kubitami:
Jak zawsze, bramka oznaczona odnosi się do operacji Hadamard, natomiast druga bramka to operacja controlled-NOT: wypełnione kółko reprezentuje Qubit sterujący (control qubit), a kółko przypominające symbol oznacza Qubit docelowy (target qubit).
Zanim dokładniej przeanalizujemy ten układ i wyjaśnimy, co robi, musimy najpierw wyjaśnić, jak Qubit/kubity są porządkowane w Quantum circuits. Wiąże się to z konwencją, którą Qiskit stosuje do nazewnictwa i porządkowania systemów, wspomnianą pokrótce w poprzedniej lekcji.
W Qiskit najwyższy kubit w diagramie obwodu ma indeks i odpowiada prawej pozycji w krotce kubitów (lub w ciągu, iloczynie kartezjańskim lub iloczynie tensorycznym odpowiadającym tej krotce), drugi od góry kubit ma indeks i odpowiada pozycji drugiej od prawej w krotce i tak dalej. Najniższy kubit, mający najwyższy indeks, odpowiada zatem lewej pozycji w krotce. W szczególności domyślne nazwy Qiskit dla kubitów w obwodzie -kubitowym są reprezentowane przez -krotkę gdzie to kubit na górze, a na dole w diagramach obwodów kwantowych.
Należy zauważyć, że jest to odwrócenie bardziej powszechnej konwencji porządkowania kubitów w obwodach i jest częstym źródłem nieporozumień. Więcej informacji na temat tej konwencji porządkowania można znaleźć na stronie dokumentacji Kolejność bitów w Qiskit.
Choć czasem odchodzimy od konkretnych domyślnych nazw używanych przez Qiskit dla Qubit/kubitów, zawsze będziemy stosować opisaną powyżej konwencję porządkowania przy interpretacji diagramów układów w tym kursie. Zatem nasza interpretacja powyższego układu jest taka, że opisuje on operację na parze Qubit/kubitów Jeśli wejściem do układu jest stan kwantowy oznacza to na przykład, że dolny Qubit zaczyna w stanie , a górny Qubit zaczyna w stanie
Aby zrozumieć, co robi układ, możemy przejść od lewej do prawej przez jego operacje.
-
Pierwsza operacja to operacja Hadamard na :
Gdy stosujemy bramkę do jednego Qubit/kubita w ten sposób, na pozostałych Qubit/kubitach nie dzieje się nic (w tym przypadku to tylko jeden inny Qubit). Niedzianie się niczego jest równoważne wykonaniu operacji identyczności. Przerywany prostokąt na powyższym rysunku reprezentuje zatem tę operację:
Zwróć uwagę, że macierz identyczności jest po lewej stronie iloczynu tensorowego, a po prawej, co jest spójne z konwencją porządkowania Qiskit.
-
Druga operacja to operacja controlled-NOT, gdzie jest kontrolą, a jest celem:
Działanie bramki controlled-NOT na stanach bazy standardowej jest następujące:
Biorąc pod uwagę, że porządkujemy Qubit/kubity jako gdzie jest na dole, a na górze układu, reprezentacja macierzowa bramki controlled-NOT wygląda następująco:
Operacja unitary zaimplementowana przez cały układ, którą nazwiemy jest złożeniem operacji:
Przypominając sobie notację stanów Bella,
stwierdzamy, że
Ten układ daje nam zatem sposób na utworzenie stanu jeśli uruchomimy go na dwóch Qubit/kubitach zainicjalizowanych do Ogólniej, dostarcza nam sposób konwersji bazy standardowej do bazy Bella. (Warto zauważyć, że choć nie jest to istotne dla tego przykładu, czynnik fazowy przy ostatnim stanie, można by wyeliminować, wprowadzając małą modyfikację układu. Moglibyśmy na przykład dodać bramkę controlled- na początku, która jest podobna do bramki controlled-NOT z tą różnicą, że operacja jest stosowana do Qubit/kubita docelowego zamiast operacji NOT, gdy kontrola jest ustawiona na Alternatywnie, moglibyśmy dodać bramkę swap na końcu. Każdy z tych wyborów eliminuje znak minus, nie wpływając na działanie układu na pozostałe trzy stany bazy standardowej.)
Ogólnie Quantum circuits mogą zawierać dowolną liczbę przewodów Qubit/kubitowych. Możemy też uwzględniać przewody klasycznych bitów, oznaczane podwójnymi liniami, jak w tym przykładzie:
Mamy tu bramkę Hadamard i bramkę controlled-NOT na dwóch Qubit/kubitach i tak jak w poprzednim przykładzie. Mamy też dwa klasyczne bity, i oraz dwie bramki pomiarowe. Bramki pomiarowe reprezentują pomiary w bazie standardowej: Qubit/kubity są zmieniane w swoje stany po pomiarze, a wyniki pomiarów są nadpisywane na klasyczne bity, na które wskazują strzałki.
Często wygodnie jest przedstawiać pomiar jako bramkę, która przyjmuje Qubit jako wejście i zwraca klasyczny bit (zamiast zwracać Qubit w jego stanie po pomiarze i zapisywać wynik do osobnego klasycznego bitu). Oznacza to, że zmierzony Qubit został odrzucony i można go bezpiecznie zignorować, przy czym jego stan zmienił się w lub w zależności od wyniku pomiaru.
Na przykład poniższy diagram układu reprezentuje ten sam proces co poprzedni diagram, ale z pominięciem i po ich zmierzeniu:
W miarę postępu kursu zobaczymy więcej przykładów Quantum circuits, które są zazwyczaj bardziej skomplikowane niż proste przykłady powyżej. Oto kilka przykładów symboli używanych do oznaczania bramek często pojawiających się w diagramach układów:
-
Bramki jednokubitowe są zazwyczaj pokazane jako kwadraty z literą wskazującą, o jaką operację chodzi, jak poniżej:
Bramki NOT (lub równoważnie bramki ) są też czasem oznaczane kółkiem wokół znaku plus:
-
Bramki swap są oznaczane następująco:
-
Bramki sterowane (controlled-gates), czyli bramki opisujące operacje controlled-unitary, są oznaczane wypełnionym kółkiem (wskazującym kontrolę) połączonym pionową linią z wykonywaną operacją. Na przykład bramki controlled-NOT, controlled-controlled-NOT (czyli Toffoli) i controlled-swap (Fredkin) są oznaczane w następujący sposób:
-
Dowolne operacje unitary na wielu Qubit/kubitach można traktować jako bramki. Są one przedstawiane jako prostokąty opisane nazwą operacji unitary. Oto na przykład przedstawienie (nieokreślonej) operacji unitary jako bramki wraz z jej wersją sterowaną: