Algorithma Bernstein-Vazirani: Perbanding Performa Komputer Quantum Vs Komputer Biasa

Spread the love

sumber YouTube = https://www.youtube.com/watch?v=sqJIpHYl7oo&list=PLOFEBzvs-Vvp2xg9-POLJhQwtVktlYGbY&index=6

Ini adalah sebuah contoh dimana performa komputer quantum mengalahkan performa komputer biasa.

Problem = menebak angka biner (misal: 101001) yang ada di dalam sebuah kotak tertutup.
Komputer biasa akan melakukan setidaknya 6 kali percobaan untuk bisa menebak angka tersebut dengan benar, namun quantum komputer bisa cuma 1 kali percobaan saja (1 shot). perhatikan contoh berikut ini

tentang Bernstein-Vazirani Algorithm, baca di = https://en.wikipedia.org/wiki/Bernstein%E2%80%93Vazirani_algorithm

1. buka jupyter notebook, create new python3, isi dengan:
from qiskit import *
%matplotlib inline
from qiskit.tools.visualization import plot_histogram
secretnumber = ‘101001’

2. Berikutnya:
– di bagian A kita buat quantum circuit dengan 7 qubit dan 6 classical bit;
– bagian B kita menambahkan Hadamard gate untuk q0 s/d q5, kemudian X gate dan H gate utk q6
– bagian C kita tambahkan controller X gate utk q0, q3, dan q5 (perhatikan bahwa karena secret code=101001, dibaca terbalik dari bawah, sehingga yang bernilai 1 ada pada q0, q3, dan q5)
– bagian D kita menambahkan Hadamard gate untuk q0 s/d q5
– terakhir bagian E kita lakukan measurement utk q0 s/d q5

# bagian A
circuit = QuantumCircuit(6+1, 6)
# bagian B
circuit.h([0,1,2,3,4,5])
circuit.x(6)
circuit.h(6)
circuit.barrier()
# bagian C
circuit.cx(5, 6)
circuit.cx(3, 6)
circuit.cx(0, 6)
circuit.barrier()
# bagian D
circuit.h([0,1,2,3,4,5])
circuit.barrier()
# bagian E
circuit.measure([0,1,2,3,4,5],[0,1,2,3,4,5])
circuit.draw(output=”mpl”)

3. Berikutnya, kita jalankan simulator (perhatikan 1 shot saja):

simulator = Aer.get_backend(‘qasm_simulator’)
result = execute(circuit, backend = simulator, shots = 1).result()
counts = result.get_counts(circuit)
print(counts)
plot_histogram(counts)

dan hasilnya adalah = {‘101001’: 1}
terbukti bahwa quantum komputer dengan algoritma Bernstein-Vazirani ini berhasil menebak angka secretnumber dengan 1 kali percobaan saja (1 shot), performa ini mengalahkan komputer biasa.

4. Supaya algoritma ini bisa lebih dinamis menebak secretnumber berapapun, mari kita ubah kode program di bagian 2 menjadi sebagai berikut:

# bagian A
circuit = QuantumCircuit(len(secretnumber)+1, len(secretnumber))
# bagian B
circuit.h(range(len(secretnumber)))
circuit.x(len(secretnumber))
circuit.h(len(secretnumber))
circuit.barrier()
# bagian C
for ii, yesno in enumerate(reversed(secretnumber)):
if yesno == ‘1’:
circuit.cx(ii, len(secretnumber))
circuit.barrier()
# bagian D
circuit.h(range(len(secretnumber)))
circuit.barrier()
# bagian E
circuit.measure(range(len(secretnumber)), range(len(secretnumber)))
circuit.draw(output=”mpl”)

Kode program ini tersedia di GitHub = https://github.com/keamanansiber/qiskit/blob/master/1MemulaiQiskitUntukPemula/Bernstein-Vazirani.ipynb

berikutnya = https://keamanansiber.id/wp-admin/post.php?post=96&action=edit

Tinggalkan Balasan

This site uses Akismet to reduce spam. Learn how your comment data is processed.