Propagacja Pauliego
Pakiet pauli-prop udostępnia interfejs Pythona przyspieszony w Rust do wykonywania propagacji Pauliego.
Propagacja Pauliego to ramy do przybliżania ewolucji operatorów w bazie Pauliego pod działaniem innych operatorów, takich jak bramki obwodów kwantowych i kanały szumu. Takie podejście może być skuteczne, gdy oczekuje się, że uczestniczące operatory pozostaną rzadkie w bazie Pauliego.
Podprogramy w tym pakiecie można wykorzystać do implementacji technik redukcji błędów, takich jak lightcone shading [6] i propagated noise absorption [7], operator backpropagation [8] do zmniejszania głębokości obwodu oraz klasycznej symulacji wartości oczekiwanych [1-5].
Pierwsze kroki
Prosty przewodnik, który pomoże Ci szybko zacząć pracę z tym pakietem, jest dostępny w przewodniku szybkiego startu.
Przykłady zastosowań
Propagację Pauliego można wykorzystać jako silnik niższego poziomu do implementacji różnych technik. Oto kilka przykładów jej użycia:
-
Lightcone shading do zmniejszania narzutu próbkowania probabilistycznej redukcji błędów (PEC) przy łagodzeniu błędów wartości oczekiwanych w 1- i 2-wymiarowym modelu Isinga z polem poprzecznym [6] [
qiskit-addon-slcdokumentacja] -
Wchłanianie informacji o modelu szumu do docelowej obserwabli w celu łagodzenia błędów wartości oczekiwanych w 2-wymiarowym modelu Isinga z polem poprzecznym [7] [
qiskit-addon-pnadokumentacja] -
Przycinanie końcowych bramek w celu uzyskania obwodów Trottera o mniejszej głębokości dla ewolucji w czasie 2-wymiarowego modelu spinowego [8] [
qiskit-addon-obpdokumentacja]
Omówienie techniczne
Szczegóły oprogramowania
-
Interfejs Pythona przyspieszony w Rust
-
Obsługa symulacji z szumem [przewodnik]
-
Możliwość obcinania wyrazów podczas ewolucji na podstawie bezwzględnej tolerancji współczynnika, stałej liczby wyrazów w ewoluującym operatorze lub kombinacji obu
-
Możliwość wykonywania propagacji Pauliego zarówno w ujęciu Schrödingera, jak i Heisenberga
-
Nowatorska technika przybliżania sprzężenia operatora będącego sumą Pauliego przez inny operator Pauliego. Ta heurystyczna implementacja zachłannie generuje wkłady do iloczynu, które mają być najbardziej znaczące. Więcej informacji znajdziesz w dodatku B w [7].
-
Jednowątkowość
Wymagania obliczeniowe
Zarówno koszt pamięciowy, jak i czasowy procedur propagacji Pauliego na ogół rosną wraz z rozmiarem, do jakiego pozwala się urosnąć ewoluowanemu operatorowi.
propagate_through_rotation_gates(): Gdy operator Pauliego jest propagowany w bazie Pauliego pod działaniem ciągu bramek obrotu Pauliego -kubitowego obwodu, liczba wyrazów rośnie jak w kierunku maksimum unikalnych składowych Pauliego. Aby kontrolować zużycie pamięci, operator jest obcinany po zastosowaniu każdej bramki, co wprowadza pewien błąd proporcjonalny do wielkości współczynników obciętych wyrazów. Wymagania pamięciowe są liniowe względem rozmiaru ewoluowanego operatora, a czas działania rośnie liniowo zarówno względem rozmiaru operatora, jak i liczby bramek.
propagate_through_operator(): Sprzęga jeden operator w bazie Pauliego z drugim, zachłannie akumulując wyrazy sumy, , gdzie są rzadkimi indeksami w bazie Pauliego. Ta implementacja sortuje współczynniki w każdym operatorze według malejącej wielkości, a następnie przeszukuje trójwymiarową przestrzeń indeksów w poszukiwaniu wyrazów o największych współczynnikach, zaczynając od początku i akumulując trójki aż do podanego progu odcięcia. Czas poświęcony na przeszukiwanie często można uczynić pomijalnym, zwiększając rozmiar kroku wyszukiwania w przestrzeni , co zapewnia sześcienne przyspieszenie tej podprocedury. W naszym profilowaniu znaczną część czasu może zajmować sortowanie operatorów i wykonywanie mnożenia Pauliego w celu wygenerowania wyrazów nowego operatora.
Współtworzenie
Kod źródłowy jest dostępny na GitHubie.
Przewodnik dla deweloperów znajduje się w pliku CONTRIBUTING.md w głównym katalogu repozytorium tego projektu. Uczestnicząc, zobowiązujesz się przestrzegać kodeksu postępowania Qiskit.
Do śledzenia próśb i błędów używamy zgłoszeń na GitHubie.
Cytowanie tego pakietu
Jeśli używasz tego pakietu w swoich badaniach, skorzystaj z pliku CITATION.bib w repozytorium tego projektu, aby zacytować odpowiednie źródła.
Licencja
Polityka wycofywania
Stosujemy wersjonowanie semantyczne. Czasami możemy wprowadzać zmiany łamiące zgodność, aby poprawić doświadczenie użytkownika. Gdy to możliwe, zachowamy stare interfejsy i oznaczymy je jako wycofane, dopóki mogą współistnieć z nowymi. Każde istotne ulepszenie, zmiana łamiąca zgodność lub wycofanie zostanie opisane w informacjach o wydaniu.
Bibliografia
-
[Tomislav Begušić, Johnnie Gray, Garnet Kin-Lic Chan, Fast and converged classical simulations of evidence for the utility of quantum computing before fault tolerance, arXiv:2308.05077 [quant-ph].
-
Nicolas Loizeau, et al., Quantum many-body simulations with PauliStrings.jl, arXiv:2410.09654 [quant-ph].
-
Manuel S. Rudolph, et al., Pauli Propagation: A Computational Framework for Simulating Quantum Systems, arXiv:2505.21606 [quant-ph].
-
Hrant Gharibyan, et al., A Practical Guide to using Pauli Path Simulators for Utility-Scale Quantum Experiments, arXiv:2507.10771 [quant-ph].
-
Lukas Broers, et al., Scalable Simulation of Quantum Many-Body Dynamics with Or-Represented Quantum Algebra, arXiv:2506.13241 [quant-ph].
-
Andrew Eddins, Minh C. Tran, Patrick Rall, Lightcone shading for classically accelerated quantum error mitigation, arXiv:2409.04401 [quant-ph].
-
Andrew Eddins, et al., Computing noise-canceling observables via Pauli propagation, arXiv:2606.20441 [quant-ph].
8 Bryce Fuller, et al., Improved Quantum Computation using Operator Backpropagation, arXiv:2502.01897 [quant-ph].