Komputasi Kuantum, Apaan tuh?

Eraraya Ricardo Muten
18 min readAug 15, 2020

--

Teknologi kuantum belakangan ini menjadi topik hangat baik di kalangan akademia, industri, maupun pemerintah di luar negeri dengan komputasi kuantum menjadi pusat perhatiannya. Sayangnya, komputasi kuantum di Indonesia sepertinya belum terlalu populer, setidaknya belum sepopuler pembelajaran mesin dan kecerdasan buatan. Saya menemukan cukup banyak tulisan mengenai komputasi kuantum dalam bahasa Indonesia namun kebanyakan isinya hanya berita dan bukan berupa penjelasan ataupun tutorial sehingga saya merasa perlu untuk membuat tulisan semacam ini.

Tulisan ini bertujuan untuk memberikan pemahaman dasar tentang komputer dan komputasi kuantum, membahas beberapa buzzword seperti superposisi dan entanglement, mitos, dan tutorial singkat simulasi komputasi kuantum menggunakan Python dengan framework IBM Qiskit. Cocok untuk dibaca oleh orang yang memiliki sedikit-banyak pengetahuan fisika & matematika, cukup familiar dengan komputer dan coding, dan berminat untuk memahami dasar dari komputer kuantum namun belum punya basic knowledge apapun terkait itu.

Apa Itu Komputer?

Sebelum membahas tentang komputer kuantum, ada baiknya jika kita membahas terlebih dahulu alat komputasi (alat yang dapat melakukan komputasi) itu sendiri. Perlu dipahami bahwa komputer/alat komputasi tidak terbatas pada sistem rangkaian transistor dan perlu dipahami juga bahwa sistem bilangan biner (bit) bukanlah satu-satunya sistem bilangan yang dapat digunakan untuk komputasi.

Segala sistem fisis yang mampu menyimpan state/keadaan yang dapat dibedakan dan dapat dikontrol adalah alat komputasi. Mengapa demikian? Karena angka pada dasarnya dapat direpresentasikan dengan state dari sistem fisis apapun. Angka dalam sistem bit pada komputer klasik direpresentasikan sebagai voltase tinggi-rendah pada transistor hanya karena alasan praktikal saja, bukan berarti bit tidak dapat direpresentasikan dalam bentuk fisis lain. Kemudian state tersebut harus dapat dikontrol karena operasi matematika merupakan manipulasi angka, yang direpresentasikan dengan state, sehingga memanipulasi angka sama saja dengan mengontrol state.

Menggunakan domino sebagai sistem fisis untuk alat komputasi [1].

Sistem fisis untuk alat komputasi tidak serta merta harus berupa mesin elektronik, barang-barang di sekitar kita hampir semuanya dapat dijadikan alat komputasi. Dari yang cukup obvious seperti sempoa (posisi biji sempoa merupakan state-nya dan tindakan kita mengatur posisi biji merupakan kontrolnya), kotak tissue (jumlah tissue di dalam kotak merupakan state-nya dan tindakan mengambil dan memasukan tissue ke dalam kotak merupakan kontrolnya), gelas air, balon, domino, kartu remi, bendungan, dll.

Transistor dipilih karena sistem ini memenuhi semua elemen penting sebagai alat komputasi yang ideal bagi manusia yaitu ringan, kecil, proses pengontrolan dan perubahan state berlangsung sangat cepat, dan konsumsi energinya sangat kecil. Bisa dibayangkan jika kita menggunakan bendungan sebagai alat komputasi (state bendungan kosong representasi bit 0, dan state terisi representasi bit 1) berapa banyak waktu dan energi yang dibutuhkan hanya untuk melakukan satu kali pergantian state.

Sistem bilangan biner (bit) yang digunakan pada komputer juga dipilih hanya karena alasan praktikal saja. Banyak sistem bilangan lain seperti desimal (basis 10, seperti yang kita gunakan sehari-hari), heksadesimal, oktal, dll. Dari segi teknis, mempertahankan sistem fisis yang hanya perlu berganti-ganti di antara dua state dari gangguan lingkungan jauh lebih mudah daripada, katakanlah, mempertahankan sistem fisis yang perlu berganti-ganti di antara sepuluh state berbeda.

Komputer kuantum milik IBM [2].

Kita sudah tidak pernah lagi memikirkan masalah sistem fisis dan sistem bilangan apa yang digunakan oleh komputer karena komputer klasik saat ini sudah sangat robust dan general-purpose, kita selalu hanya berhadapan pada lapisan paling atasnya saja. Sedangkan komputer kuantum 180° berbeda dari komputer klasik, baik sistem fisis (hardware) maupun abstraksi matematikanya. Hal ini menyebabkan komputasi kuantum terkesan sulit dipahami karena intuisi kita sudah terlanjur terasah selama bertahun-tahun dengan sistem komputasi klasik.

Secara sederhana, komputer kuantum adalah alat komputasi yang menggunakan sistem fisis yang patuh dengan hukum-hukum mekanika kuantum (sistem kuantum) dan memanfaatkannya. Sistem fisis ini dapat direalisasikan dalam banyak bentuk, misalnya dengan sistem superkonduktor (e.g. Google, IBM, Intel), sistem topologi dengan kuasipartikel Anyon (e.g. Microsoft), sistem ion terperangkap (e.g. IonQ, Honeywell), polarisasi cahaya (e.g. Xanadu), dll.

Mengapa Harus Sistem Kuantum Sebagai Alat Komputasi?

Alasan paling fundamental yang menjadi pendorong berkembangnya komputer kuantum adalah sifat alamiah dari alam semesta ini yang mengikuti hukum mekanika kuantum. Pada dasarnya, setiap elemen di alam semesta bersifat kuantum, namun efek kuantum tidak dapat dengan mudah terlihat pada objek-objek berukuran besar. Komputer klasik tidak mampu mensimulasikan efek-efek kuantum seperti superposisi dan entanglement (akan dibahas lebih mendalam di bagian selanjutnya).

Salah satu kegunaan komputer yang bisa dibilang paling penting adalah untuk melakukan simulasi. Umumnya, kita tertarik untuk melakukan simulasi-simulasi fisis. Sayangnya, karena alam semesta bersifat kuantum, simulasi proses di alam menggunakan komputer klasik tidak akan pernah benar-benar bisa akurat (dalam waktu yang terjangkau). Ketidak akuratan ini semakin besar terjadi seiring dengan mengecilnya ukuran sistem fisis yang disimulasikan. Simulasi bersifat makro seperti aerodinamika pesawat dan analisis struktur bangunan mungkin ketidak akuratannya masih dalam jangkauan toleransi dan hasil simulasi masih dapat diterima. Namun untuk simulasi mikro seperti kalkulasi energi molekul, simulasi iklim, dan simulasi pelipatan protein, ketidak akuratannya relatif sangat besar.

Mitos 1: komputer kuantum bisa melakukan komputasi tertentu yang tidak dapat dilakukan oleh komputer klasik, komputer klasik juga bisa melakukan komputasi tertentu yang tidak dapat dilakukan oleh komputer kuantum.

Jawab: dua pernyataan tersebut salah. Secara teori, semua komputasi yang dapat dilakukan oleh komputer klasik dapat dilakukan oleh komputer kuantum, begitu juga sebaliknya. Tetapi ada komputasi tertentu yang dapat dilakukan oleh komputer kuantum dalam waktu terjangkau namun akan memakan waktu hingga akhir zaman (tidak akan selesai) jika dilakukan oleh komputer klasik. Ketidak akuratan simulasi pada komputer klasik muncul karena waktu komputasi komputer klasik yang terlalu lama (proses komputasi harus disudahi meskipun masih belum akurat karena untuk mencapai keakuratan tersebut dibutuhkan waktu hingga akhir zaman).

Idealnya, jika kita mampu membuat alat komputasi yang berbasiskan mekanika kuantum, artinya kita mampu melakukan simulasi sistem fisis apapun di alam semesta ini dengan akurasi 100% karena sistem komputasi yang kita gunakan adalah sistem dari alam semesta itu sendiri. Perlu diketahui kalau kalkulasi energi molekul dengan akurat akan merevolusi industri material maju (baterai, sel surya, kereta maglev, sensor, dll) dan kimia (pupuk, katalis, pangan, dll), simulasi iklim dengan akurat mampu menyelesaikan permasalahan pemanasan global, dan simulasi pelipatan protein dengan akurat akan merevolusi dunia kedokteran (salah satunya dapat menyembuhkan kanker).

Alasan kedua adalah alasan praktikal, yaitu terhambatnya perkembangan processor komputer klasik. Setiap tahun perusahaan pembuat chip komputer, seperti Intel, berusaha membuat chip komputer menjadi lebih cepat dan lebih hemat energi. Untuk mencapai hal ini, ukuran transistor pada chip tersebut harus semakin mengecil setiap tahunnya agar konsumsi energi oleh transistor semakin berkurang dan semakin banyak transistor dapat dimuat dalam sebuah chip.

Ilustrasi fenomena penerowongan kuantum [3]. Pada objek berukuran relatif besar, objek mengikuti mekanika klasik, objek tersebut tidak dapat menembus halangan yang memiliki energi potensial lebih besar dari energi kinetiknya. Objek berukuran kecil yang mulai mengalami efek kuantum dapat menembus halangan ini.

Yang menjadi masalah, efek kuantum akan mulai muncul pada sistem komputer klasik jika ukuran transistor sudah terlalu kecil. Akan terjadi fenomena penerowongan kuantum, untuk mudahnya bayangkan mobil bisa menembus gunung tanpa perlu menaiki gunung tersebut, yang menyebabkan elektron pada sirkuit elektronik tidak lagi dapat terkontrol. Masalah ini bukanlah masalah engineering/teknikal yang dapat terselesaikan suatu saat nanti ketika teknologi sudah semakin maju, ini adalah masalah fundamental yang secara teori saja sudah tidak akan berhasil. Cepat atau lambat, kekuatan komputasi komputer klasik akan mencapai batas maksimalnya dan memaksa pembuat chip komputer untuk beralih ke sistem komputasi yang bersifat kuantum.

Mitos 2: komputer kuantum secara total akan menggantikan komputer klasik.

Jawab: Tidak dalam waktu dekat ini. Komputer kuantum yang ada saat ini masih noisy dan belum sempurna (hasil komputasi yang dikeluarkan oleh mesin masih belum 100% sesuai dengan teori di atas kertas). Komputer kuantum hanya akan menggantikan komputer klasik pada tugas-tugas komputasi tertentu saja yang tidak dapat selesai jika dilakukan pada komputer klasik. Karena biaya pembuatan dan perawatannya yang mahal, sistem yang paling visibel saat ini adalah dengan tetap menggunakan komputer klasik dan menjadikan komputer kuantum seperti server cloud computing yang baru diakses ketika dibutuhkan.

Abstraksi Matematika Qubit dan Gerbang Kuantum

Qubit

Jika bit adalah satuan informasi terkecil pada komputasi klasik, maka qubit adalah padanan bit pada komputasi kuantum. Langkah pertama untuk memahami komputasi kuantum adalah dengan memahami qubit. Secara fisis, qubit merupakan sistem mekanika kuantum dengan dua keadaan kuantum/quantum state (baik yang berpasangan secara natural maupun yang berpasangan akibat dikontrol), misalnya spin elektron (up & down), polarisasi foton (vertikal & horizontal), tingkat energi partikel (ground state & excited state pertama), dll. Qubit memiliki dua fitur paling menarik yang membuatnya berbeda dari bit, yaitu superposisi dan entanglement.

Secara matematis, dua keadaan qubit ini direpresentasikan sebagai dua basis vektor satuan yang orthogonal. Qubit dapat dituliskan dalam bentuk notasi vektor/matriks maupun notasi Dirac/bra-ket. Basis vektor yang paling umum digunakan adalah

Dua basis vektor yang merepresentasikan keadaan qubit. Notasi pada bagian sebelah kiri tanda sama dengan disebut notasi Dirac/bra-ket, sedangkan pada bagian sebelah kanan merupakan notasi vektor.

Maksud dari orthogonal adalah perkalian dot dari dua vektor ini bernilai nol. Secara umum, perkalian dot dari dua vektor |u⟩ dan |v⟩ dapat dituliskan sebagai

Perkalian dot antara vektor |u⟩ dan vektor |v⟩ [4]. Simbol u dengan garis lurus di atasnya sama dengan konjugat kompleks dari u.

Simbol ⟨ | disebut sebagai bra dan simbol | ⟩ disebut sebagai ket. Vektor ⟨u| adalah konjugat kompleks transpose (matriks ditranspose, kemudian isi dari matriks tersebut diubah menjadi konjugat kompleksnya) dari |u⟩.

Qubit dapat dinyatakan dalam basis vektor |0⟩ dan |1⟩ karena kedua vektor tersebut merupakan vektor satuan dan orthogonal.

Hasil perkalian dot-nya sama dengan nol merupakan ciri dari dua vektor yang orthogonal.

Jika ada lebih dari satu qubit, state total/gabungannya dihitung dengan perkalian tensor. Perkalian tensor untuk dua vektor |u⟩ dan |v⟩ dapat dituliskan sebagai

Misal jika terdapat dua qubit |0⟩ dan |1⟩ maka state totalnya

Superposisi dan Pengukuran

Berbeda dari bit yang setiap waktunya hanya dapat berada dalam keadaan 0 atau 1, qubit dapat berada dalam dua keadaan sekaligus yang disebut sebagai superposisi. Qubit yang berada dalam keadaan superposisi dituliskan sebagai

Qubit |Ψ⟩ berada dalam keadaan superposisi dengan α dan β merupakan bilangan kompleks.

Mitos 3: tiap bit hanya dapat merepresentasikan satu state, sedangkan tiap qubit dapat merepresentasikan dua state.

Jawab: tiap bit dapat merepresentasikan dua state, 0 atau 1, namun hanya salah satu pada tiap waktunya. Qubit juga dapat merepresentasikan dua state, bedanya qubit dapat berada pada kedua state tersebut di waktu yang bersamaan.

Bit klasik tidak akan berubah nilainya ketika sebelum diukur maupun setelah diukur, misal jika representasi bit 1 adalah tegangan 5 volt dan bit 0 adalah tegangan 0 volt, maka bit 1 akan memiliki tegangan 5 volt baik sebelum maupun setelah diukur (tidak akan menjadi 0 volt hanya karena diukur). Qubit akan kehilangan keadaan superposisinya dan berubah menjadi salah satu keadaan basis vektornya (|0⟩ atau |1⟩) ketika kita mengukur nilai qubit tersebut. Ini artinya, pengukuran dua qubit dengan keadaan superposisi yang sama (α dan β yang sama) dapat memberikan hasil yang berbeda.

Representasi geometri dari qubit dalam keadaan superposisi [5].

Probabilitas mendapatkan hasil |0⟩ ketika mengukur qubit |Ψ⟩ adalah sama seperti seolah-olah melakukan proyeksi (perkalian dot) qubit |Ψ⟩ pada qubit |0⟩ kemudian menghitung kuadrat dari panjang vektor hasil proyeksinya

Demikian juga probabilitas mendapatkan hasil pengukuran |1⟩ dapat dihitung dengan cara yang sama, akan menghasilkan nilai |β|². Karena total probabilitas dari semua kemungkinan haruslah bernilai 1, maka

Total probabilitas mendapatkan hasil pengukuran |0⟩ dan |1⟩ harus bernilai 1.

Dengan kata lain, koefisien (α dan β) dari basis vektor untuk sebuah qubit harus ternormalisasi.

Mitos 4: berkat superposisi, tiap qubit dapat menyimpan dua informasi sekaligus, sehingga komputasi yang melibatkan hanya dua informasi pada input dan outputnya dapat dilakukan hanya dengan sebuah qubit sedangkan pada komputer klasik dibutuhkan dua bit.

Jawab: salah, tetap dibutuhkan dua qubit. Ingat, qubit akan kehilangan superposisinya ketika diukur. Untuk mendapatkan hasil/output dari sebuah proses komputasi, tentunya state terakhir dari qubit harus diukur, pengukuran ini akan menghilangkan superposisi dan membuat qubit hanya berada dalam satu state saja. Meskipun qubit dapat menyimpan dua informasi secara bersamaan sebelum diukur, namun output yang dapat kita terima dari sebuah qubit hanya satu informasi saja.

Entanglement (Matematis)

Entanglement adalah peristiwa ketika dua atau lebih qubit berinteraksi sedemikian rupa sehingga state gabungan/total dari qubit-qubit tersebut tidak dapat lagi didekomposisi untuk masing-masing qubit. State salah satu qubit bergantung pada state qubit lainnya, tidak dapat lagi berdiri sendiri-sendiri.

Jika qubit |0⟩ dan|1⟩ dituliskan sebagai

maka state gabungan kedua qubit tersebut adalah

State gabungan ini dikatakan tidak ter-entangle karena state tersebut dapat didekomposisi menjadi qubit |0⟩ dan|1⟩ (merupakan hasil perkalian tensor dari qubit |0⟩ dan|1⟩).

Contoh, misalkan terdapat state gabungan dua qubit

Koefisien 1/√2 disini hanyalah koefisien penormalisasi.

State gabungan pertama tidak mengalami entanglement karena sistem persamaan linear dari state gabungan pertama

dapat diselesaikan dengan γ = η = 1 dan variabel lainnya bernilai nol. Ini memberikan

State gabungan dapat terdekomposisi ke dalam dua qubit terpisah (|0⟩ dan|1⟩). Sedangkan state gabungan kedua mengalami entanglement karena sistem persamaan linear dari state gabungan kedua

tidak dapat diselesaikan (tidak konsisten) sehingga state gabungan ini tidak dapat dipisahkan/didekomposisi ke dalam dua qubit terpisah. State gabungan ini bukan merupakan hasil perkalian tensor dari dua buah qubit (cara menciptakan state gabungan semacam ini akan dijelaskan pada bagian Simulasi).

Entanglement (Intuisi)

Entanglement terasa sulit sekali dibayangkan seperti apa intuisinya. Namun, sebenarnya fenomena sejenis entanglement juga terjadi pada objek-objek makro.

Hukum kekekalan momentum pada mekanika klasik merupakan fenomena yang sejenis dengan entanglement. Bayangkan ada sebuah bola yang mula-mula diam, bola ini kemudian meledak menjadi dua bagian sama besar. Jika salah satu pecahan bola menuju ke kiri, maka pecahan bola lainnya pasti bergerak menuju ke kanan. Sedangkan jika salah satu pecahan bola bergerak menuju ke atas, maka pecahan bola lainnya pasti menuju ke bawah. Kedua pecahan bola ini terkorelasi satu sama lain, state dari kedua pecahan saling mempengaruhi satu sama lain.

Demikian juga dengan spin elektron, jika dua elektron terkorelasi, maka jika salah satu memiliki spin up, maka elektron lainnya harus memiliki spin down agar memenuhi hukum kekekalan momentum.

Yang membedakan kedua sistem ini adalah superposisi. Menurut mekanika klasik, kedua pecahan bola tidak dapat mengalami superposisi. Pecahan bola yang bergerak ke kiri tetap bergerak ke kiri baik sebelum maupun setelah dilihat (diukur). Mekanika klasik bersifat deterministik, sehingga pengukuran tidak mempengaruhi state dari objek yang diukur. State dari pecahan bola yang satu tidak akan berubah berdasarkan hasil pengukuran dari state pecahan yang lainnya. Kedua pecahan bola tidak ter-entangle karena keduanya terkorelasi namun tidak dalam keadaan superposisi. Mekanika klasik tidak mengizinkan adanya keadaan superposisi.

Sedangkan elektron dapat mengalami superposisi antara spin up dan spin down sebelum diukur. Misalkan kita mengukur salah satu elektron dan mendapatkan hasil spin up, maka secara instan elektron yang lainnya akan memiliki spin down. Namun jika kita mendapatkan hasil spin down, maka secara instan elektron yang lainnya akan memiliki spin up. Pengukuran state pada salah satu elektron mempengaruhi state elektron lainnya. Kedua elektron dikatakan ter-entangle karena kedua qubit mengalami superposisi dan terkorelasi.

Dua qubit harus terkorelasi dan mengalami superposisi untuk dikatakan ter-entangle. Dua qubit bisa saja mengalami superposisi namun tidak terkorelasi. Jika kita memiliki sistem dua qubit dengan setiap qubitnya dalam keadaan superposisi

State total/gabungan kedua qubitnya adalah

Sistem dua qubit ini dikatakan tidak ter-entangle karena

  1. Meskipun mereka berada dalam keadaan superposisi, namun keduanya tidak terkorelasi. Dalam bahasa matematika, state gabungan kedua qubit ini dapat didekomposisi ke dalam state qubit-qubit penyusunnya, atau dengan kata lain state gabungan kedua qubit ini merupakan hasil dari perkalian tensor kedua state qubit penyusunnya.
  2. Katakanlah kita melakukan pengukuran pada qubit |q1⟩, terlepas dari hasil pengukuran ini, qubit |q2⟩ akan tetap dalam keadaan superposisi. Pengukuran state salah satu qubit tidak mempengaruhi state qubit lainnya.
Terlepas dari hasil pengukuran |q1⟩, terlihat kalau qubit |q2⟩ tetap mempertahankan state-nya seperti sebelum pengukuran |q1⟩ dilakukan. Pengukuran |q1⟩ tidak mempengaruhi state dari |q2⟩ (tidak ter-entangle).

Namun jika kedua qubit ini memiliki state gabungan

State gabungan ini berada dalam superposisi namun juga terkorelasi, state ini ter-entangle, karena

  1. Tidak dapat dinyatakan sebagai hasil perkalian tensor dari dua qubit, telah dibuktikan pada bagian Entanglement (Matematis).
  2. Jika kita melakukan pengukuran pada qubit |q1⟩ dan mendapatkan hasil pengukuran |0⟩, maka secara instan qubit |q2⟩ kehilangan superposisinya dan state-nya berubah menjadi |0⟩. Sebaliknya jika hasil pengukuran |1⟩, maka secara instan state qubit |q2⟩ menjadi |1⟩. Hal ini berlaku juga jika qubit |q2⟩ yang kita ukur. Pengukuran pada salah satu qubit mempengaruhi state qubit lainnya.

Gerbang Kuantum

Analog dengan komputer klasik, komputer kuantum juga menggunakan gerbang-gerbang operasi untuk mengontrol state qubit. Gerbang kuantum secara matematika dapat dideskripsikan sebagai matriks unitari.

Sebenarnya ada banyak sekali gerbang kuantum namun pada tulisan ini hanya 3 gerbang kuantum dasar (dan termasuk yang paling penting) yang akan dibahas karena tulisan ini bertujuan hanya sebagai pengantar/pengenalan awal dan supaya tulisan ini tidak menjadi terlalu panjang.

Implementasi fisis (hardware) dari gerbang-gerbang kuantum ini bergantung pada implementasi fisis dari qubit itu sendiri. Tiap-tiap implementasi qubit memiliki cara masing-masing untuk menciptakan gerbang-gerbang kuantumnya. Implementasi fisis dari gerbang kuantum tidak akan dibahas disini karena ada sangat banyak metode berbeda yang dapat digunakan, mungkin suatu saat akan saya coba buat tulisannya.

  1. Gerbang Pauli-X (X)

Gerbang Pauli-X beroperasi pada satu qubit. Gerbang yang beroperasi hanya pada satu qubit sering disebut sebagai gerbang qubit tunggal. Fungsi dari gerbang ini mirip dengan gerbang NOT pada komputer klasik, yaitu untuk mengubah nilai qubit dari |0⟩ menjadi |1⟩ dan sebaliknya.

Gerbang Pauli-X dalam bentuk matriks.

Operasi suatu gerbang pada qubit secara matematika sama dengan melakukan perkalian matriks antara matriks gerbang dan matriks qubit. Misalnya jika kita ingin mengoperasikan gerbang Pauli-X ke qubit |0⟩, maka hasil dari operasi ini adalah

2. Gerbang Hadamard (H)

Sama seperti gerbang Pauli-X, gerbang Hadamard merupakan gerbang qubit tunggal. Fungsi dari gerbang ini adalah untuk membuat qubit berada dalam keadaan superposisi jika qubit input tidak berada dalam superposisi.

Gerbang Hadamard dalam bentuk matriks.

Superposisi pada qubit akibat gerbang Hadamard merupakan superposisi yang probabilitas menghasilkan |0⟩ dan|1⟩-nya sama besar ketika diukur.

Hasil operasi gerbang Hadamard pada qubit |0⟩ menghasilkan qubit dalam keadaan superposisi.
Hasil operasi gerbang Hadamard pada qubit |1⟩ menghasilkan qubit dalam keadaan superposisi.

3. Gerbang Controlled NOT (CNOT)

Gerbang CNOT dalam bentuk matriks.

Gerbang CNOT beroperasi pada dua qubit sekaligus (gerbang dua qubit), gerbang ini adalah gerbang Pauli-X yang terkontrol. Qubit pertama berperan sebagai kontrol dan qubit kedua berperan sebagai input. Hasil operasi dari gerbang ini mirip dengan gerbang XOR pada komputer klasik. Operasi gerbang Pauli-X akan dilakukan pada qubit kedua jika dan hanya jika qubit pertama sebagai pengontrol bernilai |1⟩.

Tabel kebenaran gerbang CNOT (kiri) dan gerbang XOR (kanan). Pada gerbang CNOT, variabel x menjadi qubit kontrol dan variabel y adalah qubit input. Gerbang Pauli-X akan dioperasikan pada variabel y jika dan hanya jika nilai dari variabel x adalah 1. Operasi 🜨 memiliki arti ‘addition modulo 2’, y🜨x= (y+x)mod(2).

Cara melakukan operasi matematika gerbang dua qubit adalah dengan terlebih dulu mencari state gabungan dua qubit dengan perkalian tensor, baru kemudian melakukan perkalian matriks antara matriks CNOT dan matriks state gabungan tersebut.

Gerbang CNOT beroperasi pada dua qubit |10⟩, qubit kontrol |1⟩ berada di sebelah kiri perkalian tensor dan qubit input |0⟩ berada di sebelah kanan perkalian tensor. Karena qubit kontrol bernilai |1⟩, maka gerbang Pauli-X akan dioperasikan pada qubit input, mengubah nilainya semula dari |0⟩ menjadi |1⟩.

Simulasi

Pengaruh dari gerbang-gerbang ini pada qubit dapat kita simulasikan dengan komputer klasik menggunakan library Qiskit pada Python.

Cara install Qiskit (https://qiskit.org/documentation/install.html):
1. Bisa lewat Command Prompt/Anaconda Prompt via pip, ketik

pip install qiskit

lalu enter.
2. Bisa juga lewat Jupyter Notebook, buka Jupyter Notebook lalu isi pada cell pertama dengan

!pip install qiskit

Cara nomor 2 bisa dilakukan juga dengan menggunakan Google Colab.

Simulasi Gerbang Pauli-X

Untuk melihat efek dari gerbang Pauli-X, pertama-tama kita perlu melakukan inisialisasi sirkuit terlebih dahulu. Katakanlah nama sirkuitnya ‘qc’.

from qiskit import QuantumCircuit# buat sirkuit kuantum
# maksud angka 1 sebagai argumen disini adalah
# sirkuit yang kita buat hanya membutuhkan 1 qubit
qc = QuantumCircuit(1)
# gambar sirkuitnya
qc.draw(‘mpl’)

Sirkuit ini kosong karena kita baru mendeklarasikan qubitnya saja. Tambahkan gerbang Pauli-X pada sirkuit.

# tambahkan gerbang Pauli-X pada sirkuit
# angka 0 menandakan gerbang dipasang pada qubit pertama
# (qubit pertama memiliki index 0)
qc.x(0)
qc.draw('mpl')

Misalkan kita ingin melihat pengaruh dari gerbang ini pada qubit |0⟩, pertama inisialisasi terlebih dahulu qubit tersebut.

from qiskit.quantum_info import Statevectorqubit = Statevector.from_label('0')
print(qubit.data)

Perintah qubit.data akan memberikan numpy array ukuran (2,) sebagai representasi matriks dari qubit. Karena qubit yang kita inisialisasikan adalah qubit |0⟩, maka hasil print dari kode di atas adalah

>> [1.+0.j 0.+0.j]

Selanjutnya, kita operasikan sirkuit gerbang Pauli-X pada qubit ini

qubit_output = qubit.evolve(qc)
print(qubit_output.data)

Efek dari gerbang ini seharusnya membalik qubit dari |0⟩ ke |1⟩, jika kita print qubit output ini kita mendapatkan

>> [0.+0.j 1.+0.j]

yang adalah qubit |1⟩.

Menciptakan Superposisi dengan Gerbang Hadamard

Mari kita lihat pengaruh dari gerbang Hadamard pada qubit |1⟩

# inisialisasi sirkuit
qc = QuantumCircuit(1)
# tambahkan gerbang Hadamard pada sirkuit untuk qubit pertama
qc.h(0)
qc.draw('mpl')
# inisialisasi qubit |1>
qubit = Statevector.from_label('1')
print('Qubit sebelum melalui gerbang H:', qubit.data)
# operasikan gerbang Hadamard (H) pada qubit ini
qubit_output = qubit.evolve(qc)
print('Qubit setelah melalui gerbang H:', qubit_output.data)
>> Qubit sebelum melalui gerbang H: [0.+0.j 1.+0.j]
>> Qubit setelah melalui gerbang H: [ 0.70710678+0.j -0.70710678+0.j]

Terlihat qubit |1⟩ setelah melewati gerbang Hadamard menjadi dalam keadaan superposisi antara qubit |1⟩ dan |0⟩.

Sekarang jika qubit output ini kita ukur dan eksperimen ini diulangi sebanyak 1000 kali, apa yang akan kita dapatkan?

# ukur qubit output, ulangi 1000 kali
counts = qubit_output.sample_counts(shots=1000)
from qiskit.visualization import plot_histogram
# plot hasil pengukurannya
plot_histogram(counts)

Dari 1000x percobaan, kita dapatkan 525x output |0⟩ dan 475x output |1⟩. Terlihat kalau superposisi menyebabkan hasil pengukuran bisa berubah-ubah. Jika anda mencoba kode ini, anda belum tentu mendapatkan 525 vs 475, angkanya kemungkinan besar lain. Jumlah pengukurannya tidak tepat 50% vs 50% karena jumlah percobaannya belum terlalu besar. Pengukuran akan semakin mendekati angka ideal 50% vs 50% jika jumlah eksperimen semakin banyak.

Dua Qubit Dalam Superposisi Namun Tidak Terkorelasi

Bagaimana jika kita membuat dua qubit seperti pada bagian Entanglement (Intuisi) dengan inisialisasi |00⟩ (dua qubit |0⟩), mengoperasikan gerbang Hadamard pada keduanya, kemudian melakukan pengukuran dan mengulangi eksperimen ini sebanyak 1 juta kali?

Output dari sirkuit sebelum pengukuran.
# inisialisasi sirkuit untuk 2 qubit
qc = QuantumCircuit(2)
# tambahkan gerbang H pada keduanya
qc.h(0)
qc.h(1)
qc.draw('mpl')
# inisialisasi |00>
qubit = Statevector.from_label('00')
print('Qubit |00> sebelum melalui gerbang H:', qubit.data)
# operasikan gerbang Hadamard pada qubit ini
qubit_output = qubit.evolve(qc)
print('Qubit |00> setelah melalui gerbang H:', qubit_output.data)
>> Qubit sebelum melalui gerbang H: [1.+0.j 0.+0.j 0.+0.j 0.+0.j]
>> Qubit setelah melalui gerbang H: [0.5+0.j 0.5+0.j 0.5+0.j 0.5+0.j]

Terlihat hasilnya sesuai dengan perhitungan teori. Jika kemudian kita lakukan pengukuran dan ulangi sebanyak 1 juta kali

# ukur qubit output 1 juta kali
counts = qubit_output.sample_counts(shots=1000000)
# plot hasil pengukurannya
plot_histogram(counts)

Kali ini hasil pengukuran sangat mendekati teori karena eksperimen dilakukan dalam jumlah yang lebih banyak sehingga probabilitas pengukurannya mendekati probabilitas teori.

Terlihat kalau semua state yang mungkin terbentuk dari dua qubit (|00⟩, |01⟩, |10⟩, |11⟩) memiliki probabilitas yang sama untuk terukur yaitu 0.25. Setelah qubit pertama diukur dan menghasilkan |0⟩, qubit kedua masih tetap berada dalam superposisi sampai qubit kedua ini diukur juga sehingga state |00⟩ dan |01⟩ memiliki probabilitas yang sama. Pengukuran pada qubit pertama tidak memiliki pengaruh apa-apa pada qubit kedua dan begitu juga sebaliknya. Kedua qubit ini tidak ter-entangle.

Dua Qubit Ter-entangle

Bagaimana cara menciptakan state gabungan dua qubit yang ter-entangle dari inisialisasi dua qubit awal |00⟩? Cara termudahnya adalah dengan membuat qubit pertama dalam keadaan superposisi dengan gerbang Hadamard, kemudian meletakan gerbang CNOT dengan qubit pertama sebagai kontrol dan qubit kedua sebagai input. Mari kita lihat apa hasil keluarannya secara matematis.

State gabungan kedua qubit setelah qubit pertama melalui gerbang Hadamard.
Kemudian gerbang CNOT dioperasikan pada state gabungan ini. Qubit kedua tidak berubah ketika qubit pertama |0⟩ dan qubit kedua berubah dari |0⟩ menjadi |1⟩ ketika qubit pertama |1⟩.

State output yang terbentuk adalah state yang sama seperti yang telah dibahas pada bagian Entanglement (Intuisi). Kedua qubit dalam state ini ter-entangle, state ini sudah tidak dapat lagi didekomposisi ke dalam state dua qubit yang terpisah. State ter-entangle ini sering disebut dengan nama Bell state.

# inisialisasi sirkuit untuk 2 qubit
qc = QuantumCircuit(2)
# tambahkan gerbang H pada qubit pertama
qc.h(0)
# tambahkan gerbang CNOT
# qubit pertama (0) sebagai kontrol
# qubit kedua (1) sebagai input
qc.cx(0,1)
qc.draw('mpl')
# inisialisasi |00>
qubit = Statevector.from_label('00')
print('Qubit sebelum melalui sirkuit:', qubit.data)
# operasikan sirkuit pada qubit
qubit_output = qubit.evolve(qc)
print('Qubit setelah melalui sirkuit:', qubit_output.data)
>> Qubit sebelum melalui sirkuit: [1.+0.j 0.+0.j 0.+0.j 0.+0.j]
>> Qubit setelah melalui sirkuit: [0.70710678+0.j 0. +0.j 0. +0.j 0.70710678+0.j]

Output dari sirkuit ini memiliki state yang sama dengan hasil perhitungan matematis.

# ukur qubit output 1 juta kali
counts = qubit_output.sample_counts(shots=1000000)
# plot hasil pengukurannya
plot_histogram(counts)

Terlihat kalau state kedua qubit saling terikat. State yang dapat dihasilkan dari dua qubit ini hanya antara |00⟩ dan |11⟩. Ketika salah satu qubit diukur dan menghasilkan nilai |0⟩, qubit yang lainnya secara instan berubah menjadi |0⟩. Demikian juga ketika hasil pengukuran salah satu qubit adalah |1⟩, qubit lainnya secara instan berubah menjadi |1⟩. Ini adalah apa yang dimaksud dari entanglement.

Sekian tulisan kali ini dan semoga tulisan ini dapat memantik rasa penasaran dan semangat para pembaca untuk mempelajari komputasi kuantum lebih dalam lagi. Saya berharap bisa semakin banyak orang Indonesia tertarik dan mendalami bidang ini sehingga ilmu dan teknologi Indonesia tidak tertinggal dari negara-negara lain. Jika ada pertanyaan, kritik, dan saran, silahkan tinggalkan komentar, saya lebih dari senang jika bisa berdiskusi mengenai topik ini dengan teman satu negara.

Referensi

[1] Stand-up Maths. (2014, April 4). The 10,000 Domino Computer [Video]. YouTube. https://www.youtube.com/watch?v=OpLU__bhu2w&t=50s

[2] Hunter, M. (Director). (2020, January 16). [Video file]. Retrieved August 12, 2020, from https://www.forbes.com/sites/ibm/2020/01/16/the-quantum-computing-era-is-here-why-it-mattersand-how-it-may-change-our-world/

[3] Watching electrons tunnel. (2007, April 05). Retrieved August 12, 2020, from https://www.mpq.mpg.de/4855301/07_04_05

[4] Hui, J. (2018, November 24). QC — Quantum Mechanics Notations. Retrieved August 12, 2020, from https://medium.com/@jonathan_hui/qc-quantum-mechanics-notations-a1be27753205

[5] Dmm613. (2018, November 14). Notes on the Bloch Sphere. Retrieved August 16, 2020, from https://dmm613.wordpress.com/2018/11/10/notes-on-the-bloch-sphere/

--

--

Eraraya Ricardo Muten
Eraraya Ricardo Muten

Written by Eraraya Ricardo Muten

Quantum and classical machine learning & neural networks enthusiast.