Initial State ServiceΒΆ

The InitialStateService generates a suitable initial state for a constraint preserving QAOA optimization. It takes a constraint preserving driver Hamiltonian in the Pauli X basis, an optional set of explicit SumConstraints and a DeviceConnectivity and returns a FrozenCircuit preparing a suitable initial state for the optimization.

The constraint preserving driver Hamiltonian can be obtained from the Driver Service.

from parityos.bits import get_q
from parityos.devices.device_connectivity import get_rectangular_nearest_neighbor_connectivity
from parityos.operators.elementary_operator import X, Z
from parityos.optimization.constraint import SumConstraint
from parityos.services.authentication import InteractiveAuth
from parityos.services.client import HTTPClient
from parityos.services.service import InitialStateInput, InitialStateService

# A constraint preserving driver Hamiltonian
driver_hamiltonian = X(get_q(0, 0)) * X(get_q(1, 0)) * X(get_q(2, 0)) - X(get_q(0, 0)) * X(
    get_q(0, 1)
) * X(get_q(0, 2))

# An explicit sum constraint
constraint = SumConstraint(
    Z(get_q(0, 0)) * Z(get_q(1, 0)) * Z(get_q(0, 1))
    + Z(get_q(1, 0)) * Z(get_q(2, 0)) * Z(get_q(2, 1)),
    1,
)

# A 5 x 5 square grid qubit quantum computing device with nearest neighbor interactions
device_layout = get_rectangular_nearest_neighbor_connectivity(5, 5)

# Set up connection to ParityOS cloud service
client = HTTPClient(InteractiveAuth("my_parityos_username"))  # handles authentication
service = InitialStateService(client)  # handles API communication with the cloud service

# Run problem (with a certain configuration or preset and a description to recognize the job by)
# and obtain result
state_circuit = service.run(
    InitialStateInput(driver_hamiltonian, frozenset({constraint}), device_layout),
    "my_preset",
    "My first parityos job.",
)

# The returned circuit implementing a suitable starting state
print(state_circuit)