Loading...
Vietnam Geography App
Loading...
Vietnam Geography App
Tìm hiểu các thuật toán lượng tử nổi tiếng và cách chúng tạo ra lợi thế tính toán.
Cài đặt thuật toán Grover để tìm kiếm trong database không có cấu trúc
Tìm target item với xác suất cao sau √N iterations
# Grover Algorithm Implementation
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit import Aer, execute
import numpy as np
def grover_algorithm(n_qubits, target_item):
# Create quantum circuit
qreg = QuantumRegister(n_qubits)
creg = ClassicalRegister(n_qubits)
qc = QuantumCircuit(qreg, creg)
# Initialize superposition
for qubit in range(n_qubits):
qc.h(qubit)
# Number of iterations
iterations = int(np.pi/4 * np.sqrt(2**n_qubits))
for _ in range(iterations):
# Oracle
oracle_circuit(qc, target_item, n_qubits)
# Diffusion operator
diffusion_operator(qc, n_qubits)
# Measurement
qc.measure(qreg, creg)
return qc
def oracle_circuit(qc, target, n_qubits):
# Mark target state
# Implementation depends on specific target
pass
def diffusion_operator(qc, n_qubits):
# Hadamard all qubits
for qubit in range(n_qubits):
qc.h(qubit)
# Flip around |00...0>
for qubit in range(n_qubits):
qc.x(qubit)
# Multi-controlled Z
qc.h(n_qubits-1)
qc.mcx(list(range(n_qubits-1)), n_qubits-1)
qc.h(n_qubits-1)
# Flip back
for qubit in range(n_qubits):
qc.x(qubit)
# Hadamard all qubits
for qubit in range(n_qubits):
qc.h(qubit)