@@ -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