์ต๊ทผ ์์ ์ปดํจํฐ ๊ธฐ์ ์ด ์์ฒญ๋๊ฒ ๋ฐ์ ํ๊ณ ์๋ค๋ ์์, ๋ค๋ค ๋ค์ผ์ จ์ฃ ? ๐ฒ ํนํ ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ์์ ์ปดํจํฐ์ ์ ์ฌ๋ ฅ์ ๋ณด์ฌ์ฃผ๋ ๋ํ์ ์ธ ์์์ธ๋ฐ์. ํน์ "๋๋ง ๋นผ๊ณ ๋ค ์๋ ๊ฑด ์๋๊น?" ํ๋ ๋ถ์๊ฐ, FOMO๋ฅผ ๋๋ผ์ จ๋ค๋ฉด ๊ฑฑ์ ๋ง์ธ์! ๐ ์ด ๊ธ ํ๋๋ก ์ฌ๋ฌ๋ถ๋ ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ ์ ๋ฌธ๊ฐ๊ฐ ๋ ์ ์์ต๋๋ค! ๐ฉโ๐ป๐จโ๐ป
์ด ๊ธ์ ํตํด ์ฌ๋ฌ๋ถ์:
- ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ํต์ฌ ์๋ฆฌ๋ฅผ ์ฝ๊ฒ ์ดํดํ๊ณ , ์๋ ๋ฐฉ์์ ๊ฟฐ๋ซ์ด ๋ณผ ์ ์์ด์. ๐ค
- Qiskit ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ํ์ด์ฌ์ผ๋ก ์ง์ ๊ตฌํํด ๋ณผ ์ ์์ด์. ๐
- ์์ ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ์ด๋ฅผ ๋ค์ง๊ณ , ๋ ๋์๊ฐ ์์ ์ปดํจํ ๋ถ์ผ๋ฅผ ํ๊ตฌํ ์ ์๋ ๋ฐํ์ ๋ง๋ จํ ์ ์์ด์. ๐
์, ๊ทธ๋ผ ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ์ธ๊ณ๋ก ํจ๊ป ๋ ๋๋ณผ๊น์? ๐บ๏ธ
Grover ์๊ณ ๋ฆฌ์ฆ, ๋์ฒด ๋ญ๊ธธ๋? ๐ค
๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ Lov Grover๊ฐ 1996๋ ์ ๊ฐ๋ฐํ ์์ ์๊ณ ๋ฆฌ์ฆ์ด์์. ๐ง ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฌ๋์ง ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํน์ ํญ๋ชฉ์ ์ฐพ๋ ๋ฐ ํนํ๋์ด ์์ฃ . ๐ ์ฝ๊ฒ ๋งํด์, ์ฐ๋ฆฌ๊ฐ ์ ํ๋ฒํธ๋ถ์์ ํน์ ์ด๋ฆ์ ์ฐพ๋๋ค๊ณ ์์ํด ๋ณด์ธ์. ๐ ์ ํต์ ์ธ ์ปดํจํฐ๋ ํ๋ํ๋ ๋ชจ๋ ์ด๋ฆ์ ๋ค ํ์ธํด์ผ ํ์ง๋ง, ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ํจ์ฌ ๋ ๋น ๋ฅด๊ฒ ์ํ๋ ์ด๋ฆ์ ์ฐพ์๋ผ ์ ์๋ค๋ ๊ฑฐ์ฃ ! ์=3
๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ ๋ฐ๋ก ์๋! ๐๏ธ ์ ํต์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก๋ O(N)์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ๊ฒ์ ๋ฌธ์ ๋ฅผ ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ O(โN)์ ์๊ฐ์ผ๋ก ํด๊ฒฐํ ์ ์์ด์. ์ฌ๊ธฐ์ N์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํฌ๊ธฐ๋ฅผ ์๋ฏธํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํด์๋ก ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ๋์ฑ ๋น์ ๋ฐํ๊ฒ ๋์ฃ . โจ
ํ์ง๋ง ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ด ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ์ฃผ๋ ๋ง๋ฅ ์ด์ ๋ ์๋์์. ๐ ๋ช ๊ฐ์ง ์ ์ฝ ์ฌํญ๋ ์กด์ฌํ๋๋ฐ์. ์๋ฅผ ๋ค์ด, ์ฐพ๊ณ ์ ํ๋ ํญ๋ชฉ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์กด์ฌํ๋ค๋ ๊ฒ์ ์๊ณ ์์ด์ผ ํ๊ณ , ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ณต ํ์๋ฅผ ์ ์คํ๊ฒ ์ ํํด์ผ ์ต์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ด์. ๐ค
Qiskit์ผ๋ก Grover ์๊ณ ๋ฆฌ์ฆ ๊ตฌํํ๊ธฐ ๐ ๏ธ
์, ์ด์ ์ด๋ก ์ ์ถฉ๋ถํ๋, ์ง์ ์ฝ๋ฉ์ ํด๋ณผ๊น์? ๐ป Qiskit์ IBM์์ ๊ฐ๋ฐํ ์คํ ์์ค ์์ ์ปดํจํ ํ๋ ์์ํฌ์ธ๋ฐ์. ํ์ด์ฌ์ ์ด์ฉํด์ ์์ ํ๋ก๋ฅผ ์ค๊ณํ๊ณ , ์์ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๊ณ , ์์ ์ปดํจํฐ๋ฅผ ์๋ฎฌ๋ ์ด์ ํ ์ ์๋๋ก ๋์์ฃผ๋ ์์ฃผ ์ ์ฉํ ๋๊ตฌ๋๋๋ค. ๐
Qiskit์ ์ฌ์ฉํ๋ฉด ๋ณต์กํ ์์ ์ญํ์ ๊ณ์ฐ์ ์ง์ ์ํํ์ง ์์๋, ๊ณ ์์ค์ API๋ฅผ ์ด์ฉํด์ ์์ ํ๋ก๊ทธ๋จ์ ์ฝ๊ฒ ์์ฑํ ์ ์์ด์. ๋ง์น ๋ ๊ณ ๋ธ๋ก์ ์กฐ๋ฆฝํ๋ฏ์ด, ์์ ๊ฒ์ดํธ๋ฅผ ์ฐ๊ฒฐํด์ ์ํ๋ ์์ ํ๋ก๋ฅผ ๋ง๋ค ์ ์๋ค๋ ๊ฑฐ์ฃ ! ๐งฑ
Qiskit ์ค์น๋ ์์ฃผ ๊ฐ๋จํด์. ํฐ๋ฏธ๋์ด๋ ๋ช ๋ น ํ๋กฌํํธ์์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
pip install qiskit
์ค์น๊ฐ ์๋ฃ๋์๋ค๋ฉด, ์ด์ ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๊ธฐ ์ํ ๋ชจ๋ ์ค๋น๊ฐ ๋๋ฌ์ต๋๋ค! ๐
Grover ์๊ณ ๋ฆฌ์ฆ ํ์ด์ฌ ์ฝ๋ ์ดํด๋ณด๊ธฐ ๐
์ด์ Qiskit์ ์ด์ฉํด์ ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ํ์ด์ฌ์ผ๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋จ๊ณ๋ณ๋ก ์์ธํ ์์๋ณผ๊น์? ๐ค ์ฝ๋ ์ค๋ํซ๊ณผ ํจ๊ป ๊ฐ ๋จ๊ณ๋ณ ์ค๋ช ์ ๊ณ๋ค์ฌ์ ์ฌ๋ฌ๋ถ์ ์ดํด๋ฅผ ๋๋๋ก ํ ๊ฒ์. ๐งโ๐ซ
1๋จ๊ณ: ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํฌํธ
๊ฐ์ฅ ๋จผ์ , Qiskit์ ์ฌ์ฉํ๊ธฐ ์ํด ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ํฌํธํด์ผ ํฉ๋๋ค.
from qiskit import QuantumCircuit, Aer, execute
from qiskit.visualization import plot_histogram
import numpy as np
QuantumCircuit
์ ์์ ํ๋ก๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋๊ณ , Aer
๋ ์์ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ ๊ณตํ๋ฉฐ, execute
๋ ์์ ํ๋ก๋ฅผ ์คํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. plot_histogram
์ ๊ฒฐ๊ณผ๋ฅผ ์๊ฐํํ๋ ๋ฐ ์ฌ์ฉ๋๊ณ , numpy
๋ ์ํ์ ์ฐ์ฐ์ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
2๋จ๊ณ: ์์ ํ๋ก ์ด๊ธฐํ
๋ค์์ผ๋ก, ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ ์์ ํ๋ก๋ฅผ ์ด๊ธฐํํด์ผ ํฉ๋๋ค.
n = 2 # ํ๋นํธ ์
qc = QuantumCircuit(n, n) # ํ๋นํธ n๊ฐ, ๊ณ ์ ๋นํธ n๊ฐ
์ฌ๊ธฐ์ n
์ ํ๋นํธ์ ์๋ฅผ ๋ํ๋
๋๋ค. ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ํ๋นํธ์ ์์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋ฉ๋๋ค. ์ ์ฝ๋์์๋ 2๊ฐ์ ํ๋นํธ๋ฅผ ์ฌ์ฉํ์ผ๋ฏ๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํฌ๊ธฐ๋ 2^2 = 4๊ฐ ๋ฉ๋๋ค.
3๋จ๊ณ: ์ด๊ธฐ ์ํ ์ค๋น
๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ์์ํ๊ธฐ ์ ์, ๋ชจ๋ ํ๋นํธ๋ฅผ ๊ท ๋ฑ ์ค์ฒฉ ์ํ๋ก ๋ง๋ค์ด์ผ ํฉ๋๋ค.
qc.h(range(n)) # ๋ชจ๋ ํ๋นํธ์ Hadamard ๊ฒ์ดํธ ์ ์ฉ
Hadamard ๊ฒ์ดํธ๋ ํ๋นํธ๋ฅผ ๊ท ๋ฑ ์ค์ฒฉ ์ํ๋ก ๋ง๋๋ ์ญํ ์ ํฉ๋๋ค. ์ ์ฝ๋์์๋ range(n)
์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ํ๋นํธ์ Hadamard ๊ฒ์ดํธ๋ฅผ ์ ์ฉํ์ต๋๋ค.
4๋จ๊ณ: Oracle ๋ง๋ค๊ธฐ
Oracle์ ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ํต์ฌ ๊ตฌ์ฑ ์์ ์ค ํ๋์ธ๋ฐ์. ์ฐพ๊ณ ์ ํ๋ ํญ๋ชฉ์ ํ์ํ๋ ์ญํ ์ ํฉ๋๋ค.
def oracle(qc, n):
qc.cz(0, 1) # |11> ์ํ์ ์์ ๋ฐ์ ์ ์ฉ
qc.barrier() # ํ๋ก ๋ถ๋ฆฌ
oracle(qc, n) # Oracle ์ ์ฉ
qc.barrier() # ํ๋ก ๋ถ๋ฆฌ
์ ์ฝ๋์์๋ oracle
ํจ์๋ฅผ ์ ์ํ์ฌ |11> ์ํ์ ์์ ๋ฐ์ ์ ์ ์ฉํ์ต๋๋ค. ์ด๋ ์ฐพ๊ณ ์ ํ๋ ํญ๋ชฉ์ด |11>์ด๋ผ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
5๋จ๊ณ: Diffusion ์ฐ์ฐ์ ๋ง๋ค๊ธฐ
Diffusion ์ฐ์ฐ์๋ ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ๋ ๋ค๋ฅธ ํต์ฌ ๊ตฌ์ฑ ์์์ธ๋ฐ์. ์งํญ ์ฆํญ์ ํตํด ์ฌ๋ฐ๋ฅธ ๋ต์ ์ฐพ์ ํ๋ฅ ์ ๋์ด๋ ์ญํ ์ ํฉ๋๋ค.
def diffuser(qc, n):
qc.h(range(n)) # ๋ชจ๋ ํ๋นํธ์ Hadamard ๊ฒ์ดํธ ์ ์ฉ
qc.x(range(n)) # ๋ชจ๋ ํ๋นํธ์ Pauli-X ๊ฒ์ดํธ ์ ์ฉ
qc.h(n-1) # ๋ง์ง๋ง ํ๋นํธ์ Hadamard ๊ฒ์ดํธ ์ ์ฉ
qc.mct(list(range(n-1)), n-1) # Multiple Controlled-Z ๊ฒ์ดํธ ์ ์ฉ
qc.h(n-1) # ๋ง์ง๋ง ํ๋นํธ์ Hadamard ๊ฒ์ดํธ ์ ์ฉ
qc.x(range(n)) # ๋ชจ๋ ํ๋นํธ์ Pauli-X ๊ฒ์ดํธ ์ ์ฉ
qc.h(range(n)) # ๋ชจ๋ ํ๋นํธ์ Hadamard ๊ฒ์ดํธ ์ ์ฉ
qc.barrier() # ํ๋ก ๋ถ๋ฆฌ
diffuser(qc, n) # Diffusion ์ฐ์ฐ์ ์ ์ฉ
qc.barrier() # ํ๋ก ๋ถ๋ฆฌ
์ ์ฝ๋์์๋ diffuser
ํจ์๋ฅผ ์ ์ํ์ฌ Diffusion ์ฐ์ฐ์๋ฅผ ๊ตฌํํ์ต๋๋ค. Diffusion ์ฐ์ฐ์๋ Hadamard ๊ฒ์ดํธ, Pauli-X ๊ฒ์ดํธ, Multiple Controlled-Z ๊ฒ์ดํธ ๋ฑ์ ์ฌ์ฉํ์ฌ ๊ตฌํ๋ฉ๋๋ค.
6๋จ๊ณ: ์ธก์ ํ๊ธฐ
๋ง์ง๋ง์ผ๋ก, ์์ ํ๋ก๋ฅผ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ธก์ ํด์ผ ํฉ๋๋ค.
qc.measure(range(n), range(n)) # ๋ชจ๋ ํ๋นํธ๋ฅผ ์ธก์
simulator = Aer.get_backend('qasm_simulator') # ์๋ฎฌ๋ ์ดํฐ ์ ํ
job = execute(qc, simulator, shots=1024) # ์์ ํ๋ก ์คํ
result = job.result() # ๊ฒฐ๊ณผ ๊ฐ์ ธ์ค๊ธฐ
counts = result.get_counts(qc) # ์ธก์ ํ์ ๊ฐ์ ธ์ค๊ธฐ
plot_histogram(counts) # ๊ฒฐ๊ณผ ์๊ฐํ
์ ์ฝ๋์์๋ measure
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ํ๋นํธ๋ฅผ ์ธก์ ํ์ต๋๋ค. ๊ทธ ํ, Aer
์ qasm_simulator
๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ๋ก๋ฅผ ์๋ฎฌ๋ ์ด์
ํ๊ณ , execute
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ๋ก๋ฅผ ์คํํ์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก, result.get_counts(qc)
๋ฅผ ์ฌ์ฉํ์ฌ ์ธก์ ํ์๋ฅผ ๊ฐ์ ธ์ค๊ณ , plot_histogram
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์๊ฐํํ์ต๋๋ค.
์์ ์๋ฎฌ๋ ์ดํฐ์ ํ๊ณ โ ๏ธ
Qiskit์ ์ฌ์ฉํ๋ฉด ์์ ์ปดํจํฐ๋ฅผ ์๋ฎฌ๋ ์ด์ ํ ์ ์์ง๋ง, ์ค์ ์์ ์ปดํจํฐ์๋ ์ฐจ์ด๊ฐ ์๋ค๋ ์ ์ ๊ผญ ๊ธฐ์ตํด์ผ ํด์. ๐ฅ ํ์ฌ ๊ธฐ์ ๋ก๋ ์์ ์ปดํจํฐ์ ํ๋นํธ ์๊ฐ ์ ํ์ ์ด๊ณ , ์์ ์ฝํ๊ณผ ๊ฐ์ ํ์์ ์๋ฒฝํ๊ฒ ๊ตฌํํ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ด์ฃ .
์์ ์๋ฎฌ๋ ์ดํฐ๋ ํ๋นํธ ์๊ฐ ๋์ด๋ ์๋ก ํ์ํ ๊ณ์ฐ๋์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์, ์ผ์ ๊ท๋ชจ ์ด์์ ์์ ํ๋ก๋ ์๋ฎฌ๋ ์ด์ ํ๋ ๋ฐ ์์ฒญ๋ ์๊ฐ์ด ์์๋ ์ ์์ด์. โณ
๋ฐ๋ผ์ ์์ ์๋ฎฌ๋ ์ดํฐ๋ ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ์ดํดํ๊ณ ์คํํ๋ ๋ฐ ์ ์ฉํ ๋๊ตฌ์ด์ง๋ง, ์ค์ ์์ ์ปดํจํฐ์ ์ฑ๋ฅ์ ์๋ฒฝํ๊ฒ ๋๋ณํ์ง๋ ๋ชปํ๋ค๋ ์ ์ ๋ช ์ฌํด์ผ ํฉ๋๋ค.
ํ์ฅ ํ์ต: Qiskit ๊ธฐ๋ฅ ํ์ ๐
Qiskit์ ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ ์ธ์๋ ๋ค์ํ ์์ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๊ณ ์คํํ ์ ์๋๋ก ํ๋ถํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์์ด์. ๐ Qiskit์ ๋ค์ํ ๊ธฐ๋ฅ์ ํ์ํ๊ณ ํ์ฉํ๋ฉด, ์ฌ๋ฌ๋ถ์ ์์ ์ปดํจํ ๋ฅ๋ ฅ์ ๋์ฑ ํฅ์์ํฌ ์ ์์ ๊ฑฐ์์. ๐ช
- Qiskit Aqua: ํํ, ์ต์ ํ, ๋จธ์ ๋ฌ๋ ๋ฑ ๋ค์ํ ๋ถ์ผ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์๊ณ ๋ฆฌ์ฆ์ ์ ๊ณตํฉ๋๋ค. ๐งช
- Qiskit Terra: ์์ ํ๋ก๋ฅผ ์ค๊ณํ๊ณ ์ปดํ์ผํ๊ณ ์คํํ๊ธฐ ์ํ ํต์ฌ ๋ชจ๋์ ๋๋ค. ๐
- Qiskit Aer: ๋ค์ํ ์์ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ ๊ณตํ์ฌ ์์ ์๊ณ ๋ฆฌ์ฆ์ ์คํํ๊ณ ๊ฒ์ฆํ ์ ์๋๋ก ๋์์ค๋๋ค. ๐จ
- Qiskit Ignis: ์์ ์ปดํจํฐ์ ๋ ธ์ด์ฆ๋ฅผ ๋ณด์ ํ๊ณ ์ค๋ฅ๋ฅผ ์ํํ๊ธฐ ์ํ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๐ฅ
Qiskit์ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ๋ฉด ๊ฐ ๊ธฐ๋ฅ์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๐
๋ค๋ฅธ ์์ ์๊ณ ๋ฆฌ์ฆ ๊ตฌํํด๋ณด๊ธฐ ๐คฏ
๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ๋ง์คํฐํ๋ค๋ฉด, ์ด์ ๋ค๋ฅธ ์์ ์๊ณ ๋ฆฌ์ฆ์ ๋์ ํด ๋ณผ ์ฐจ๋ก์ ๋๋ค! ๐ ์์ ์ปดํจํ ๋ถ์ผ์๋ ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ ์ธ์๋ ๋ค์ํ ํฅ๋ฏธ๋ก์ด ์๊ณ ๋ฆฌ์ฆ๋ค์ด ์กด์ฌํ๊ณ ์์ด์.
- ์ผ์ด ์๊ณ ๋ฆฌ์ฆ (Shor’s algorithm): ํฐ ์๋ฅผ ์์ธ์๋ถํดํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ํ๋ ์ํธ ์ฒด๊ณ๋ฅผ ์ํํ ์ ์๋ ์ ์ฌ๋ ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๐
- ์์ ํธ๋ฆฌ์ ๋ณํ (Quantum Fourier Transform): ์์ ์ ํธ ์ฒ๋ฆฌ ๋ฐ ์์ ์์ ์ถ์ ์ ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ๐ต
- ์์ ๊ทผ์ฌ ์ต์ ํ ์๊ณ ๋ฆฌ์ฆ (Quantum Approximate Optimization Algorithm, QAOA): ์กฐํฉ ์ต์ ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ๐งฎ
- ๋ณ๋ถ ์์ ๊ณ ์ ๊ฐ ํ์๊ธฐ (Variational Quantum Eigensolver, VQE): ๋ถ์ ์๋์ง ๊ณ์ฐ ๋ฑ ํํ ๋ถ์ผ์ ์์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. โ๏ธ
์ด๋ฌํ ์๊ณ ๋ฆฌ์ฆ๋ค์ Qiskit์ ์ฌ์ฉํ์ฌ ์ง์ ๊ตฌํํด ๋ณด๋ฉด, ์์ ์ปดํจํ ์ ๋ํ ์ดํด๋ฅผ ๋์ฑ ๊น๊ฒ ํ ์ ์์ ๊ฑฐ์์. ๐ง
Grover ์๊ณ ๋ฆฌ์ฆ ํ์ฉ ์ฌ๋ก ๐ข
๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ก ์ ์ธ ์ฐ๊ตฌ๋ฟ๋ง ์๋๋ผ, ๋ค์ํ ๋ถ์ผ์์ ํ์ฉ๋ ์ ์๋ ์ ์ฌ๋ ฅ์ ๊ฐ์ง๊ณ ์์ด์. ๐
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฒ์: ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํน์ ์ ๋ณด๋ฅผ ๋น ๋ฅด๊ฒ ๊ฒ์ํ๋ ๋ฐ ํ์ฉ๋ ์ ์์ต๋๋ค. ๐
- ์ต์ ํ ๋ฌธ์ : ๋ณต์กํ ์ต์ ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ํ์ฉ๋ ์ ์์ต๋๋ค. ๐งฎ
- ๋จธ์ ๋ฌ๋: ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ํ๋ จ์ํค๊ณ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐ ํ์ฉ๋ ์ ์์ต๋๋ค. ๐ค
- ์ํธ ํด๋ : ํน์ ์ํธ ์๊ณ ๋ฆฌ์ฆ์ ํด๋ ํ๋ ๋ฐ ํ์ฉ๋ ์ ์์ต๋๋ค. ๐
๋ฌผ๋ก , ์์ง๊น์ง ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ด ์ค์ ๋ฌธ์ ํด๊ฒฐ์ ๋๋ฆฌ ์ฌ์ฉ๋์ง๋ ์๊ณ ์์ง๋ง, ์์ ์ปดํจํฐ ๊ธฐ์ ์ด ๋ฐ์ ํจ์ ๋ฐ๋ผ ๊ทธ ํ์ฉ ๊ฐ๋ฅ์ฑ์ ๋์ฑ ์ปค์ง ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ๐ฎ
์ปจํ ์ธ ์ฐ์ฅ
์์ ์ฝํ์ด๋ ๋ฌด์์ผ๊น์? ๐ค
์์ ์ฝํ์ ์์ ์ญํ์์ ๊ฐ์ฅ ์ ๊ธฐํ๊ณ ์ดํดํ๊ธฐ ์ด๋ ค์ด ํ์ ์ค ํ๋์ ๋๋ค. ๐คฏ ๋ ๊ฐ ์ด์์ ์ ์๊ฐ ์๋ก ์ฐ๊ฒฐ๋์ด ์์ด์, ํ๋์ ์ ์์ ์ํ๋ฅผ ์ธก์ ํ๋ฉด ๋ค๋ฅธ ์ ์์ ์ํ๊ฐ ์ฆ๊ฐ์ ์ผ๋ก ๊ฒฐ์ ๋๋ ํ์์ ๋งํฉ๋๋ค. ๋ง์น ๋ ๊ฐ์ ๋์ ์ด ํ ๋ ํ์๋ก ์ฐ๊ฒฐ๋์ด ์์ด์, ํ๋์ ๋์ ์ ๋์ ธ์ ์๋ฉด์ด ๋์ค๋ฉด ๋ค๋ฅธ ๋์ ์ ์ฆ์ ๋ท๋ฉด์ด ๋๋ ๊ฒ๊ณผ ๊ฐ๋ค๊ณ ํ ์ ์์ต๋๋ค. ๐ช
์์ธ์ํ์ธ์ ์์ ์ฝํ์ "์ ๋ น ๊ฐ์ ์๊ฒฉ ์์ฉ (spooky action at a distance)"์ด๋ผ๊ณ ๋ถ๋ ๋๋ฐ์. ์ด๋ ์์ ์ฝํ์ด ๊ณ ์ ์ ์ธ ๋ฌผ๋ฆฌ ๋ฒ์น์ผ๋ก๋ ์ค๋ช ํ ์ ์๋ ํ์์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์์ ์ฝํ์ ์์ ์ปดํจํฐ์ ํ๋นํธ ๊ฐ์ ์ฐ๊ฒฐ์ ๊ฐ๋ฅํ๊ฒ ํ๊ณ , ์์ ํต์ ์์ ์์ ํ ์ ๋ณด ์ ์ก์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ํ์ฉ๋ ์ ์์ต๋๋ค. ๐ก
์์ ์ฐ์์ฑ์ด๋ ๋ฌด์์ผ๊น์? ๐ฅ
์์ ์ฐ์์ฑ์ ์์ ์ปดํจํฐ๊ฐ ๊ธฐ์กด์ ์ปดํจํฐ๋ก๋ ํ ์ ์๋ ํน์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์์ ์ ์ฆํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๐ ์ฆ, ์์ ์ปดํจํฐ๊ฐ ํน์ ๋ถ์ผ์์ ๊ธฐ์กด ์ปดํจํฐ๋ฅผ ๋ฅ๊ฐํ๋ ์ฑ๋ฅ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ๋งํฉ๋๋ค. ์์ ์ฐ์์ฑ์ ๋ฌ์ฑํ๋ ๊ฒ์ ์์ ์ปดํจํฐ ๊ธฐ์ ์ด ์ค์ง์ ์ธ ์์ฉ ๊ฐ๋ฅ์ฑ์ ๊ฐ๊ฒ ๋์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ, ์์ ์ปดํจํ ์ญ์ฌ์ ์ค์ํ ์ด์ ํ๊ฐ ๋ฉ๋๋ค.
2019๋ , Google์ 54๊ฐ์ ํ๋นํธ๋ฅผ ๊ฐ์ง Sycamore ํ๋ก์ธ์๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ๊ณ์ฐ ๋ฌธ์ ๋ฅผ ๊ธฐ์กด ์ํผ์ปดํจํฐ๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ฒ ํด๊ฒฐํจ์ผ๋ก์จ ์์ ์ฐ์์ฑ์ ์ฃผ์ฅํ์ต๋๋ค. ๋ฌผ๋ก , Google์ ์ฃผ์ฅ์ ๋ํด์๋ ๋ ผ๋์ ์ฌ์ง๊ฐ ์์ง๋ง, ์์ ์ฐ์์ฑ ๋ฌ์ฑ์ ์ํ ๊ฒฝ์์ ์์ผ๋ก ๋์ฑ ์น์ดํด์ง ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ๐ฅ
์์ ํค ๋ถ๋ฐฐ (QKD) ๐
์์ ํค ๋ถ๋ฐฐ (Quantum Key Distribution, QKD)๋ ์์ ์ญํ์ ์๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ์์ ํ๊ฒ ์ํธ ํค๋ฅผ ๋ถ๋ฐฐํ๋ ๊ธฐ์ ์ ๋๋ค. ๐ ๊ธฐ์กด์ ์ํธ ๋ฐฉ์์ ์ํ์ ์ธ ๋ณต์ก์ฑ์ ์์กดํ๊ธฐ ๋๋ฌธ์, ๊ณ์ฐ ๋ฅ๋ ฅ์ด ๋ฐ์ด๋ ์ปดํจํฐ๊ฐ ๋ฑ์ฅํ๋ฉด ์ธ์ ๊ฐ๋ ํดํน๋ ์ํ์ด ์์ต๋๋ค. ํ์ง๋ง QKD๋ ์์ ์ญํ์ ๋ฒ์น์ ์ด์ฉํ๊ธฐ ๋๋ฌธ์, ๋์ฒญ ์๋๋ฅผ ๊ฐ์งํ ์ ์๊ณ , ํดํน ์๋๋ฅผ ์์ฒ์ ์ผ๋ก ์ฐจ๋จํ ์ ์์ต๋๋ค.
QKD๋ ๋น์ ์ ์์ธ ๊ด์๋ฅผ ์ด์ฉํ์ฌ ์ํธ ํค๋ฅผ ์ ์กํฉ๋๋ค. ๋ง์ฝ ๋๊ตฐ๊ฐ๊ฐ ๊ด์๋ฅผ ๊ฐ๋ก์ฑ์ ์ธก์ ํ๋ ค๊ณ ํ๋ฉด, ๊ด์์ ์ํ๊ฐ ๋ณํ๊ฒ ๋๊ณ , ์ด๋ ์ก์ ์์ ์์ ์์๊ฒ ๊ฐ์ง๋ฉ๋๋ค. ๋ฐ๋ผ์ QKD๋ ์ด๋ก ์ ์ผ๋ก ์๋ฒฝํ๊ฒ ์์ ํ ์ํธ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๋ฌผ๋ก , QKD ๊ธฐ์ ์ ์์ง ๊ฐ๋ฐ ๋จ๊ณ์ ์์ง๋ง, ์์ผ๋ก ๊ตฐ์ฌ, ๊ธ์ต, ์ ๋ถ ๋ฑ ๋ณด์์ด ์ค์ํ ๋ถ์ผ์์ ๋๋ฆฌ ์ฌ์ฉ๋ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ๐ก๏ธ
ํ๋นํธ์ ์ข ๋ฅ ๐ง
ํ๋นํธ๋ ์์ ์ปดํจํฐ์ ๊ธฐ๋ณธ ๋จ์์ด๋ฉฐ, 0๊ณผ 1์ ์ค์ฒฉ ์ํ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ๐ง ํ๋นํธ๋ ๋ค์ํ ๋ฌผ๋ฆฌ์ ์์คํ ์ ์ด์ฉํ์ฌ ๊ตฌํํ ์ ์์ผ๋ฉฐ, ๊ฐ๊ฐ ์ฅ๋จ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- ์ด์ ๋ ํ๋นํธ: ์ด์ ๋ ๋ฌผ์ง์ ํน์ฑ์ ์ด์ฉํ์ฌ ํ๋นํธ๋ฅผ ๊ตฌํํฉ๋๋ค. ํ์ฌ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ๋นํธ ๋ฐฉ์ ์ค ํ๋์ด๋ฉฐ, IBM, Google ๋ฑ์์ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค. โก
- ์ด์จ ํธ๋ฉ ํ๋นํธ: ์ด์จ์ ๊ฐ๋์ด ํ๋นํธ๋ฅผ ๊ตฌํํฉ๋๋ค. ๋์ ์ ํ๋๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง, ํ์ฅ์ฑ์ด ์ด๋ ต๋ค๋ ๋จ์ ์ด ์์ต๋๋ค. โ
- ๊ด์ ํ๋นํธ: ๊ด์์ ํธ๊ด ๋๋ ์์์ ์ด์ฉํ์ฌ ํ๋นํธ๋ฅผ ๊ตฌํํฉ๋๋ค. ์์ ํต์ ์ ์ ํฉํ์ง๋ง, ํ๋นํธ ์ ์ด๊ฐ ์ด๋ ต๋ค๋ ๋จ์ ์ด ์์ต๋๋ค. ๐
- ๋ฐ๋์ฒด ํ๋นํธ: ๋ฐ๋์ฒด ์์๋ฅผ ์ด์ฉํ์ฌ ํ๋นํธ๋ฅผ ๊ตฌํํฉ๋๋ค. ๊ธฐ์กด์ ๋ฐ๋์ฒด ๊ธฐ์ ์ ํ์ฉํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ํ๋นํธ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ด๋ ต๋ค๋ ๋จ์ ์ด ์์ต๋๋ค. ๐ฑ
์์ ์ค๋ฅ ์์ ๐ก๏ธ
์์ ์ปดํจํฐ๋ ์ธ๋ถ ํ๊ฒฝ๊ณผ์ ์ํธ์์ฉ์ผ๋ก ์ธํด ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค. ๐ฅ ์ด๋ฌํ ์ค๋ฅ๋ ์์ ๊ณ์ฐ์ ์ ํ๋๋ฅผ ๋จ์ด๋จ๋ฆฌ๊ณ , ์์ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ์ ํ์ํต๋๋ค. ๋ฐ๋ผ์ ์์ ์ค๋ฅ ์์ ์ ์์ ์ปดํจํฐ์ ์ค์ฉํ๋ฅผ ์ํด ๋ฐ๋์ ํ์ํ ๊ธฐ์ ์ ๋๋ค.
์์ ์ค๋ฅ ์์ ์ ์ค๋ณต๋ ํ๋นํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ฅ๋ฅผ ๊ฐ์งํ๊ณ ์์ ํ๋ ๊ธฐ์ ์ ๋๋ค. ๋ง์น ๋ฐ์ดํฐ๋ฅผ ๋ฐฑ์ ํ์ฌ ๋ฐ์ดํฐ ์์ค์ ๋ฐฉ์งํ๋ ๊ฒ๊ณผ ์ ์ฌํ๋ค๊ณ ํ ์ ์์ต๋๋ค. ํ์ง๋ง ์์ ์ค๋ฅ ์์ ์ ์์ ์ญํ์ ์๋ฆฌ๋ฅผ ์ด์ฉํ๊ธฐ ๋๋ฌธ์, ๊ณ ์ ์ ์ธ ์ค๋ฅ ์์ ๋ฐฉ์๊ณผ๋ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ์์ ์ค๋ฅ ์์ ์ ์์ง ์ด๊ธฐ ๋จ๊ณ์ ์์ง๋ง, ์์ผ๋ก ์์ ์ปดํจํฐ์ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐ ์ค์ํ ์ญํ ์ ํ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ๐ ๏ธ
๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ ๊ธ์ ๋ง์น๋ฉฐโฆ ๐
๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ์ฌ์ , ์ด๋ ์ จ๋์? ๐ ์ด ๊ธ์ ํตํด ์ฌ๋ฌ๋ถ์ด ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ณธ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ , Qiskit์ ์ฌ์ฉํ์ฌ ์ง์ ๊ตฌํํด ๋ณด๋ ๋ฐ ๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๐
์์ ์ปดํจํ ์ ์์ง ๋ฐ์ ์ด๊ธฐ ๋จ๊ณ์ ์์ง๋ง, ๋ฏธ๋ ์ฌํ์ ์์ฒญ๋ ๋ณํ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์ฌ๋ ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๐ ๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ๊ทธ ๊ฐ๋ฅ์ฑ์ ๋ณด์ฌ์ฃผ๋ ๋ํ์ ์ธ ์์์ด๋ฉฐ, ์์ผ๋ก ๋ ๋ง์ ํ์ ์ ์ธ ์์ ์๊ณ ๋ฆฌ์ฆ๋ค์ด ๋ฑ์ฅํ ๊ฒ์ผ๋ก ๊ธฐ๋๋ฉ๋๋ค.
์์ ์ปดํจํ ๋ถ์ผ๋ ๋์์์ด ๋ณํํ๊ณ ๋ฐ์ ํ๊ณ ์์ต๋๋ค. ๐ ์์ผ๋ก๋ ๊พธ์คํ ๊ด์ฌ์ ๊ฐ์ง๊ณ ํ์ต์ ์ด์ด๊ฐ๋ค๋ฉด, ์ฌ๋ฌ๋ถ๋ ์์ ์ปดํจํ ์๋๋ฅผ ์ ๋ํ๋ ์ธ์ฌ๊ฐ ๋ ์ ์์ ๊ฑฐ์์! ๐
๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ ๊ด๋ จ ๋์์








๊ทธ๋ก๋ฒ ์๊ณ ๋ฆฌ์ฆ ๊ด๋ จ ์ํ๊ฒ์