100매스 양자회로 계산해보자~초급편~
여러분, 해보자.
방법
왼쪽 열에 써 있는 양자 회로에, 상행에 써 있는 양자 회로를 연결해 가능한 상태를 매스 눈에 써 주세요.
그러나 초급편에서는
\begin{eqnarray}
|0> &=& \begin{pmatrix} 1 \\ 0 \end{pmatrix}\\
|1> &=& \begin{pmatrix} 0 \\ 1 \end{pmatrix}\\
|+> &=& \frac{1}{\sqrt 2}\begin{pmatrix} 1 \\ 1 \end{pmatrix}\\
|-> &=& \frac{1}{\sqrt 2}\begin{pmatrix} 1 \\ -1 \end{pmatrix}\\
|i> &=& \frac{1}{\sqrt 2}\begin{pmatrix} 1 \\ i \end{pmatrix}\\
|-i> &=& \frac{1}{\sqrt 2}\begin{pmatrix} 1 \\ -i \end{pmatrix}\\
\end{eqnarray}
중 하나를 입력합니다. 이러한 정수배($-|i>$나 $i|->$등)가 되었을 경우는, 정수는 무시해 기입합니다.
단지 이것 밖에 없기 때문에, 「이것 중복 잡는 얀」같은 것이 다수 있습니다만, 신경쓰지 않고 해 갑시다.
초급편
너는 할 수 있었니?
이것을 암산할 수 없으면 양자 프로그래밍할 수 없는가 하면, 전혀 그런 일은 없습니다만. 역시 할 수있는 것이 편리합니다.
매일 연습하고 양자 회로 암산왕을 목표로합시다.
중급편, 상급편?
초급편을 만들어 보니 회로가 장소를 잡고 엄격하다는 것을 알았습니다.
또, 지금 이상으로 복잡한 해라면, 어떻게 대답을 기술하는가 하는 문제도 나옵니다.
잘 만들면 앞으로도 나갈 것입니다.
답을 원해
다음을 복사하면 Blueqat에서 답변을 구할 수 있습니다.
import numpy as np
from blueqat import Circuit
# 初級編
tate = [
Circuit().i[0],
Circuit().h[0],
Circuit().x[0],
Circuit().y[0],
Circuit().z[0],
Circuit().s[0],
Circuit().h[0].x[0],
Circuit().h[0].y[0],
Circuit().h[0].z[0],
Circuit().h[0].s[0],
Circuit().x[0].s[0],
]
yoko = [
Circuit().i[0],
Circuit().s[0],
Circuit().z[0],
Circuit().y[0],
Circuit().h[0],
Circuit().x[0],
Circuit().h[0].s[0],
Circuit().h[0].z[0],
Circuit().h[0].y[0],
Circuit().h[0].x[0],
Circuit().x[0].s[0],
]
states = [
(np.array([1, 0], dtype=complex), '|0>'),
(np.array([0, 1], dtype=complex), '|1>'),
(np.array([1, 1], dtype=complex) / np.sqrt(2), '|+>'),
(np.array([1, -1], dtype=complex) / np.sqrt(2), '|->'),
(np.array([1, 1j], dtype=complex) / np.sqrt(2), '|i>'),
(np.array([1, -1j], dtype=complex) / np.sqrt(2), '|-i>'),
]
def get_answer(c1, c2):
state = (c1.copy() + c2).run(ignore_global=True)
for ref, ans in states:
if np.allclose(ref, state):
return ans
raise ValueError(f'Unexpected states. {state}')
for c1 in tate:
for c2 in yoko:
print('{:4}'.format(get_answer(c1, c2)), end=' ')
print('')
Reference
이 문제에 관하여(100매스 양자회로 계산해보자~초급편~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gyu-don/items/3e4e9ef799c5bb377960
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
\begin{eqnarray}
|0> &=& \begin{pmatrix} 1 \\ 0 \end{pmatrix}\\
|1> &=& \begin{pmatrix} 0 \\ 1 \end{pmatrix}\\
|+> &=& \frac{1}{\sqrt 2}\begin{pmatrix} 1 \\ 1 \end{pmatrix}\\
|-> &=& \frac{1}{\sqrt 2}\begin{pmatrix} 1 \\ -1 \end{pmatrix}\\
|i> &=& \frac{1}{\sqrt 2}\begin{pmatrix} 1 \\ i \end{pmatrix}\\
|-i> &=& \frac{1}{\sqrt 2}\begin{pmatrix} 1 \\ -i \end{pmatrix}\\
\end{eqnarray}
너는 할 수 있었니?
이것을 암산할 수 없으면 양자 프로그래밍할 수 없는가 하면, 전혀 그런 일은 없습니다만. 역시 할 수있는 것이 편리합니다.
매일 연습하고 양자 회로 암산왕을 목표로합시다.
중급편, 상급편?
초급편을 만들어 보니 회로가 장소를 잡고 엄격하다는 것을 알았습니다.
또, 지금 이상으로 복잡한 해라면, 어떻게 대답을 기술하는가 하는 문제도 나옵니다.
잘 만들면 앞으로도 나갈 것입니다.
답을 원해
다음을 복사하면 Blueqat에서 답변을 구할 수 있습니다.
import numpy as np
from blueqat import Circuit
# 初級編
tate = [
Circuit().i[0],
Circuit().h[0],
Circuit().x[0],
Circuit().y[0],
Circuit().z[0],
Circuit().s[0],
Circuit().h[0].x[0],
Circuit().h[0].y[0],
Circuit().h[0].z[0],
Circuit().h[0].s[0],
Circuit().x[0].s[0],
]
yoko = [
Circuit().i[0],
Circuit().s[0],
Circuit().z[0],
Circuit().y[0],
Circuit().h[0],
Circuit().x[0],
Circuit().h[0].s[0],
Circuit().h[0].z[0],
Circuit().h[0].y[0],
Circuit().h[0].x[0],
Circuit().x[0].s[0],
]
states = [
(np.array([1, 0], dtype=complex), '|0>'),
(np.array([0, 1], dtype=complex), '|1>'),
(np.array([1, 1], dtype=complex) / np.sqrt(2), '|+>'),
(np.array([1, -1], dtype=complex) / np.sqrt(2), '|->'),
(np.array([1, 1j], dtype=complex) / np.sqrt(2), '|i>'),
(np.array([1, -1j], dtype=complex) / np.sqrt(2), '|-i>'),
]
def get_answer(c1, c2):
state = (c1.copy() + c2).run(ignore_global=True)
for ref, ans in states:
if np.allclose(ref, state):
return ans
raise ValueError(f'Unexpected states. {state}')
for c1 in tate:
for c2 in yoko:
print('{:4}'.format(get_answer(c1, c2)), end=' ')
print('')
Reference
이 문제에 관하여(100매스 양자회로 계산해보자~초급편~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gyu-don/items/3e4e9ef799c5bb377960
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
초급편을 만들어 보니 회로가 장소를 잡고 엄격하다는 것을 알았습니다.
또, 지금 이상으로 복잡한 해라면, 어떻게 대답을 기술하는가 하는 문제도 나옵니다.
잘 만들면 앞으로도 나갈 것입니다.
답을 원해
다음을 복사하면 Blueqat에서 답변을 구할 수 있습니다.
import numpy as np
from blueqat import Circuit
# 初級編
tate = [
Circuit().i[0],
Circuit().h[0],
Circuit().x[0],
Circuit().y[0],
Circuit().z[0],
Circuit().s[0],
Circuit().h[0].x[0],
Circuit().h[0].y[0],
Circuit().h[0].z[0],
Circuit().h[0].s[0],
Circuit().x[0].s[0],
]
yoko = [
Circuit().i[0],
Circuit().s[0],
Circuit().z[0],
Circuit().y[0],
Circuit().h[0],
Circuit().x[0],
Circuit().h[0].s[0],
Circuit().h[0].z[0],
Circuit().h[0].y[0],
Circuit().h[0].x[0],
Circuit().x[0].s[0],
]
states = [
(np.array([1, 0], dtype=complex), '|0>'),
(np.array([0, 1], dtype=complex), '|1>'),
(np.array([1, 1], dtype=complex) / np.sqrt(2), '|+>'),
(np.array([1, -1], dtype=complex) / np.sqrt(2), '|->'),
(np.array([1, 1j], dtype=complex) / np.sqrt(2), '|i>'),
(np.array([1, -1j], dtype=complex) / np.sqrt(2), '|-i>'),
]
def get_answer(c1, c2):
state = (c1.copy() + c2).run(ignore_global=True)
for ref, ans in states:
if np.allclose(ref, state):
return ans
raise ValueError(f'Unexpected states. {state}')
for c1 in tate:
for c2 in yoko:
print('{:4}'.format(get_answer(c1, c2)), end=' ')
print('')
Reference
이 문제에 관하여(100매스 양자회로 계산해보자~초급편~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gyu-don/items/3e4e9ef799c5bb377960
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import numpy as np
from blueqat import Circuit
# 初級編
tate = [
Circuit().i[0],
Circuit().h[0],
Circuit().x[0],
Circuit().y[0],
Circuit().z[0],
Circuit().s[0],
Circuit().h[0].x[0],
Circuit().h[0].y[0],
Circuit().h[0].z[0],
Circuit().h[0].s[0],
Circuit().x[0].s[0],
]
yoko = [
Circuit().i[0],
Circuit().s[0],
Circuit().z[0],
Circuit().y[0],
Circuit().h[0],
Circuit().x[0],
Circuit().h[0].s[0],
Circuit().h[0].z[0],
Circuit().h[0].y[0],
Circuit().h[0].x[0],
Circuit().x[0].s[0],
]
states = [
(np.array([1, 0], dtype=complex), '|0>'),
(np.array([0, 1], dtype=complex), '|1>'),
(np.array([1, 1], dtype=complex) / np.sqrt(2), '|+>'),
(np.array([1, -1], dtype=complex) / np.sqrt(2), '|->'),
(np.array([1, 1j], dtype=complex) / np.sqrt(2), '|i>'),
(np.array([1, -1j], dtype=complex) / np.sqrt(2), '|-i>'),
]
def get_answer(c1, c2):
state = (c1.copy() + c2).run(ignore_global=True)
for ref, ans in states:
if np.allclose(ref, state):
return ans
raise ValueError(f'Unexpected states. {state}')
for c1 in tate:
for c2 in yoko:
print('{:4}'.format(get_answer(c1, c2)), end=' ')
print('')
Reference
이 문제에 관하여(100매스 양자회로 계산해보자~초급편~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gyu-don/items/3e4e9ef799c5bb377960텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)