Blog

Finden des Grundzustands von H2O und Lösen anderer Hamilton-Simulationsprobleme mit Classiq

26
Juli
,
2022

In dieser Notiz wird gezeigt, wie die Classiq-Plattform zur Lösung des Hamilton-Simulationsproblems verwendet wird, das Teil unseres jüngsten Programmierwettbewerbs war. Anschließend zeigen wir ein komplexeres Beispiel - die Simulation einesH2O-Moleküls.

Einführung

Die chemische Simulation ist eine der spannendsten Anwendungen für Quantencomputer. Wenn präzise Simulationen von Elektron-Elektron-Wechselwirkungen erforderlich sind, kann man manchmal einen klassischen Computer verwenden, aber klassische Computer haben Schwierigkeiten, komplexere molekulare Wechselwirkungen zu simulieren. Am besten ist es, diese Teilchenwechselwirkungen auf der Quantenebene zu simulieren, und dazu eignet sich ein Quantencomputer hervorragend. 

Die Fähigkeit, molekulare Wechselwirkungen genau zu simulieren, wird weitreichende Anwendungen haben. In der Arzneimittelforschung wird sie die rasche Entwicklung von Impfstoffen und neuen Heilmitteln für Krankheiten ermöglichen. In der Materialforschung können wir auf die Entdeckung von Materialien mit einem besseren Verhältnis von Festigkeit zu Gewicht und umweltfreundlichen Baumaterialien hoffen.

Das Lithiumhydrid-Hamiltonian-Simulationsproblem

In unserem kürzlich durchgeführten Kodierungswettbewerb haben wir die Teilnehmer gebeten, eine Schaltung mit nicht mehr als zehn Qubits zu entwickeln, die den unitären e-iH annähert, wobei H der Qubit-Hamiltonian eines LiH (Lithiumhydrid)-Moleküls ist. Der LiH-Hamiltonian besteht aus 276 Pauli-Strings und ist zu finden hier. Der Approximationsfehler sollte weniger als 0,1 betragen, und die Schaltung sollte nur aus den CX- und Ein-Qubit-Gattern bestehen.

Codierung mit Classiq

Um dieses Problem mit Classiq zu lösen, verwenden wir die Suzuki-Trotter-Methode, eine der effizientesten Methoden zur Simulation von Hamiltonianern und zur Erzeugung von Quantensimulationsschaltungen. Die Erstellung dieser Schaltung ist ganz einfach. Wir geben die gewünschte Funktion der Schaltung an, und die Plattform erzeugt eine effiziente Quantenschaltung. Hier ist der Code: 


LiH = [("IIIYYIIIYY",0.00303465683020485),
("IIIXXIIIYY",0.00303465683020485),
("IIIYYIIIXX",0.00303465683020485),
("IIIXXIIIXX",0.00303465683020485),
("YZZZYIIIYY",-0.00837336142426481),
("XZZZXIIIYY",-0.00837336142426481),
("YZZZYIIIXX",-0.00837336142426481),
("XZZZXIIIXX",-0.00837336142426481),
("YZZYIIIIYY",0.00211113766859809),
("XZZXIIIIYY",0.00211113766859809),
("YZZYIIIIXX",0.00211113766859809),
("XZZXIIIIXX",0.00211113766859809),
("IIIIIIIIYY",-0.00491756976241806),
("IIIIIIIIXX",-0.00491756976241806),
("ZIIIIIIIYY",0.0105401874090264),
("ZIIIIIIIXX",0.0105401874090264),
("IZIIIIIIYY",-0.00118228323247258),
("IZIIIIIIXX",-0.00118228323247258),
("IIZIIIIIYY",-0.00118228323247258),
("IIZIIIIIXX",-0.00118228323247258),
("IIIZIIIIYY",-0.00154067008970742),
("IIIZIIIIXX",-0.00154067008970742),
("IIIIZIIIYY",0.0117336239120741),
("IIIIZIIIXX",0.0117336239120741),
("IIIIIZIIYY",0.00277574622690495),
("IIIIIZIIXX",0.00277574622690495),
("IIIIIIZIYY",0.00362024875588371),
("IIIIIIZIXX",0.00362024875588371),
("IIIIIIIZYY",0.00362024875588371),
("IIIIIIIZXX",0.00362024875588371),
("IIYZYIIYZY",0.00599676084973456),
("IIXZXIIYZY",0.00599676084973456),
("IIYZYIIXZX",0.00599676084973456),
("IIXZXIIXZX",0.00599676084973456),
("IIYYIIIYZY",0.00480253198835629),
("IIXXIIIYZY",0.00480253198835629),
("IIYYIIIXZX",0.00480253198835629),
("IIXXIIIXZX",0.00480253198835629),
("YZYIIIIYZY",-0.00487974048419149),
("XZXIIIIYZY",-0.00487974048419149),
("YZYIIIIXZX",-0.00487974048419149),
("XZXIIIIXZX",-0.00487974048419149),
("IYZZYIYZZY",0.00599676084973456),
("IXZZXIYZZY",0.00599676084973456),
("IYZZYIXZZX",0.00599676084973456),
("IXZZXIXZZX",0.00599676084973456),
("IYZYIIYZZY",0.00480253198835629),
("IXZXIIYZZY",0.00480253198835629),
("IYZYIIXZZX",0.00480253198835629),
("IXZXIIXZZX",0.00480253198835629),
("YYIIIIYZZY",-0.00487974048419149),
("XXIIIIYZZY",-0.00487974048419149),
("YYIIIIXZZX",-0.00487974048419149),
("XXIIIIXZZX",-0.00487974048419149),
("IIIYYYZZZY",-0.00837336142426481),
("IIIXXYZZZY",-0.00837336142426481),
("IIIYYXZZZX",-0.00837336142426481),
("IIIXXXZZZX",-0.00837336142426481),
("YZZZYYZZZY",0.0307383271773138),
("XZZZXYZZZY",0.0307383271773138),
("YZZZYXZZZX",0.0307383271773138),
("XZZZXXZZZX",0.0307383271773138),
("YZZYIYZZZY",-0.00776444118212153),
("XZZXIYZZZY",-0.00776444118212153),
("YZZYIXZZZX",-0.00776444118212153),
("XZZXIXZZZX",-0.00776444118212153),
("IIIIIYZZZY",-0.00594901997573424),
("IIIIIXZZZX",-0.00594901997573424),
("ZIIIIYZZZY",-0.0351167704024114),
("ZIIIIXZZZX",-0.0351167704024114),
("IZIIIYZZZY",0.00272988283532641),
("IZIIIXZZZX",0.00272988283532641),
("IIZIIYZZZY",0.00272988283532641),
("IIZIIXZZZX",0.00272988283532641),
("IIIZIYZZZY",0.00236793689958447),
("IIIZIXZZZX",0.00236793689958447),
("IIIIZYZZZY",-0.0330587285877558),
("IIIIZXZZZX",-0.0330587285877558),
("IIIIIYIZZY",-0.00214985764886508),
("IIIIIXIZZX",-0.00214985764886508),
("IIIIIYZIZY",-0.00214985764886508),
("IIIIIXZIZX",-0.00214985764886508),
("IIIIIYZZIY",0.00447907456818256),
("IIIIIXZZIX",0.00447907456818256),
("IIYZYIIYYI",0.00480253198835629),
("IIXZXIIYYI",0.00480253198835629),
("IIYZYIIXXI",0.00480253198835629),
("IIXZXIIXXI",0.00480253198835629),
("IIYYIIIYYI",0.0103288193223016),
("IIXXIIIYYI",0.0103288193223016),
("IIYYIIIXXI",0.0103288193223016),
("IIXXIIIXXI",0.0103288193223016),
("YZYIIIIYYI",-0.00346639184847533),
("XZXIIIIYYI",-0.00346639184847533),
("YZYIIIIXXI",-0.00346639184847533),
("XZXIIIIXXI",-0.00346639184847533),
("IYZZYIYZYI",0.00480253198835629),
("IXZZXIYZYI",0.00480253198835629),
("IYZZYIXZXI",0.00480253198835629),
("IXZZXIXZXI",0.00480253198835629),
("IYZYIIYZYI",0.0103288193223016),
("IXZXIIYZYI",0.0103288193223016),
("IYZYIIXZXI",0.0103288193223016),
("IXZXIIXZXI",0.0103288193223016),
("YYIIIIYZYI",-0.00346639184847533),
("XXIIIIYZYI",-0.00346639184847533),
("YYIIIIXZXI",-0.00346639184847533),
("XXIIIIXZXI",-0.00346639184847533),
("IIIYYYZZYI",0.00211113766859809),
("IIIXXYZZYI",0.00211113766859809),
("IIIYYXZZXI",0.00211113766859809),
("IIIXXXZZXI",0.00211113766859809),
("YZZZYYZZYI",-0.00776444118212153),
("XZZZXYZZYI",-0.00776444118212153),
("YZZZYXZZXI",-0.00776444118212153),
("XZZZXXZZXI",-0.00776444118212153),
("YZZYIYZZYI",0.00657574489918254),
("XZZXIYZZYI",0.00657574489918254),
("YZZYIXZZXI",0.00657574489918254),
("XZZXIXZZXI",0.00657574489918254),
("IIIIIYZZYI",0.0235574423958372),
("IIIIIXZZXI",0.0235574423958372),
("ZIIIIYZZYI",0.0108894077160944),
("ZIIIIXZZXI",0.0108894077160944),
("IZIIIYZZYI",-0.00035188935283895),
("IZIIIXZZXI",-0.00035188935283895),
("IIZIIYZZYI",-0.00035188935283895),
("IIZIIXZZXI",-0.00035188935283895),
("IIIZIYZZYI",-0.00901204279263803),
("IIIZIXZZXI",-0.00901204279263803),
("IIIIZYZZYI",0.0127339139792953),
("IIIIZXZZXI",0.0127339139792953),
("IIIIIYIZYI",-0.00381828120131428),
("IIIIIXIZXI",-0.00381828120131428),
("IIIIIYZIYI",-0.00381828120131428),
("IIIIIXZIXI",-0.00381828120131428),
("IYYIIIYYII",0.00421728487842275),
("IXXIIIYYII",0.00421728487842275),
("IYYIIIXXII",0.00421728487842275),
("IXXIIIXXII",0.00421728487842275),
("IIYZYYZYII",-0.00487974048419149),
("IIXZXYZYII",-0.00487974048419149),
("IIYZYXZXII",-0.00487974048419149),
("IIXZXXZXII",-0.00487974048419149),
("IIYYIYZYII",-0.00346639184847533),
("IIXXIYZYII",-0.00346639184847533),
("IIYYIXZXII",-0.00346639184847533),
("IIXXIXZXII",-0.00346639184847533),
("YZYIIYZYII",0.00486830254508752),
("XZXIIYZYII",0.00486830254508752),
("YZYIIXZXII",0.00486830254508752),
("XZXIIXZXII",0.00486830254508752),
("IYZZYYYIII",-0.00487974048419149),
("IXZZXYYIII",-0.00487974048419149),
("IYZZYXXIII",-0.00487974048419149),
("IXZZXXXIII",-0.00487974048419149),
("IYZYIYYIII",-0.00346639184847533),
("IXZXIYYIII",-0.00346639184847533),
("IYZYIXXIII",-0.00346639184847533),
("IXZXIXXIII",-0.00346639184847533),
("YYIIIYYIII",0.00486830254508752),
("XXIIIYYIII",0.00486830254508752),
("YYIIIXXIII",0.00486830254508752),
("XXIIIXXIII",0.00486830254508752),
("IIIYYIIIII",-0.00491756976241806),
("IIIXXIIIII",-0.00491756976241806),
("ZIIYYIIIII",0.00277574622690495),
("ZIIXXIIIII",0.00277574622690495),
("IZIYYIIIII",0.00362024875588371),
("IZIXXIIIII",0.00362024875588371),
("IIZYYIIIII",0.00362024875588371),
("IIZXXIIIII",0.00362024875588371),
("YZZZYIIIII",-0.00594901997573428),
("XZZZXIIIII",-0.00594901997573428),
("YIZZYIIIII",-0.00214985764886508),
("XIZZXIIIII",-0.00214985764886508),
("YZIZYIIIII",-0.00214985764886508),
("XZIZXIIIII",-0.00214985764886508),
("YZZIYIIIII",0.00447907456818256),
("XZZIXIIIII",0.00447907456818256),
("YZZYIIIIII",0.0235574423958372),
("XZZXIIIIII",0.0235574423958372),
("YIZYIIIIII",-0.00381828120131428),
("XIZXIIIIII",-0.00381828120131428),
("YZIYIIIIII",-0.00381828120131428),
("XZIXIIIIII",-0.00381828120131428),
("IIIIIIIIII",1.07092746636567),
("ZIIIIIIIII",-0.577292099065437),
("IZIIIIIIII",-0.424481753172713),
("ZZIIIIIIII",0.0624551252313693),
("IIZIIIIIII",-0.424481753172713),
("ZIZIIIIIII",0.0624551252313693),
("IZZIIIIIII",0.065584523154584),
("IIIZIIIIII",-0.389917764741521),
("ZIIZIIIIII",0.0539298607735884),
("IZIZIIIIII",0.0602255013995459),
("IIZZIIIIII",0.0602255013995459),
("YZZYZIIIII",0.00436055255503048),
("XZZXZIIIII",0.00436055255503048),
("IIIIZIIIII",-0.301015321589479),
("ZIIIZIIIII",0.0836012196724618),
("IZIIZIIIII",0.062788763434712),
("IIZIZIIIII",0.062788763434712),
("IIIZZIIIII",0.0536214107226148),
("IIIYYZIIII",0.0105401874090264),
("IIIXXZIIII",0.0105401874090264),
("YZZZYZIIII",-0.0351167704024114),
("XZZZXZIIII",-0.0351167704024114),
("YZZYIZIIII",0.0108894077160944),
("XZZXIZIIII",0.0108894077160944),
("IIIIIZIIII",-0.577292099065437),
("ZIIIIZIIII",0.114091635010207),
("IZIIIZIIII",0.0673234277764568),
("IIZIIZIIII",0.0673234277764568),
("IIIZIZIIII",0.0605056056727709),
("IIIIZZIIII",0.114339546849775),
("IIIYYIZIII",-0.00118228323247258),
("IIIXXIZIII",-0.00118228323247258),
("YZZZYIZIII",0.00272988283532641),
("XZZZXIZIII",0.00272988283532641),
("YZZYIIZIII",-0.00035188935283895),
("XZZXIIZIII",-0.00035188935283895),
("IIIIIIZIII",-0.424481753172713),
("ZIIIIIZIII",0.0673234277764568),
("IZIIIIZIII",0.0782363777898523),
("IIZIIIZIII",0.0698018080330068),
("IIIZIIZIII",0.0705543207218475),
("IIIIZIZIII",0.0687855242844466),
("IIIIIZZIII",0.0624551252313693),
("IIIYYIIZII",-0.00118228323247258),
("IIIXXIIZII",-0.00118228323247258),
("YZZZYIIZII",0.00272988283532641),
("XZZZXIIZII",0.00272988283532641),
("YZZYIIIZII",-0.00035188935283895),
("XZZXIIIZII",-0.00035188935283895),
("IIIIIIIZII",-0.424481753172713),
("ZIIIIIIZII",0.0673234277764568),
("IZIIIIIZII",0.0698018080330068),
("IIZIIIIZII",0.0782363777898523),
("IIIZIIIZII",0.0705543207218475),
("IIIIZIIZII",0.0687855242844466),
("IIIIIZIZII",0.0624551252313693),
("IIIIIIZZII",0.065584523154584),
("IIIYYIIIZI",-0.00154067008970742),
("IIIXXIIIZI",-0.00154067008970742),
("YZZZYIIIZI",0.00236793689958447),
("XZZZXIIIZI",0.00236793689958447),
("YZZYIIIIZI",-0.00901204279263803),
("XZZXIIIIZI",-0.00901204279263803),
("IIIIIIIIZI",-0.389917764741521),
("ZIIIIIIIZI",0.0605056056727709),
("IZIIIIIIZI",0.0705543207218475),
("IIZIIIIIZI",0.0705543207218475),
("IIIZIIIIZI",0.0847039180223953),
("IIIIZIIIZI",0.0566560675528197),
("IIIIIZIIZI",0.0539298607735884),
("IIIIIIZIZI",0.0602255013995459),
("IIIIIIIZZI",0.0602255013995459),
("IIIIIYZZYZ",0.00436055255503048),
("IIIIIXZZXZ",0.00436055255503048),
("IIIYYIIIIZ",0.0117336239120741),
("IIIXXIIIIZ",0.0117336239120741),
("YZZZYIIIIZ",-0.0330587285877558),
("XZZZXIIIIZ",-0.0330587285877558),
("YZZYIIIIIZ",0.0127339139792953),
("XZZXIIIIIZ",0.0127339139792953),
("IIIIIIIIIZ",-0.301015321589479),
("ZIIIIIIIIZ",0.114339546849775),
("IZIIIIIIIZ",0.0687855242844466),
("IIZIIIIIIZ",0.0687855242844466),
("IIIZIIIIIZ",0.0566560675528197),
("IIIIZIIIIZ",0.123570872248984),
("IIIIIZIIIZ",0.0836012196724618),
("IIIIIIZIIZ",0.062788763434712),
("IIIIIIIZIZ",0.062788763434712),
("IIIIIIIIZZ",0.0536214107226148)]

from classiq importieren ModelDesigner
from classiq.interface.chemistry.operator import PauliOperator
from classiq.interface.generator.suzuki_trotter import SuzukiTrotter, SuzukiParameter

Modell_Designer = Modell-Designer()
trotter_params = SuzukiTrotter(
    pauli_operator=PauliOperator(pauli_list=LiH),
    evolution_coefficient=1,
    suzuki_parameters=SuzukiParameters(order=1, repetitions=1),
)

model_designer.SuzukiTrotter(params=trotter_params)
Ergebnis = model_designer.synthesize()
result.show_interactive()

Mit dem Python-SDK von Classiq - obwohl eine gleichwertige Schaltung auch mit der Classiq-Erweiterung in Visual Studio Code entworfen werden kann - geben wir zunächst an, dass wir eine Suzuki-Trotter-Schaltung entwerfen wollen. Wir importieren die Pauli-Kette des Lithiumhydrid-Moleküls und beenden den Code mit einigen Spezifikationen für die Suzuki-Trotter-Funktion. Wir geben den Evolutionskoeffizienten, 1, und die gewünschte Reihenfolge und Wiederholung für unsere Suzuki-Trotter-Funktion an. Wir haben uns für eine einzige Wiederholung entschieden, da mehr Wiederholungen einen präziseren, aber auch größeren Quantensimulationsschaltkreis ergeben würden.

Das war's schon! Die interaktive Schaltung, die unten teilweise gezeigt wird, ist hier verfügbar und wurde mit Classiq Version 0.14.2 erstellt. Die Schaltung verwendet zehn Qubits und hat eine Tiefe von 1057.

Wie diese Lösungen im Vergleich zu den Lösungen der Mitbewerber während des einmonatigen Wettbewerbs abschneiden, können Sie hier nachlesen.

Jenseits von Lithiumhydrid

Classiq-Kunden können den gleichen Ansatz verwenden, um komplexere Moleküle zu simulieren. Nachfolgend finden Sie beispielsweise den Code für die Generierung der Pauli-Kette und die Simulation einesH2O-Moleküls.


from classiq importieren ModelDesigner
from classiq.interface.generator.model.constraints import OptimizationParameter
from classiq.interface.chemistry.ground_state_problem importieren GroundStateProblem
from classiq.interface.chemistry.molecule importieren Molekül
from classiq.interface.chemistry.operator importiere Pauli-Operator
from classiq.interface.generator.suzuki_trotter import SuzukiTrotter, SuzukiParameter

Molekül_H2O = Molekül(
    atoms=[("O", (0.0, 0.0, 0.0)), ("H", (0, 0.586, 0.757)), ("H", (0, 0.586, -0.757))]
)

gs_problem = Grundzustands-Problem(
        Molekül=Molekül_H2O,
        basis="sto3g",
        mapping="jordan_wigner",
        z2_symmetries=True,
        freeze_core=True,
    )

hamiltonian = gs_problem.generate_hamiltonian()

model_designer = ModelDesigner()
trotter_params = SuzukiTrotter(
    pauli_operator=PauliOperator(pauli_list=hamiltonian.pauli_list),
    evolution_coefficient=1,
    suzuki_parameters=SuzukiParameters(order=1, repetitions=1),
    use_naive_evolution=False,
)

model_designer.SuzukiTrotter(params=trotter_params)
Ergebnis = model_designer.synthesize()
result.show_interactive()

Und hier ist die resultierende interaktive Schaltung der Tiefe 2120 mit nur 9 Qubits.

Classiq hat das Fachwissen von Dutzenden seiner Wissenschaftler und Quantensoftware-Ingenieure in der Softwareplattform gebündelt. Das Ergebnis: ein System, das automatisch effiziente Quantenschaltungen für komplexe Probleme generieren kann, wodurch es schneller und einfacher denn je wird, reale Probleme mit Quantencomputern zu lösen. Wenn die Schaltkreise eine überschaubare Größe haben, erstellt Classiq Lösungen, die den besten manuell erstellten Schaltkreisen ebenbürtig sind. Wenn die Schaltkreise größer sind als die, die ein Mensch vernünftigerweise erstellen kann, können Sie mit Classiq dank seiner leistungsstarken Funktionen weiter vorankommen.

Mit Classiq ist es nicht erforderlich, auf Gatterebene zu arbeiten. Stattdessen arbeiten Classiq-Kunden auf einer höheren Ebene, indem sie die gewünschte Funktionalität des Schaltkreises und die geltenden Einschränkungen angeben und der Classiq-Plattform erlauben, die richtige optimierte Implementierung aus Milliarden von Optionen in einem riesigen Designraum zu finden. 

Vereinbaren Sie einen Termin für eine Live-Demonstration der Classiq-Plattform, um sie in Aktion zu erleben, oder nehmen Sie Kontakt mit uns auf, um zu erfahren, wie Sie in wenigen Minuten branchenführende Quantenschaltungen erstellen können.

In dieser Notiz wird gezeigt, wie die Classiq-Plattform zur Lösung des Hamilton-Simulationsproblems verwendet wird, das Teil unseres jüngsten Programmierwettbewerbs war. Anschließend zeigen wir ein komplexeres Beispiel - die Simulation einesH2O-Moleküls.

Einführung

Die chemische Simulation ist eine der spannendsten Anwendungen für Quantencomputer. Wenn präzise Simulationen von Elektron-Elektron-Wechselwirkungen erforderlich sind, kann man manchmal einen klassischen Computer verwenden, aber klassische Computer haben Schwierigkeiten, komplexere molekulare Wechselwirkungen zu simulieren. Am besten ist es, diese Teilchenwechselwirkungen auf der Quantenebene zu simulieren, und dazu eignet sich ein Quantencomputer hervorragend. 

Die Fähigkeit, molekulare Wechselwirkungen genau zu simulieren, wird weitreichende Anwendungen haben. In der Arzneimittelforschung wird sie die rasche Entwicklung von Impfstoffen und neuen Heilmitteln für Krankheiten ermöglichen. In der Materialforschung können wir auf die Entdeckung von Materialien mit einem besseren Verhältnis von Festigkeit zu Gewicht und umweltfreundlichen Baumaterialien hoffen.

Das Lithiumhydrid-Hamiltonian-Simulationsproblem

In unserem kürzlich durchgeführten Kodierungswettbewerb haben wir die Teilnehmer gebeten, eine Schaltung mit nicht mehr als zehn Qubits zu entwickeln, die den unitären e-iH annähert, wobei H der Qubit-Hamiltonian eines LiH (Lithiumhydrid)-Moleküls ist. Der LiH-Hamiltonian besteht aus 276 Pauli-Strings und ist zu finden hier. Der Approximationsfehler sollte weniger als 0,1 betragen, und die Schaltung sollte nur aus den CX- und Ein-Qubit-Gattern bestehen.

Codierung mit Classiq

Um dieses Problem mit Classiq zu lösen, verwenden wir die Suzuki-Trotter-Methode, eine der effizientesten Methoden zur Simulation von Hamiltonianern und zur Erzeugung von Quantensimulationsschaltungen. Die Erstellung dieser Schaltung ist ganz einfach. Wir geben die gewünschte Funktion der Schaltung an, und die Plattform erzeugt eine effiziente Quantenschaltung. Hier ist der Code: 


LiH = [("IIIYYIIIYY",0.00303465683020485),
("IIIXXIIIYY",0.00303465683020485),
("IIIYYIIIXX",0.00303465683020485),
("IIIXXIIIXX",0.00303465683020485),
("YZZZYIIIYY",-0.00837336142426481),
("XZZZXIIIYY",-0.00837336142426481),
("YZZZYIIIXX",-0.00837336142426481),
("XZZZXIIIXX",-0.00837336142426481),
("YZZYIIIIYY",0.00211113766859809),
("XZZXIIIIYY",0.00211113766859809),
("YZZYIIIIXX",0.00211113766859809),
("XZZXIIIIXX",0.00211113766859809),
("IIIIIIIIYY",-0.00491756976241806),
("IIIIIIIIXX",-0.00491756976241806),
("ZIIIIIIIYY",0.0105401874090264),
("ZIIIIIIIXX",0.0105401874090264),
("IZIIIIIIYY",-0.00118228323247258),
("IZIIIIIIXX",-0.00118228323247258),
("IIZIIIIIYY",-0.00118228323247258),
("IIZIIIIIXX",-0.00118228323247258),
("IIIZIIIIYY",-0.00154067008970742),
("IIIZIIIIXX",-0.00154067008970742),
("IIIIZIIIYY",0.0117336239120741),
("IIIIZIIIXX",0.0117336239120741),
("IIIIIZIIYY",0.00277574622690495),
("IIIIIZIIXX",0.00277574622690495),
("IIIIIIZIYY",0.00362024875588371),
("IIIIIIZIXX",0.00362024875588371),
("IIIIIIIZYY",0.00362024875588371),
("IIIIIIIZXX",0.00362024875588371),
("IIYZYIIYZY",0.00599676084973456),
("IIXZXIIYZY",0.00599676084973456),
("IIYZYIIXZX",0.00599676084973456),
("IIXZXIIXZX",0.00599676084973456),
("IIYYIIIYZY",0.00480253198835629),
("IIXXIIIYZY",0.00480253198835629),
("IIYYIIIXZX",0.00480253198835629),
("IIXXIIIXZX",0.00480253198835629),
("YZYIIIIYZY",-0.00487974048419149),
("XZXIIIIYZY",-0.00487974048419149),
("YZYIIIIXZX",-0.00487974048419149),
("XZXIIIIXZX",-0.00487974048419149),
("IYZZYIYZZY",0.00599676084973456),
("IXZZXIYZZY",0.00599676084973456),
("IYZZYIXZZX",0.00599676084973456),
("IXZZXIXZZX",0.00599676084973456),
("IYZYIIYZZY",0.00480253198835629),
("IXZXIIYZZY",0.00480253198835629),
("IYZYIIXZZX",0.00480253198835629),
("IXZXIIXZZX",0.00480253198835629),
("YYIIIIYZZY",-0.00487974048419149),
("XXIIIIYZZY",-0.00487974048419149),
("YYIIIIXZZX",-0.00487974048419149),
("XXIIIIXZZX",-0.00487974048419149),
("IIIYYYZZZY",-0.00837336142426481),
("IIIXXYZZZY",-0.00837336142426481),
("IIIYYXZZZX",-0.00837336142426481),
("IIIXXXZZZX",-0.00837336142426481),
("YZZZYYZZZY",0.0307383271773138),
("XZZZXYZZZY",0.0307383271773138),
("YZZZYXZZZX",0.0307383271773138),
("XZZZXXZZZX",0.0307383271773138),
("YZZYIYZZZY",-0.00776444118212153),
("XZZXIYZZZY",-0.00776444118212153),
("YZZYIXZZZX",-0.00776444118212153),
("XZZXIXZZZX",-0.00776444118212153),
("IIIIIYZZZY",-0.00594901997573424),
("IIIIIXZZZX",-0.00594901997573424),
("ZIIIIYZZZY",-0.0351167704024114),
("ZIIIIXZZZX",-0.0351167704024114),
("IZIIIYZZZY",0.00272988283532641),
("IZIIIXZZZX",0.00272988283532641),
("IIZIIYZZZY",0.00272988283532641),
("IIZIIXZZZX",0.00272988283532641),
("IIIZIYZZZY",0.00236793689958447),
("IIIZIXZZZX",0.00236793689958447),
("IIIIZYZZZY",-0.0330587285877558),
("IIIIZXZZZX",-0.0330587285877558),
("IIIIIYIZZY",-0.00214985764886508),
("IIIIIXIZZX",-0.00214985764886508),
("IIIIIYZIZY",-0.00214985764886508),
("IIIIIXZIZX",-0.00214985764886508),
("IIIIIYZZIY",0.00447907456818256),
("IIIIIXZZIX",0.00447907456818256),
("IIYZYIIYYI",0.00480253198835629),
("IIXZXIIYYI",0.00480253198835629),
("IIYZYIIXXI",0.00480253198835629),
("IIXZXIIXXI",0.00480253198835629),
("IIYYIIIYYI",0.0103288193223016),
("IIXXIIIYYI",0.0103288193223016),
("IIYYIIIXXI",0.0103288193223016),
("IIXXIIIXXI",0.0103288193223016),
("YZYIIIIYYI",-0.00346639184847533),
("XZXIIIIYYI",-0.00346639184847533),
("YZYIIIIXXI",-0.00346639184847533),
("XZXIIIIXXI",-0.00346639184847533),
("IYZZYIYZYI",0.00480253198835629),
("IXZZXIYZYI",0.00480253198835629),
("IYZZYIXZXI",0.00480253198835629),
("IXZZXIXZXI",0.00480253198835629),
("IYZYIIYZYI",0.0103288193223016),
("IXZXIIYZYI",0.0103288193223016),
("IYZYIIXZXI",0.0103288193223016),
("IXZXIIXZXI",0.0103288193223016),
("YYIIIIYZYI",-0.00346639184847533),
("XXIIIIYZYI",-0.00346639184847533),
("YYIIIIXZXI",-0.00346639184847533),
("XXIIIIXZXI",-0.00346639184847533),
("IIIYYYZZYI",0.00211113766859809),
("IIIXXYZZYI",0.00211113766859809),
("IIIYYXZZXI",0.00211113766859809),
("IIIXXXZZXI",0.00211113766859809),
("YZZZYYZZYI",-0.00776444118212153),
("XZZZXYZZYI",-0.00776444118212153),
("YZZZYXZZXI",-0.00776444118212153),
("XZZZXXZZXI",-0.00776444118212153),
("YZZYIYZZYI",0.00657574489918254),
("XZZXIYZZYI",0.00657574489918254),
("YZZYIXZZXI",0.00657574489918254),
("XZZXIXZZXI",0.00657574489918254),
("IIIIIYZZYI",0.0235574423958372),
("IIIIIXZZXI",0.0235574423958372),
("ZIIIIYZZYI",0.0108894077160944),
("ZIIIIXZZXI",0.0108894077160944),
("IZIIIYZZYI",-0.00035188935283895),
("IZIIIXZZXI",-0.00035188935283895),
("IIZIIYZZYI",-0.00035188935283895),
("IIZIIXZZXI",-0.00035188935283895),
("IIIZIYZZYI",-0.00901204279263803),
("IIIZIXZZXI",-0.00901204279263803),
("IIIIZYZZYI",0.0127339139792953),
("IIIIZXZZXI",0.0127339139792953),
("IIIIIYIZYI",-0.00381828120131428),
("IIIIIXIZXI",-0.00381828120131428),
("IIIIIYZIYI",-0.00381828120131428),
("IIIIIXZIXI",-0.00381828120131428),
("IYYIIIYYII",0.00421728487842275),
("IXXIIIYYII",0.00421728487842275),
("IYYIIIXXII",0.00421728487842275),
("IXXIIIXXII",0.00421728487842275),
("IIYZYYZYII",-0.00487974048419149),
("IIXZXYZYII",-0.00487974048419149),
("IIYZYXZXII",-0.00487974048419149),
("IIXZXXZXII",-0.00487974048419149),
("IIYYIYZYII",-0.00346639184847533),
("IIXXIYZYII",-0.00346639184847533),
("IIYYIXZXII",-0.00346639184847533),
("IIXXIXZXII",-0.00346639184847533),
("YZYIIYZYII",0.00486830254508752),
("XZXIIYZYII",0.00486830254508752),
("YZYIIXZXII",0.00486830254508752),
("XZXIIXZXII",0.00486830254508752),
("IYZZYYYIII",-0.00487974048419149),
("IXZZXYYIII",-0.00487974048419149),
("IYZZYXXIII",-0.00487974048419149),
("IXZZXXXIII",-0.00487974048419149),
("IYZYIYYIII",-0.00346639184847533),
("IXZXIYYIII",-0.00346639184847533),
("IYZYIXXIII",-0.00346639184847533),
("IXZXIXXIII",-0.00346639184847533),
("YYIIIYYIII",0.00486830254508752),
("XXIIIYYIII",0.00486830254508752),
("YYIIIXXIII",0.00486830254508752),
("XXIIIXXIII",0.00486830254508752),
("IIIYYIIIII",-0.00491756976241806),
("IIIXXIIIII",-0.00491756976241806),
("ZIIYYIIIII",0.00277574622690495),
("ZIIXXIIIII",0.00277574622690495),
("IZIYYIIIII",0.00362024875588371),
("IZIXXIIIII",0.00362024875588371),
("IIZYYIIIII",0.00362024875588371),
("IIZXXIIIII",0.00362024875588371),
("YZZZYIIIII",-0.00594901997573428),
("XZZZXIIIII",-0.00594901997573428),
("YIZZYIIIII",-0.00214985764886508),
("XIZZXIIIII",-0.00214985764886508),
("YZIZYIIIII",-0.00214985764886508),
("XZIZXIIIII",-0.00214985764886508),
("YZZIYIIIII",0.00447907456818256),
("XZZIXIIIII",0.00447907456818256),
("YZZYIIIIII",0.0235574423958372),
("XZZXIIIIII",0.0235574423958372),
("YIZYIIIIII",-0.00381828120131428),
("XIZXIIIIII",-0.00381828120131428),
("YZIYIIIIII",-0.00381828120131428),
("XZIXIIIIII",-0.00381828120131428),
("IIIIIIIIII",1.07092746636567),
("ZIIIIIIIII",-0.577292099065437),
("IZIIIIIIII",-0.424481753172713),
("ZZIIIIIIII",0.0624551252313693),
("IIZIIIIIII",-0.424481753172713),
("ZIZIIIIIII",0.0624551252313693),
("IZZIIIIIII",0.065584523154584),
("IIIZIIIIII",-0.389917764741521),
("ZIIZIIIIII",0.0539298607735884),
("IZIZIIIIII",0.0602255013995459),
("IIZZIIIIII",0.0602255013995459),
("YZZYZIIIII",0.00436055255503048),
("XZZXZIIIII",0.00436055255503048),
("IIIIZIIIII",-0.301015321589479),
("ZIIIZIIIII",0.0836012196724618),
("IZIIZIIIII",0.062788763434712),
("IIZIZIIIII",0.062788763434712),
("IIIZZIIIII",0.0536214107226148),
("IIIYYZIIII",0.0105401874090264),
("IIIXXZIIII",0.0105401874090264),
("YZZZYZIIII",-0.0351167704024114),
("XZZZXZIIII",-0.0351167704024114),
("YZZYIZIIII",0.0108894077160944),
("XZZXIZIIII",0.0108894077160944),
("IIIIIZIIII",-0.577292099065437),
("ZIIIIZIIII",0.114091635010207),
("IZIIIZIIII",0.0673234277764568),
("IIZIIZIIII",0.0673234277764568),
("IIIZIZIIII",0.0605056056727709),
("IIIIZZIIII",0.114339546849775),
("IIIYYIZIII",-0.00118228323247258),
("IIIXXIZIII",-0.00118228323247258),
("YZZZYIZIII",0.00272988283532641),
("XZZZXIZIII",0.00272988283532641),
("YZZYIIZIII",-0.00035188935283895),
("XZZXIIZIII",-0.00035188935283895),
("IIIIIIZIII",-0.424481753172713),
("ZIIIIIZIII",0.0673234277764568),
("IZIIIIZIII",0.0782363777898523),
("IIZIIIZIII",0.0698018080330068),
("IIIZIIZIII",0.0705543207218475),
("IIIIZIZIII",0.0687855242844466),
("IIIIIZZIII",0.0624551252313693),
("IIIYYIIZII",-0.00118228323247258),
("IIIXXIIZII",-0.00118228323247258),
("YZZZYIIZII",0.00272988283532641),
("XZZZXIIZII",0.00272988283532641),
("YZZYIIIZII",-0.00035188935283895),
("XZZXIIIZII",-0.00035188935283895),
("IIIIIIIZII",-0.424481753172713),
("ZIIIIIIZII",0.0673234277764568),
("IZIIIIIZII",0.0698018080330068),
("IIZIIIIZII",0.0782363777898523),
("IIIZIIIZII",0.0705543207218475),
("IIIIZIIZII",0.0687855242844466),
("IIIIIZIZII",0.0624551252313693),
("IIIIIIZZII",0.065584523154584),
("IIIYYIIIZI",-0.00154067008970742),
("IIIXXIIIZI",-0.00154067008970742),
("YZZZYIIIZI",0.00236793689958447),
("XZZZXIIIZI",0.00236793689958447),
("YZZYIIIIZI",-0.00901204279263803),
("XZZXIIIIZI",-0.00901204279263803),
("IIIIIIIIZI",-0.389917764741521),
("ZIIIIIIIZI",0.0605056056727709),
("IZIIIIIIZI",0.0705543207218475),
("IIZIIIIIZI",0.0705543207218475),
("IIIZIIIIZI",0.0847039180223953),
("IIIIZIIIZI",0.0566560675528197),
("IIIIIZIIZI",0.0539298607735884),
("IIIIIIZIZI",0.0602255013995459),
("IIIIIIIZZI",0.0602255013995459),
("IIIIIYZZYZ",0.00436055255503048),
("IIIIIXZZXZ",0.00436055255503048),
("IIIYYIIIIZ",0.0117336239120741),
("IIIXXIIIIZ",0.0117336239120741),
("YZZZYIIIIZ",-0.0330587285877558),
("XZZZXIIIIZ",-0.0330587285877558),
("YZZYIIIIIZ",0.0127339139792953),
("XZZXIIIIIZ",0.0127339139792953),
("IIIIIIIIIZ",-0.301015321589479),
("ZIIIIIIIIZ",0.114339546849775),
("IZIIIIIIIZ",0.0687855242844466),
("IIZIIIIIIZ",0.0687855242844466),
("IIIZIIIIIZ",0.0566560675528197),
("IIIIZIIIIZ",0.123570872248984),
("IIIIIZIIIZ",0.0836012196724618),
("IIIIIIZIIZ",0.062788763434712),
("IIIIIIIZIZ",0.062788763434712),
("IIIIIIIIZZ",0.0536214107226148)]

from classiq importieren ModelDesigner
from classiq.interface.chemistry.operator import PauliOperator
from classiq.interface.generator.suzuki_trotter import SuzukiTrotter, SuzukiParameter

Modell_Designer = Modell-Designer()
trotter_params = SuzukiTrotter(
    pauli_operator=PauliOperator(pauli_list=LiH),
    evolution_coefficient=1,
    suzuki_parameters=SuzukiParameters(order=1, repetitions=1),
)

model_designer.SuzukiTrotter(params=trotter_params)
Ergebnis = model_designer.synthesize()
result.show_interactive()

Mit dem Python-SDK von Classiq - obwohl eine gleichwertige Schaltung auch mit der Classiq-Erweiterung in Visual Studio Code entworfen werden kann - geben wir zunächst an, dass wir eine Suzuki-Trotter-Schaltung entwerfen wollen. Wir importieren die Pauli-Kette des Lithiumhydrid-Moleküls und beenden den Code mit einigen Spezifikationen für die Suzuki-Trotter-Funktion. Wir geben den Evolutionskoeffizienten, 1, und die gewünschte Reihenfolge und Wiederholung für unsere Suzuki-Trotter-Funktion an. Wir haben uns für eine einzige Wiederholung entschieden, da mehr Wiederholungen einen präziseren, aber auch größeren Quantensimulationsschaltkreis ergeben würden.

Das war's schon! Die interaktive Schaltung, die unten teilweise gezeigt wird, ist hier verfügbar und wurde mit Classiq Version 0.14.2 erstellt. Die Schaltung verwendet zehn Qubits und hat eine Tiefe von 1057.

Wie diese Lösungen im Vergleich zu den Lösungen der Mitbewerber während des einmonatigen Wettbewerbs abschneiden, können Sie hier nachlesen.

Jenseits von Lithiumhydrid

Classiq-Kunden können den gleichen Ansatz verwenden, um komplexere Moleküle zu simulieren. Nachfolgend finden Sie beispielsweise den Code für die Generierung der Pauli-Kette und die Simulation einesH2O-Moleküls.


from classiq importieren ModelDesigner
from classiq.interface.generator.model.constraints import OptimizationParameter
from classiq.interface.chemistry.ground_state_problem importieren GroundStateProblem
from classiq.interface.chemistry.molecule importieren Molekül
from classiq.interface.chemistry.operator importiere Pauli-Operator
from classiq.interface.generator.suzuki_trotter import SuzukiTrotter, SuzukiParameter

Molekül_H2O = Molekül(
    atoms=[("O", (0.0, 0.0, 0.0)), ("H", (0, 0.586, 0.757)), ("H", (0, 0.586, -0.757))]
)

gs_problem = Grundzustands-Problem(
        Molekül=Molekül_H2O,
        basis="sto3g",
        mapping="jordan_wigner",
        z2_symmetries=True,
        freeze_core=True,
    )

hamiltonian = gs_problem.generate_hamiltonian()

model_designer = ModelDesigner()
trotter_params = SuzukiTrotter(
    pauli_operator=PauliOperator(pauli_list=hamiltonian.pauli_list),
    evolution_coefficient=1,
    suzuki_parameters=SuzukiParameters(order=1, repetitions=1),
    use_naive_evolution=False,
)

model_designer.SuzukiTrotter(params=trotter_params)
Ergebnis = model_designer.synthesize()
result.show_interactive()

Und hier ist die resultierende interaktive Schaltung der Tiefe 2120 mit nur 9 Qubits.

Classiq hat das Fachwissen von Dutzenden seiner Wissenschaftler und Quantensoftware-Ingenieure in der Softwareplattform gebündelt. Das Ergebnis: ein System, das automatisch effiziente Quantenschaltungen für komplexe Probleme generieren kann, wodurch es schneller und einfacher denn je wird, reale Probleme mit Quantencomputern zu lösen. Wenn die Schaltkreise eine überschaubare Größe haben, erstellt Classiq Lösungen, die den besten manuell erstellten Schaltkreisen ebenbürtig sind. Wenn die Schaltkreise größer sind als die, die ein Mensch vernünftigerweise erstellen kann, können Sie mit Classiq dank seiner leistungsstarken Funktionen weiter vorankommen.

Mit Classiq ist es nicht erforderlich, auf Gatterebene zu arbeiten. Stattdessen arbeiten Classiq-Kunden auf einer höheren Ebene, indem sie die gewünschte Funktionalität des Schaltkreises und die geltenden Einschränkungen angeben und der Classiq-Plattform erlauben, die richtige optimierte Implementierung aus Milliarden von Optionen in einem riesigen Designraum zu finden. 

Vereinbaren Sie einen Termin für eine Live-Demonstration der Classiq-Plattform, um sie in Aktion zu erleben, oder nehmen Sie Kontakt mit uns auf, um zu erfahren, wie Sie in wenigen Minuten branchenführende Quantenschaltungen erstellen können.

Über "Der Podcast des Qubit-Typen"

Der Podcast wird von The Qubit Guy (Yuval Boger, unser Chief Marketing Officer) moderiert. In ihm diskutieren Vordenker der Quanteninformatik über geschäftliche und technische Fragen, die das Ökosystem der Quanteninformatik betreffen. Unsere Gäste geben interessante Einblicke in Quantencomputer-Software und -Algorithmen, Quantencomputer-Hardware, Schlüsselanwendungen für Quantencomputer, Marktstudien der Quantenindustrie und vieles mehr.

Wenn Sie einen Gast für den Podcast vorschlagen möchten, kontaktieren Sie uns bitte .

Erstellen Sie Quantensoftware ohne Grenzen 

Kontakt