# Modul 1: Math Foundation for Quantum Computing
## Objektif
1. Peserta memahami konsep bilangan kompleks dan bentuk-bentuk representasinya.
2. Peserta memahami dan mampu melakukan operasi dasar vektor dan matriks untuk merepresentasikan qubit dan gerbang kuantum.
3. Peserta memahami notasi Dirac (Bra-Ket) untuk mendeskripsikan keadaan kuantum.
4. Peserta memahami dan mampu menggunakan perkalian tensor untuk menggabungkan sistem multi-qubit.
## Dasar Teori
### Imaginary Numbers and Complex Numbers
Sebuah bilangan negatif tidak memiliki akar kuadrat dalam himpunan bilangan real. Oleh karena itu, akar kuadrat dari bilangan negatif akan selalu bisa direpresentasikan dengan bilangan imajiner. **Bilangan imajiner (imaginary numbers)** adalah bilangan apapun yang memiliki faktor $i$, di mana $i$ adalah unit imajiner:
$$\LARGE i = \sqrt{-1}$$
Dengan demikian, kita akan bisa merepresentasikan bilangan imajiner lain seperti berikut:
- $$\sqrt{-4} = \sqrt{4} \cdot i = 2i$$
- $$\sqrt{-25} = \sqrt{25} \cdot i = 5i$$
- $$\sqrt{-49} = \sqrt{49} \cdot i = 7i$$
**Bilangan kompleks (complex numbers)** adalah bilangan yang memiliki bagian riil (real part) dan bagian imajiner (imaginary part), dan biasanya ditulis dalam bentuk:
$$\LARGE a + bi$$
di mana $a$ adalah bagian riil dan $b$ adalah bagian imajiner. Masing-masing dari $a$ dan $b$ adalah bilangan real.
Contoh:
$$3 + 4i$$
Bilangan tersebut adalah bilangan kompleks di mana $3$ adalah bagian riil dan $4i$ adalah bagian imajiner. Berikut adalah contoh lain dari bilangan kompleks:
- $$5 + 2i$$
- $$-1 + 7i$$
- $$\sqrt{2} + \sqrt{3}i$$
Bilangan kompleks mungkin tidak mudah untuk dibayangkan pada dunia nyata, namun bentuk lain dari bilangan kompleks akan sangat berguna dalam memodelkan state pada quantum computing.
### Complex Conjugate
Jika kita memiliki sebuah bilangan kompleks
$$z = a + bi$$
maka **konjugat kompleks (complex conjugate)** dari $z$, yang dilambangkan dengan $z^*$ atau $\overline{z}$, adalah bilangan kompleks yang diperoleh dengan mengubah tanda bagian imajiner:
$$z^* = a - bi$$
Jika kita mengalikan sebuah bilangan kompleks dengan konjugatnya, hasilnya pasti merupakan bilangan real:
$$z \cdot z^* = (a + bi)(a - bi) = a^2 + b^2$$
### Vectors
Sebuah **vektor (vector)** adalah sebuah objek matematika yang memiliki besar (magnitude) dan arah (direction). Pada bidang dua dimensi, vektor dapat direpresentasikan sebagai sebuah panah yang memiliki titik awal dan titik akhir. Dalam ruang tiga dimensi, vektor juga dapat direpresentasikan sebagai sebuah panah, namun dengan tambahan satu dimensi, yaitu dimensi kedalaman (depth). Berikut adalah contoh vektor dalam dua dimensi:
$$\LARGE \vec{v} = \begin{pmatrix} 3 \\ 4 \end{pmatrix}$$
Berikut adalah contoh vektor dalam tiga dimensi:
$$\LARGE \vec{u} = \begin{pmatrix} 2 \\ 3 \\ 5 \end{pmatrix}$$
Vektor biasanya direpresentasikan sebagai sebuah array dari bilangan-bilangan real atau kompleks. Dalam quantum computing, vektor digunakan untuk merepresentasikan state dari qubit. Bilangan kompleks dapat direpresentasikan bukan pada euclidian space, melainkan pada complex vector space. Complex vector space memiliki sumbu real dan sumbu imajiner, sehingga vektor dalam complex vector space dapat memiliki komponen yang berupa bilangan kompleks.

*Gambar 1: Representasi visual vektor dalam ruang kompleks (complex vector space) yang digunakan dalam quantum computing untuk menggambarkan state qubit.*
Ketika kita merepresentasikan sebuah bilangan complex dalam bentuk vektor, kita juga bisa menemukan besar (magnitude) dari bilangan complex tersebut. Dengan menggunakan teori pitagoras sederhana, besar dari sebuah bilangan complex $z = a + bi$ dapat dihitung dengan rumus:
$$\LARGE |z| = \sqrt{a^2 + b^2}$$
Jika kamu memerhatikan dengan baik, rumus di atas juga dapat diperoleh dengan mencari akar kuadrat dari hasil perkalian bilangan complex dengan konjugatnya:
$$\LARGE |z| = \sqrt{z \cdot z^*}$$
### Polar Form
Bilangan kompleks memiliki representasi lain yang disebut dengan **bentuk polar (polar form)**. Dalam bentuk polar, sebuah bilangan kompleks direpresentasikan berdasarkan jarak dari titik origin (origin) dan sudut yang dibentuk dengan sumbu real positif. Bentuk polar dari sebuah bilangan kompleks $z = a + bi$ dapat ditulis sebagai:
$$\LARGE z = r(\cos \theta + i \sin \theta)$$
di mana $r$ adalah jarak (magnitude) dari titik origin ke titik $(a, b)$, dan $\theta$ adalah sudut yang dibentuk dengan sumbu real positif. Jarak $r$ dapat dihitung dengan rumus:
$$\LARGE r = |z| = \sqrt{a^2 + b^2}$$
Sedangkan sudut $\theta$ dapat dihitung dengan menggunakan fungsi trigonometri:
$$\LARGE \theta = \tan^{-1}\left(\frac{b}{a}\right)$$

*Gambar 2: Representasi bilangan kompleks dalam bentuk polar.*
### Exponential Form
Bentuk polar dari bilangan kompleks dapat juga direpresentasikan dalam **bentuk eksponensial (exponential form)** menggunakan konstanta Euler:
$$\LARGE z = re^{i\theta}$$
di mana $e$ adalah basis dari logaritma natural (sekitar 2.71828), dan $i$ adalah unit imajiner. Besar $r$ dan sudut $\theta$ memiliki definisi yang sama seperti pada bentuk polar.
Dalam quantum computing, bentuk eksponensial sering digunakan karena sebuah properti eksponensial yang sangat berguna, di mana ketika kita mengubah sudut $\theta$, bilangan kompleks akan berputar mengelilingi titik origin pada bidang kompleks.

*Gambar 3: Representasi rotasi bilangan kompleks dalam bentuk eksponensial. Pada contoh ini, $r$ bernilai 1.*
### Matrices
Dalam quantum computing, **matriks (matrices)** digunakan untuk merepresentasikan operasi pada qubit. Sebuah matriks adalah array dua dimensi dari bilangan-bilangan real atau kompleks. Berikut adalah contoh-contoh matriks:
$$\large A = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix}$$
$$\large B = \begin{pmatrix} 5 & 6 & 7 \\ 8 & 9 & 10 \end{pmatrix}$$
$$\large C = \begin{pmatrix} 1 & 2 & 0 \\ 0 & 10 & 4 \\ 3 & 0 & 1 \end{pmatrix}$$
Sebuah vektor adalah kasus khusus dari matriks, yaitu matriks dengan satu kolom atau satu baris. Vektor kolom (column vector) adalah matriks dengan satu kolom, sedangkan vektor baris (row vector) adalah matriks dengan satu baris. Berikut adalah contoh vektor kolom dan vektor baris:
Vektor kolom:
$$\large \vec{v} = \begin{pmatrix} 3 \\ 4 \end{pmatrix}$$
Vektor baris:
$$\large \vec{u} = \begin{pmatrix} 2 & 3 & 5 \end{pmatrix}$$
Dalam quantum computing, vektor kolom sering digunakan untuk merepresentasikan state dari qubit, sedangkan matriks digunakan untuk merepresentasikan operasi pada qubit, yang disebut dengan **gerbang kuantum (quantum gates)**. Penjelasan mengenai quantum gates akan dibahas pada modul berikutnya.
Ketika kita mengalikan sebuah matriks dengan vektor kolom, hasilnya adalah sebuah vektor kolom baru. Misalnya, jika kita memiliki matriks $A$ dan vektor kolom $\vec{v}$ sebagai berikut:
$$\large A = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix}$$
$$\large \vec{v} = \begin{pmatrix} 5 \\ 6 \end{pmatrix}$$
Maka hasil perkalian matriks $A$ dengan vektor kolom $\vec{v}$ adalah:
$$\large A \cdot \vec{v} = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} \cdot \begin{pmatrix} 5 \\ 6 \end{pmatrix} = \begin{pmatrix} 1 \cdot 5 + 2 \cdot 6 \\ 3 \cdot 5 + 4 \cdot 6 \end{pmatrix} = \begin{pmatrix} 17 \\ 39 \end{pmatrix}$$
Dalam operasi pengalian sebuah matriks dengan vektor kolom, kita dapat merepresentasikannya sebagai transformasi linear yang mengubah vektor kolom awal menjadi vektor kolom baru. Transformasi ini sangat penting dalam quantum computing karena menggambarkan bagaimana state qubit berubah ketika diterapkan sebuah quantum gate pada qubit tersebut.
### Dirac Notation
**Notasi Dirac (Dirac notation)**, juga dikenal sebagai **notasi Bra-Ket (Bra-Ket notation)**, adalah sebuah notasi yang digunakan dalam mekanika kuantum untuk merepresentasikan state kuantum. Notasi ini diperkenalkan oleh fisikawan Paul Dirac. Dalam notasi ini, sebuah state kuantum direpresentasikan sebagai sebuah vektor dalam ruang vektor kompleks. Sebuah state kuantum biasanya ditulis dalam bentuk **ket** (|ψ⟩) atau **bra** (⟨ψ|).
Sebuah **ket** (|ψ⟩) adalah representasi vektor kolom dari state kuantum, sedangkan sebuah **bra** (⟨ψ|) adalah representasi vektor baris dari state kuantum. Misalnya, sebuah state kuantum |ψ⟩ dapat direpresentasikan sebagai berikut:
$$\large |\psi\rangle = \begin{pmatrix} \alpha \\ \beta \end{pmatrix}$$
di mana $\alpha$ dan $\beta$ adalah bilangan kompleks yang memenuhi kondisi normalisasi:
$$\large |\alpha|^2 + |\beta|^2 = 1$$
### A Peek into Quantum Bits (Qubits)
Dalam komputasi klasik, unit dasar informasi adalah bit, yang dapat berada dalam salah satu dari dua keadaan: 0 atau 1. Sebaliknya, dalam komputasi kuantum, unit dasar informasi adalah qubit (quantum bit), yang dapat berada dalam superposisi dari kedua keadaan tersebut. Sebuah qubit dapat direpresentasikan sebagai sebuah vektor dalam ruang vektor kompleks dua dimensi, di mana basisnya adalah |0⟩ dan |1⟩.
State |0⟩ dan |1⟩ dapat direpresentasikan sebagai vektor kolom sebagai berikut:
$$\large |0\rangle = \begin{pmatrix} 1 \\ 0 \end{pmatrix}$$
$$\large |1\rangle = \begin{pmatrix} 0 \\ 1 \end{pmatrix}$$
di mana elemen pertama pada vektor kolom merepresentasikan probabilitas qubit berada dalam keadaan |0⟩, dan elemen kedua merepresentasikan probabilitas qubit berada dalam keadaan |1⟩.
Sebuah qubit dapat ditulis dalam bentuk ket sebagai berikut:
$$\large |q\rangle = \alpha |0\rangle + \beta |1\rangle$$
di mana $\alpha$ dan $\beta$ adalah koefisien kompleks yang memenuhi kondisi normalisasi:
$$\large |\alpha|^2 + |\beta|^2 = 1$$
Masing-masing $|\alpha|^2$ dan $|\beta|^2$ dapat diartikan sebagai probabilitas mengukur qubit dalam keadaan $|0⟩$ atau $|1⟩$.
Untuk bisa memahami penulisan state qubit, kita perlu memahami konsep **superposisi (superposition)** pada mekanika kuantum. Pembahasan mengenai superposisi akan dibahas pada modul berikutnya.
### Inner Products and Tensor Products
**Inner product (produk dalam)** adalah operasi matematika yang menggabungkan dua vektor untuk menghasilkan sebuah skalar. Dalam notasi Dirac, inner product antara dua state kuantum |ψ⟩ dan |φ⟩ ditulis sebagai ⟨ψ|φ⟩. Jika kita memiliki dua vektor kolom:
$$\large |\psi\rangle = \begin{pmatrix} \alpha_1 \\ \beta_1 \end{pmatrix}$$
$$\large |\phi\rangle = \begin{pmatrix} \alpha_2 \\ \beta_2 \end{pmatrix}$$
Maka inner product antara |ψ⟩ dan |φ⟩ adalah:
$$\large \langle \psi | \phi \rangle = \begin{pmatrix} \alpha_1^* & \beta_1^* \end{pmatrix} \cdot \begin{pmatrix} \alpha_2 \\ \beta_2 \end{pmatrix} = \alpha_1^* \alpha_2 + \beta_1^* \beta_2$$
**Tensor product (produk tensor)** adalah operasi matematika yang menggabungkan dua vektor atau matriks untuk membentuk sebuah vektor atau matriks baru dengan dimensi yang lebih besar. Dalam notasi Dirac, tensor product antara dua state kuantum |ψ⟩ dan |φ⟩ ditulis sebagai |ψ⟩ ⊗ |φ⟩. Jika kita memiliki dua vektor kolom:
$$\large |\psi\rangle = \begin{pmatrix} \alpha_1 \\ \beta_1 \end{pmatrix}$$
$$\large |\phi\rangle = \begin{pmatrix} \alpha_2 \\ \beta_2 \end{pmatrix}$$
Maka tensor product antara |ψ⟩ dan |φ⟩ adalah:
$$\large |\psi\rangle \otimes |\phi\rangle = \begin{pmatrix} \alpha_1 \\ \beta_1 \end{pmatrix} \otimes \begin{pmatrix} \alpha_2 \\ \beta_2 \end{pmatrix} = \begin{pmatrix} \alpha_1 \alpha_2 \\ \alpha_1 \beta_2 \\ \beta_1 \alpha_2 \\ \beta_1 \beta_2 \end{pmatrix}$$
Contoh tensor product:
Jika kita memiliki dua state kuantum |0⟩ dan |1⟩ yang direpresentasikan sebagai berikut:
$$\large |0\rangle = \begin{pmatrix} 1 \\ 0 \end{pmatrix}$$
$$\large |1\rangle = \begin{pmatrix} 0 \\ 1 \end{pmatrix}$$
Maka tensor product antara |0⟩ dan |1⟩ adalah:
$$\large |0\rangle \otimes |1\rangle = \begin{pmatrix} 1 \\ 0 \end{pmatrix} \otimes \begin{pmatrix} 0 \\ 1 \end{pmatrix} = \begin{pmatrix} 1 \cdot 0 \\ 1 \cdot 1 \\ 0 \cdot 0 \\ 0 \cdot 1 \end{pmatrix} = \begin{pmatrix} 0 \\ 1 \\ 0 \\ 0 \end{pmatrix}$$