量子コンピュータ
Q#
量子プログラミング

量子コンピューティング入門以前

Poauneです

  • 結婚しました
  • こどもうまれました
  • Microsoft MVP です(久々にココ重要)

量子コンピュータとは

  • 量子の性質を利用したコンピューター!!
  • 量子って…?

量子とは

  • 量子とは、ものすごく小さな物質の「素」

じゃないよ!!!!!


量子と素粒子とその他もろももろと

  • 量子:
    • 物理量の最小単位で、連続量ではなく離散量
    • 「素粒子」に由来するもの
    • 波でもあり、粒子でもある、という性質も持つ

量子と素粒子とその他もろももろと

  • 素粒子:
    • すべての物質の基本要素であり、ものすごくすごく小さな粒 image.png

量子コンピュータとは

  • 量子の性質を利用したコンピューター!!
  • 実は二種類ある
    • 量子アニーリング式
    • 量子ゲート式
    • ImPACT(日本のアレ)
      • これは量子コンピュータのを精度良く再現する専用マシンと言ったところ
      • 巷でいうほどひどくないと思うぞ

量子アニーリング式

  • いわゆる D-Waveがこれ
  • アニーリング = やきなまし
    • 焼入れをして、不安定な状態にした後に放っておくと、最適化される!
    • というのを量子でやるんじゃよ
    • 要は、数値計算的に解くシミュレーション最適化を一瞬で解ける
    • 一瞬で答えがわかるモンテカルロ法と思っても、そこまでずれていないと思う image.png

量子ゲート方式

  • Microsoft / IBM がこれ
  • 通常のコンピュータ: AND / OR / NOT の「論理ゲート」
  • 量子コンピュータ: アダマールゲート(H)、回転ゲート(π/8)、制御NOTゲート(CNOT)
  • 一応、今まで通常のコンピュータでやっていたことを、より高速にできるとされており、量子アニーリングよりだいぶ汎用的
  • ただし実用的なマシンは未だに存在しない

量子ビットの表現方式

  • ブロッホ球
  • 虚数を含む長さ1のベクトルになっており、半径1の球面として表現
  • image.png

量子ゲート

  • 回転ゲート(π/8)
    • X回転 / Y回転 / Z回転
  • アダマールゲート(H)
    • 重ね合わせ状態にする
  • 制御NOTゲート(CNOT)
    • 制御ビットを受け取り、反転処理を行う

なるほど、わからん!


実際に、プログラミングしてみましょう


Let's Use Q#!


Q# とは

  • MS謹製の量子プログラミング言語
  • なんとVisual Studio / Visual Studio Code で実行可能
  • シミュレーター付き
  • というかシミュレーターしかない

Q# こんな感じ


namespace Quantum.Bell
{
    open Microsoft.Quantum.Primitive;
    open Microsoft.Quantum.Canon;

    operation MakeBellState(x: Qubit, y: Qubit) : ()
    {
        body
        {
            H(x);
            CNOT(x, y);
        }
    }
}

印象

  • プログラミング言語というかシミュレータ
  • 量子理論はともかく、量子ゲートを理解しないと何もできない
  • サンプルはたくさんある

だれか、勉強会しましょう!