Skip to content

Commit 18f8c16

Browse files
Near-Clifford alternative
1 parent 559f9ef commit 18f8c16

1 file changed

Lines changed: 19 additions & 0 deletions

File tree

scripts/clifford_vqe_entangled.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,18 +371,37 @@ def fit_ig_entanglement(pl_hamiltonian, bootstrap_theta, n_qubits, ig_edges,
371371
# Does heuristic Clifford+RZ gate set approximation:
372372
# dev = qml.device("qrack.stabilizer", wires=n_qubits)
373373

374+
# Alternative near-Clifford version requires "weak simulation condition"
375+
# @qml.set_shots(100)
376+
# @qml.qnode(dev, mcm_method="one-shot")
377+
# State vector option
374378
@qml.qnode(dev)
375379
def circuit(delta, gamma):
376380
# Initialise to bootstrap computational-basis state
377381
for i in range(n_qubits):
378382
if bootstrap_theta[i]:
379383
qml.X(wires=i)
384+
380385
# Single-qubit rotations
381386
for i in range(n_qubits):
382387
qml.RY(delta[i], wires=i)
388+
389+
# Alternative near-Clifford single-qubit rotations
390+
# for i in range(n_qubits):
391+
# qml.Hadamard(wires=i)
392+
# qml.RZ(delta[i], wires=i)
393+
# qml.Hadamard(wires=i)
394+
383395
# Weak entanglement: one RZZ per interaction-graph edge
384396
for idx, (a, b) in enumerate(ig_edges):
385397
qml.IsingZZ(gamma[idx], wires=[a, b])
398+
399+
# Alternative near-Clifford weak entanglement
400+
# for idx, (a, b) in enumerate(ig_edges):
401+
# qml.CNOT(wires=[a, b])
402+
# qml.RZ(gamma[idx], wires=b)
403+
# qml.CNOT(wires=[a, b])
404+
386405
return qml.expval(pl_hamiltonian)
387406

388407
delta = nppl.zeros(n_qubits, dtype=float, requires_grad=True)

0 commit comments

Comments
 (0)