Variational Quantum Eigensolver (VQE) Algorithm Implementation
VQE is a quantum-classical hybrid algorithm for finding the ground state energy of quantum systems. It uses a parameterized quantum circuit (ansatz) to prepare trial states and classical optimization to minimize the energy expectation value.
Key Features:
Algorithm Flow:
This implementation targets production use with real quantum hardware.
Variational Quantum Eigensolver (VQE) Algorithm Implementation VQE is a quantum-classical hybrid algorithm for finding the ground state energy of quantum systems. It uses a parameterized quantum circuit (ansatz) to prepare trial states and classical optimization to minimize the energy expectation value. Key Features: - Multiple ansatz types (hardware-efficient, UCCSD-inspired, symmetry-preserving) - Pauli string Hamiltonian representation with measurement grouping - Integration with fastmath optimization for classical optimization - Comprehensive analysis and convergence monitoring - Support for both gate-based and measurement-based implementations Algorithm Flow: 1. Initialize parameterized quantum circuit (ansatz) 2. Prepare trial state |ψ(θ)⟩ with parameters θ 3. Measure expectation value ⟨ψ(θ)|H|ψ(θ)⟩ 4. Use classical optimizer to update parameters 5. Repeat until convergence This implementation targets production use with real quantum hardware.
(analyze-vqe-landscape objective-fn optimal-params perturbation-size)
Analyze the VQE energy landscape around optimal parameters.
Parameters:
Returns: Map with landscape analysis
Analyze the VQE energy landscape around optimal parameters. Parameters: - objective-fn: VQE objective function - optimal-params: Optimal parameters found - perturbation-size: Size of parameter perturbations for analysis Returns: Map with landscape analysis
(create-vqe-objective hamiltonian ansatz-fn backend options)
Create the objective function for VQE optimization.
This function creates a production-ready objective function that:
The implementation supports both backend execution (for real hardware) and direct simulation (for testing and development).
Parameters:
Returns: Function that takes parameters and returns energy expectation value
Create the objective function for VQE optimization. This function creates a production-ready objective function that: 1. Takes variational parameters as input 2. Constructs the ansatz circuit with those parameters 3. Executes the circuit on the backend or simulator 4. Calculates the Hamiltonian expectation value from the final quantum state 5. Returns the energy (to be minimized by the optimizer) The implementation supports both backend execution (for real hardware) and direct simulation (for testing and development). Parameters: - hamiltonian: Hamiltonian to minimize (collection of Pauli terms) - ansatz-fn: Function that takes parameters and returns a circuit - backend: Quantum backend for circuit execution (can be nil for direct simulation) - options: Execution options (shots, etc.) Returns: Function that takes parameters and returns energy expectation value
(group-commuting-terms hamiltonian)
Group Hamiltonian terms that can be measured simultaneously.
Terms that commute can be measured in the same quantum circuit execution, reducing the number of measurements needed.
Parameters:
Returns: Vector of groups, where each group is a collection of commuting terms
Group Hamiltonian terms that can be measured simultaneously. Terms that commute can be measured in the same quantum circuit execution, reducing the number of measurements needed. Parameters: - hamiltonian: Collection of Pauli terms Returns: Vector of groups, where each group is a collection of commuting terms
(hamiltonian-expectation hamiltonian quantum-state)
Calculate expectation value of a Hamiltonian.
⟨H⟩ = Σᵢ cᵢ ⟨Pᵢ⟩ where cᵢ are coefficients and Pᵢ are Pauli strings.
Parameters:
Returns: Real expectation value (energy)
Calculate expectation value of a Hamiltonian. ⟨H⟩ = Σᵢ cᵢ ⟨Pᵢ⟩ where cᵢ are coefficients and Pᵢ are Pauli strings. Parameters: - hamiltonian: Collection of Pauli terms - quantum-state: Quantum state to measure Returns: Real expectation value (energy)
(hardware-efficient-ansatz num-qubits)
(hardware-efficient-ansatz num-qubits num-layers)
(hardware-efficient-ansatz num-qubits num-layers entangling-gate)
Create a hardware-efficient ansatz circuit.
This ansatz consists of layers of single-qubit rotations followed by entangling gates, designed to be implementable on near-term quantum devices.
Parameters:
Returns: Function that takes parameters and returns a quantum circuit
Create a hardware-efficient ansatz circuit. This ansatz consists of layers of single-qubit rotations followed by entangling gates, designed to be implementable on near-term quantum devices. Parameters: - num-qubits: Number of qubits - num-layers: Number of ansatz layers (default: 1) - entangling-gate: Type of entangling gate (:cnot, :cz, :crz) (default: :cnot) Returns: Function that takes parameters and returns a quantum circuit
(heisenberg-hamiltonian num-sites)
(heisenberg-hamiltonian num-sites coupling)
(heisenberg-hamiltonian num-sites coupling periodic)
Create a Heisenberg model Hamiltonian for a 1D chain.
H = J Σᵢ (XᵢXᵢ₊₁ + YᵢYᵢ₊₁ + ZᵢZᵢ₊₁)
Parameters:
Returns: Collection of Pauli terms
Create a Heisenberg model Hamiltonian for a 1D chain. H = J Σᵢ (XᵢXᵢ₊₁ + YᵢYᵢ₊₁ + ZᵢZᵢ₊₁) Parameters: - num-sites: Number of sites in the chain - coupling: Coupling strength J (default: 1.0) - periodic: Whether to use periodic boundary conditions (default: true) Returns: Collection of Pauli terms
(measurement-based-expectation hamiltonian measurement-results total-shots)
Calculate expectation value using measurement statistics (for real hardware).
This function is used when running on actual quantum hardware where we get measurement counts rather than direct access to the quantum state.
Parameters:
Returns: Real expectation value estimated from measurements
Calculate expectation value using measurement statistics (for real hardware). This function is used when running on actual quantum hardware where we get measurement counts rather than direct access to the quantum state. Parameters: - hamiltonian: Collection of Pauli terms - measurement-results: Map from bit strings to counts - total-shots: Total number of measurements Returns: Real expectation value estimated from measurements
(molecular-hydrogen-hamiltonian)
(molecular-hydrogen-hamiltonian bond-distance)
Create the Hamiltonian for molecular hydrogen (H2) in the STO-3G basis.
This is a standard benchmark Hamiltonian used in quantum chemistry. The Hamiltonian has 15 terms and operates on 4 qubits.
Parameters:
Returns: Collection of Pauli terms representing the H2 Hamiltonian
Create the Hamiltonian for molecular hydrogen (H2) in the STO-3G basis. This is a standard benchmark Hamiltonian used in quantum chemistry. The Hamiltonian has 15 terms and operates on 4 qubits. Parameters: - bond-distance: Internuclear distance in Angstroms (default: 0.735) Returns: Collection of Pauli terms representing the H2 Hamiltonian
(pauli-string-expectation pauli-string quantum-state)
Calculate expectation value of a single Pauli string.
Parameters:
Returns: Real expectation value
Calculate expectation value of a single Pauli string. Parameters: - pauli-string: String like 'XYZZ' representing Pauli operators - quantum-state: Quantum state to measure Returns: Real expectation value
(pauli-term coefficient pauli-string)
Create a Pauli term with coefficient and Pauli string.
Parameters:
Returns: Map representing a single term in the Hamiltonian
Create a Pauli term with coefficient and Pauli string. Parameters: - coefficient: Real coefficient for the term - pauli-string: String like 'XYZZ' representing tensor product of Pauli operators Returns: Map representing a single term in the Hamiltonian
(symmetry-preserving-ansatz num-qubits num-particles)
(symmetry-preserving-ansatz num-qubits num-particles num-layers)
Create a symmetry-preserving ansatz circuit.
This ansatz preserves certain symmetries like particle number conservation, important for quantum chemistry and condensed matter applications.
Parameters:
Returns: Function that takes parameters and returns a quantum circuit
Create a symmetry-preserving ansatz circuit. This ansatz preserves certain symmetries like particle number conservation, important for quantum chemistry and condensed matter applications. Parameters: - num-qubits: Number of qubits - num-particles: Number of particles to conserve - num-layers: Number of ansatz layers Returns: Function that takes parameters and returns a quantum circuit
(uccsd-inspired-ansatz num-qubits)
(uccsd-inspired-ansatz num-qubits num-excitations)
Create a UCCSD-inspired ansatz circuit.
Unitary Coupled Cluster with Singles and Doubles (UCCSD) is a quantum chemistry ansatz that captures important electronic correlations. This is a simplified version suitable for VQE implementations.
Parameters:
Returns: Function that takes parameters and returns a quantum circuit
Create a UCCSD-inspired ansatz circuit. Unitary Coupled Cluster with Singles and Doubles (UCCSD) is a quantum chemistry ansatz that captures important electronic correlations. This is a simplified version suitable for VQE implementations. Parameters: - num-qubits: Number of qubits (must be even for electron pairs) - num-excitations: Number of excitation operators to include Returns: Function that takes parameters and returns a quantum circuit
(validate-hamiltonian hamiltonian)
Validate that a Hamiltonian is properly formed.
Parameters:
Returns: Boolean indicating validity
Validate that a Hamiltonian is properly formed. Parameters: - hamiltonian: Collection of Pauli terms Returns: Boolean indicating validity
(variational-quantum-eigensolver backend config)
(variational-quantum-eigensolver backend config _options)
Main VQE algorithm implementation.
Parameters:
Returns: Map containing VQE results and analysis
Main VQE algorithm implementation. Parameters: - backend: Quantum backend implementing QuantumBackend protocol - config: VQE configuration map - options: Additional options for execution Returns: Map containing VQE results and analysis
(vqe-convergence-analysis optimization-result)
Analyze VQE convergence from optimization history.
Parameters:
Returns: Map with convergence analysis
Analyze VQE convergence from optimization history. Parameters: - optimization-result: Result from VQE optimization Returns: Map with convergence analysis
(vqe-optimization objective-fn initial-parameters options)
Run VQE optimization using classical optimizer.
Parameters:
Returns: Map with optimization results
Run VQE optimization using classical optimizer. Parameters: - objective-fn: Objective function to minimize - initial-parameters: Starting parameter values - options: Optimization options Returns: Map with optimization results
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close