Chcę utworzyć bramę Toffoli kontrolowaną przez n kubitów i zaimplementować ją w QISKit. Czy można to zrobić? Jeśli tak to jak?
quantum-gate
programming
qiskit
Ali Javadi
źródło
źródło
Odpowiedzi:
Prosty sposób na to zilustrowano na rysunku 4.10 Nielsen & Chuang.
Gdzie U może oznaczać dowolny obrót kubitowy (w tym przypadku bramka X).
Ten obwód działa w następujący sposób: Chcemy zastosować U do docelowego kubita tylko wtedy, gdy AND wszystkich kubitów kontrolnych wynosi 1. Normalny Toffoli daje nam AND 2 kubitów. Zatem łącząc kilka Toffolis, możemy uzyskać c1.c2.c3.c4.c5, z zastrzeżeniem, że wprowadzono niektóre kubity „robocze” (lub ancilla) do przechowywania wyników pośrednich. Po zastosowaniu ostatecznej CU otrzymujemy ostateczny wynik w celu. Teraz możemy wyczyścić pośrednie kubity robocze, cofając ich obliczenia i przywracając je do stanu | 0>. Ten model obliczeń odwracalnych jest znany jako metoda „oblicz-kopiuj-nieobliczaj” i został po raz pierwszy zaproponowany przez Charliego Bennetta w 1973 r .
Oto kod QISKit do budowy obwodu i wizualizacji:
Wydajność:
źródło
Chcę dodać metodę, która nie korzysta z kubitów ancilla, ale wymaga bram bardziej skomplikowanych niż tylko kontrolowane-nie. Wierzę, że ta metoda została po raz pierwszy zaprezentowana przez Barenco i in. glin. w tym artykule , Lemma 7.5:
Jest to definicja rekurencyjna, więc brama sterująca qubit jest zdefiniowana w kategoriach kontrolnej bramki kubit n-1. Trwało to do momentu dotarcia do dwóch bramek qOTIT CNOT.
Ta implementacja jest trochę trudna, jednak istnieje prostsza, jeśli nie ma nic przeciwko zebraniu fazy względnej (patrz Lemat 7.9 tego samego artykułu).
Aby wdrożyć bramę, taką jakV. w QISKIT będziesz musiał użyć zaawansowanych pojedynczych bramek kubitowych.
źródło
QuantumCircuit firmy Qiskit ma metodę mct do budowy wielopunktowej bramy Toffoli z kilkoma trybami: podstawowa, podstawowa-brudna-ancilla, zaawansowana, noancilla. Na przykład brama Toffoli z 3 kubitami kontrolnymi:
Wynik:
źródło