どうも、4月に入ってから「聞いてきた!」シリーズを書いていないみたいなので、
一気にまとめ書き
基礎から応用やトレンドまで学ぶ量子コンピューティングセミナー#2
https://liberal-arts-for-tech.connpass.com/event/123267/
の内容メモメモ、
で、表題の件を言うと、
1.まずどうやって量子を計算していくかの回路図をHとかXとかYとか使って書く
2.それをプログラミングに落とす。
そのプログラミングの内容は、したのメモに出てくる
1.量子ビットを用意して、初期化する
2.計算を記述する(ユニタリ行れるで)
3.計算する(ユニタリ行列を量子ビットに作用させるという)
4.測定する→確率的に答えが求まる
3.そのプログラムをシミュレーターで動かす。または量子コンピューターで動かす。
https://github.com/kyamaz/openql-notes/tree/master/docs/20190409
に今日の資料は入ってるよ!
・自己紹介
OpenQLやってる。
・今日のゴール
量子計算の手順を身に着ける
量子アルゴリズム
Groverのアルゴリズム
量子テレポーテーション
Shorのアルゴリズムは努力目標
・量子コンピューター
量子的なものを扱う(定義は決まっていない)
量子状態がつくれればいい→ハードウェアはいろいろ
・2方式
アニーリング方式、ゲート方式
アニーリング:組み合わせ最適化しかできない
ゲート:理論上、なんでもできる
・手元でプログラム書いて、実行できる
→シミュレーションもできる
・量子コンピューター:アセンブリを強いられる
・SymPy(しむぱい):量子コンピューター関係ない
MathmaticaのPyThon版
数学的な式変形に適している
→量子コンピューターの計算機能も入ってる
・ケット、ユニタリ、ゲート回路図をくみ上げていく
量子計算は、複素行列の演算として扱えます。
1.量子ビットを用意して、初期化する
2.計算を記述する(ユニタリ行れるで)
3.計算する(ユニタリ行列を量子ビットに作用させるという)
4.測定する→確率的に答えが求まる
量子ビット:縦ベクトルになる 確率を表している
Hとかは行列に落とせる
qappl:ようす
H(0)とかH(1)は、どのキュービットにいるかを示す
X=Not
CNot コントロールが1のとき反転する
toffoli(とほり)ゲート
SymPyは順番が逆(数学的には正しい)
メジャーオール:すべての測定(確率)を求めてしまう
ワンショット:1個づつ出てくる
representsで行列展開する(それまでは代数)
・意味のある計算:Grover
1つの状態をみつけだす
アルゴリズム
一様な重ね合わせをつくる(Hを全部に書ける)
あたりになった状態を、マイナスにする
拡散変換をする(平均値まわりの反転)
サブルーチン
かさねあわせ→あだまーる
マーキング→CCZ
やった内容のまとめ
https://qiita.com/openql/items/e5b98bcd13fb4f0b6d59