Вывод моего кода qiskit отличается от вывода лектора: Райан О'Доннелл
Я тестирую таблицу, показанную на прикрепленном изображении, с помощью qiskit в python3 .8.5 и версии qiskit { 'qiskit-terra': '0.14.2', 'qiskit-aer': '0.5.2', 'qiskit-ignis': '0.3.3', 'qiskit-ibmq-provider': '0.7.2', 'qiskit-aqua': '0.7.3', 'qiskit': '0.19.6'}
мой код:
from qiskit import QuantumCircuit, assemble
from qiskit import Aer, execute
from qiskit.tools.visualization import plot_histogram
bit = 3
bit_lst = list(range(bit))
circuit = QuantumCircuit(bit, bit)
circuit.reset(0)
circuit.reset(1)
circuit.reset(2)
circuit.x(0)
circuit.x(1)
circuit.ccx(0,1,2)
circuit.barrier()
circuit.measure(bit_lst,bit_lst)
circuit.draw(output='mpl')
backend = Aer.get_backend('statevector_simulator')
statevector=backend.run(assemble(circuit)).result().get_statevector()
print(statevector)
backend = Aer.get_backend('qasm_simulator')
counts1=backend.run(assemble(circuit)).result().get_counts()
print(counts1)
with open('result.txt', 'a') as f:
print(f'011 - {statevector} - {counts1}', file=f)
plot_histogram([counts1], legend=['Simulator'])
вывод файла result.txt: 011 - [0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 1. + 0.j] - {'111': 1024}
в соответствии с таблицей, выход должен быть 011 , но результат кода будет 111 , это мой код или мой знание кубита?
чтобы проверить, просто ли это немного, я меняю свой код:
from qiskit import QuantumCircuit, assemble
from qiskit import Aer, execute
from qiskit.tools.visualization import plot_histogram
bit = 3
bit_lst = list(range(bit))
circuit = QuantumCircuit(bit, bit)
circuit.reset(0)
circuit.reset(1)
circuit.reset(2)
def bit_000():
pass
def bit_001():
circuit.x(0)
def bit_010():
circuit.x(1)
def bit_011():
circuit.x(0)
circuit.x(1)
def bit_100():
circuit.x(2)
def bit_101():
circuit.x(0)
circuit.x(2)
def bit_110():
circuit.x(1)
circuit.x(2)
def bit_111():
circuit.x(0)
circuit.x(1)
circuit.x(2)
func_lst = [bit_000, bit_001, bit_010, bit_011, bit_100, bit_101, bit_110, bit_111]
for fn in func_lst:
fn()
circuit.ccx(0,1,2)
circuit.barrier()
circuit.measure(bit_lst,bit_lst)
circuit.draw(output='mpl')
backend = Aer.get_backend('statevector_simulator')
statevector=backend.run(assemble(circuit)).result().get_statevector()
print(statevector)
backend = Aer.get_backend('qasm_simulator')
counts1=backend.run(assemble(circuit)).result().get_counts()
print(counts1)
with open('result.txt', 'a') as f:
print(f'{fn} - {statevector} - {counts1}', file=f)
plot_histogram([counts1], legend=['Simulator'])
новый файл результата: - [1. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j ] - {'000': 1024}
- [0. + 0.j 1. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j ] - {'001': 1024}
- [0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 1. + 0.j ] - {'111': 1024}
- [0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 1. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j ] - {'100': 1024}
- [1. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j ] - {'000': 1024}
- [0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 1. + 0.j 0. + 0.j 0. + 0.j ] - {'101': 1024}
- [0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 1. + 0.j ] - {'111': 1024}
- [1. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j ] - {'000': 1024}
не заботился о более чистом результате, извините. и не могу добавить код в ответ, извините.