IBM vs. Intel: Variational Quantum Eigensolver
De Variational Quantum Eigensolver is een algoritme dat de minimale eigenwaarde van een Hamiltonian berekent. Dit vertegenwoordigt de som van de energie van alle deeltjes in een quantumsysteem en kan ook worden gebruikt voor berekeningen aan moleculen of optimalisatieproblemen.
IBM: Grondenergie van H2
IBM biedt een prototype; een vrij summier opzetje waar je zelf nog flink wat aan moet sleutelen. In de Qiskit-tutorial is wel een compleet programma voor een vqe te vinden. Als voorbeeld wordt er een H₂-molecuul gebruikt met een intermoleculaire afstand van 0,735 Angstrom. De eigenwaarde van dit molecuul staat voor de elektronische grondenergie van waterstof. Er zijn meerdere opties voor het verwerken van de ruis, het aanpassen van de parameters en het uitvoeren op een simulator of quantumcomputer.
Allereerst wordt de Slsqp-optimizer geïmporteerd, waarna twee qubits worden met elk vier parameters worden gedefinieerd. Deze worden door de optimizer aangepast om het laagste resultaat te vinden. Om de verwachte waarden te berekenen, wordt de Estimator gebruikt, die de quantumtoestanden berekent. Daarna worden de Pauli-termen die het waterstofmolecuul beschrijven ingevoerd, waarmee de eigenwaarde kan worden berekend. Deze komt uit op ongeveer -1,857275020719397, wat overeenkomt met de elektrische grondenergie van het molecuul.
Intel: Hamiltonian van twee qubits
Intel heeft als voorbeeld een kant-en-klaar programma dat gebruikmaakt van het Bound Optimization By Quadratic Approximation-optimalisatie-algoritme dat onderdeel is van de dlib-library. Voor de Hamiltonian worden de Pauli-termen van een paar qubits gebruikt. Allereerst worden twee qubits en vier parameters aangemaakt, net als het ProbabilityRegister dat de waarschijnlijkheid van elke toestand opslaat.
Omdat er Z- en X-termen voorkomen in de Hamiltonoperator moeten twee experimenten of quantum_kernels worden aangemaakt. De eerste kan gebruikt worden om de Z-waarden te berekenen, de tweede bevat twee Hadamard-gates om de X-waarden te kunnen berekenen. Daarna wordt de waarde van elk van de termen berekend, aan de hand van de ingevoerde parameters.
Als alle resultaten bekend zijn, wordt find_min_bobyqa gebruikt om de functie opnieuw uit te voeren met aangepaste parameters, totdat de mimimale waarde gevonden is. Na het compileren en uitvoeren van het programma blijkt dat de berekende eigenwaarde van -0,901388 overeenkomt met de -0,90138781 die een klassieke eigensolver geeft. In het json-uitvoerbestand zijn ook de uiteindelijke parameters te vinden waarbij de laagste waarde is berekend.