
En este ejercicio prepararemos un circuito con una puerta Multi-Controled-X
Si todos los qubits de control están en el estado ∣1⟩, se aplica una operación NOT (X) al qubit objetivo, cambiando su estado de ∣0⟩ a ∣1⟩ o de ∣1⟩ a ∣0⟩.
Para comprobarlo pondremos los tres qubits de control a ∣1⟩ aplicando puertas X y deberíamos ver que en todas las ejecuciones (en las 10.000) el estado del qubit q3 es '1'.
En el código está comentado la aplicación de puertas Hadamard para que puedas probar como afecta a los resultados.
# CIRCUITO-02 : CUATRO QUBIT CON UNA PUERTA multi-controled-X
from qiskit import QuantumCircuit # Importa la clase QuantumCircuit de Qiskit
from qiskit_aer import Aer # Importa el módulo Aer de Qiskit Aer
from qiskit.circuit.library import HGate, MCXGate # Importa la puerta MCX
mcx_gate = MCXGate(3) # define una MCX de 3 qubits
qc = QuantumCircuit(4, 1) # define un circuito de 3 qubits y un bit para medir
qc.x(0), qc.x(1), qc.x(2) # pone a en estado 1 los tres qubits
# qc.h(0), qc.h(1), qc.h(2) # Para probar con puertas Hadamard
qc.append(mcx_gate, [1, 0, 2, 3]) # incorpora al circuito un apuerta MCX con el qubit 3 como objetivo (el último que se le indique)
# qc.measure (0,0)
# qc.measure (1,1)
# qc.measure (2,2)
qc.measure (3,0) # mide el estado del qubit 3
qc.draw('mpl') # dibujar el circuito

# CIRCUITO-02 : LO EJECUTAMOS 10.000 VECES Y VEMOS LOS RESULTADOS
# Configuración del simulador cuántico
Procesando = Aer.get_backend('qasm_simulator') # Obtiene el backend 'qasm_simulator' de Qiskit Aer
# Ejecución del circuito cuántico en el simulador cuántico
Proceso = Procesando.run(qc, shots=10000).result() # Ejecuta el circuito cuántico 10000 veces y obtiene los resultados
# Obtención de los resultados de la ejecución
Resultados = Proceso.get_counts(qc) # Obtiene los conteos de los resultados de la ejecución del circuito
print(Resultados) # Imprime los resultados en la consola
{'1': 10000}