示例#1
0
def grover_circuit():
    """
    Builds a QuantumCircuit of the qiskit aqua implementation of
    grover's algorithm with set parameters.

    Args:

    Returns:
        Resuling circuit of the qiskit aqua implementation of Grover's
        algorithm after adding measures on every qubit.
    """
    sat_cnf = """
c Example DIMACS 3-sat
p cnf 3 5
-1 -2 -3 0
1 -2 3 0
1 2 -3 0
1 -2 -3 0
-1 2 3 0
"""
#   backend = Aer.get_backend('aer_simulator')
    oracle = SAT(sat_cnf)
    grv = Grover(oracle)
    circ = grv.construct_circuit()

    return add_measures(circ)
示例#2
0
def get_circuit(**kwargs):
    oracle_string = kwargs[
        "oracle"]  # input is binary String of a truth table, like '1000': A & B = 0 => f(x*) = 1

    oracle = TruthTableOracle(oracle_string)
    grover = Grover(oracle)
    grover_circuit = grover.construct_circuit(measurement=True)
    return grover_circuit
示例#3
0
def grover_general_logicalexpression_qiskit(oracle_string: str) -> QuantumCircuit:   
    from qiskit.aqua.algorithms import Grover
    from qiskit.aqua.components.oracles import LogicalExpressionOracle   

    # input is logical expression, like '(A | B) & (A | ~B) & (~A | B)'
    oracle = LogicalExpressionOracle(oracle_string)
    grover = Grover(oracle)
    grover_circuit = grover.construct_circuit(measurement=True)
    return grover_circuit
示例#4
0
def grover_general_truthtable_qiskit(oracle_string: str) -> QuantumCircuit:      
    from qiskit.aqua.algorithms import Grover
    from qiskit.aqua.components.oracles import TruthTableOracle

    # input is binary String of a truth table, like '1000': A & B = 0 => f(x*) = 1
    oracle = TruthTableOracle(oracle_string)
    grover = Grover(oracle)
    grover_circuit = grover.construct_circuit(measurement=True)
    return grover_circuit
示例#5
0
 def test_construct_circuit(self):
     """Test construct_circuit"""
     oracle = QuantumCircuit(2)
     oracle.cz(0, 1)
     grover = Grover(oracle=oracle, good_state=["11"])
     constructed = grover.construct_circuit(1)
     grover_op = GroverOperator(oracle)
     expected = QuantumCircuit(2)
     expected.compose(grover_op.state_preparation, inplace=True)
     expected.compose(grover_op, inplace=True)
     self.assertTrue(Operator(constructed).equiv(Operator(expected)))
示例#6
0
    return resultingAction


""" Starting here... first we'll give the opening message """
print(
    "Grover is an AI who's decisions are based on the result of running the Grover algorithm."
)
print(
    "He tends to cheat more on bad days, when there's more noise in the quantum computer..."
)
print()
""" Get the data from the quantum computer """
expression = 'a & b'
oracle = LogicalExpressionOracle(expression, optimization=True)
grover = Grover(oracle)
grover_compiled = grover.construct_circuit(measurement=True)

# Load our saved IBMQ accounts and get the backend
print("Loading account...")
provider = IBMQ.load_account()

provider = IBMQ.get_provider(hub='ibm-q')
device = provider.get_backend('ibmq_ourense')
#device = least_busy(provider.backends(simulator=False))
print("Selected device: ", device)

job = execute(grover_compiled, backend=device, shots=1024)
job_monitor(job, interval=2)
""" Now we can process the for our RNG stuff """

print("Computing probabilities...")
示例#7
0
文件: 3-sat.py 项目: Hitesh31/Qrouter
                    QuantumRegister, Aer)
import math
import matplotlib.pyplot as plt
from qiskit.aqua import QuantumInstance, run_algorithm
from qiskit.aqua.algorithms import Grover
from qiskit.aqua.components.oracles import LogicalExpressionOracle, TruthTableOracle
from qiskit.compiler import transpile
input_3sat = ''' 
c example DIMACS-CNF 3-SAT
p cnf 3 1
1 -2 -3 0
'''
oracle = LogicalExpressionOracle(input_3sat)
# cir = oracle.construct_circuit()
# print(cir)
grover = Grover(oracle)
circuit = grover.construct_circuit()
circuit.draw(filename="3-sat.png")
# cir.draw(filename="3-sat_diffusion_operator.png")
# cir.draw(filename="circuit.png")
backend = BasicAer.get_backend('qasm_simulator')
quantum_instance = QuantumInstance(backend, shots=1024)
result = grover.run(quantum_instance)
print(result['result'])
plt.bar(result['measurement'].keys(), result['measurement'].values())
grover_compiled = transpile(result['circuit'],
                            backend=backend,
                            optimization_level=3)

plt.show()