LoginSignup
0
0

4バイト文字を使った量子コンピュータアーキテクチャ

Posted at

class 量子ビット:
def init(self):
self.状態 = np.array([1, 0], dtype=complex)

def 𝐗(self):
    self.状態 = np.dot(np.array([[0, 1], [1, 0]]), self.状態)

def 𝐘(self):
    self.状態 = np.dot(np.array([[0, -1j], [1j, 0]]), self.状態)

def 𝐙(self):
    self.状態 = np.dot(np.array([[1, 0], [0, -1]]), self.状態)

def 𝐇(self):
    self.状態 = np.dot(np.array([[1, 1], [1, -1]], dtype=complex) / np.sqrt(2), self.状態)

def 測定(self):
    確率 = np.abs(self.状態) ** 2
    結果 = np.random.choice([0, 1], p=確率)
    self.状態 = np.array([int(結果 == 0), int(結果 == 1)], dtype=complex)
    return 結果

class 量子回路:
def init(self, 量子ビット数):
self.量子ビット列 = [量子ビット() for _ in range(量子ビット数)]

def 𝐗(self, ターゲット):
    self.量子ビット列[ターゲット].𝐗()

def 𝐘(self, ターゲット):
    self.量子ビット列[ターゲット].𝐘()

def 𝐙(self, ターゲット):
    self.量子ビット列[ターゲット].𝐙()

def 𝐇(self, ターゲット):
    self.量子ビット列[ターゲット].𝐇()

def 𝐂𝐍𝐎𝐓(self, コントロール, ターゲット):
    if self.量子ビット列[コントロール].測定() == 1:
        self.量子ビット列[ターゲット].𝐗()

def 測定(self):
    結果 = [量子ビット.測定() for 量子ビット in self.量子ビット列]
    return 結果


graph TD
A[量子ビット] --> B(量子回路)
B --> C{量子ゲート}
C --> D[単一量子ビットゲート]
D --> E[X]
D --> F[Y]
D --> G[Z]
D --> H[H]
D --> I[RX]
D --> J[RY]
D --> K[RZ]
C --> L[複数量子ビットゲート]
L --> M[CNOT]
L --> N[SWAP]
L --> O[CZ]
B --> P[量子状態]
P --> Q[ベクトル表現]
P --> R[密度行列表現]
B --> S[測定]
B --> T[回路操作]
T --> U[複製]
T --> V[結合]
T --> W[逆操作]
T --> X[深さ計算]
B --> Y[可視化]

こんな感じでUTF-8が4バイト可変長という特徴を活かして、
pythonのライブラリにしてみたいのですがどうでしょう?
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0