見出し画像

量子コンピュータの初学に必要ないもの

どうも、ゴールデンウィーク何もできなかった人です。
無性に何か書きなぐりたいので、今回は量子コンピュータを勉強し始めるときに必要ないと思われる知識をまとめてみようと思います。

注意!
この記事はへなちょこ学生が主観で書いた雑文です。いかなる文も感想です。「僕が持った感想である」ということ以外に一切の事実が含まれていません。断定的な表現を使っていても感想です。

さらなる注意!
書いていて気づいたのですが、「量子コンピュータの勉強」というよりも「量子計算の勉強」についての話になってしまいました。量子計算の基礎から勉強を始めると思うので大目に見てください…

前提知識が多すぎる

量子コンピュータの勉強を始めるときに必要とされる前提知識は多岐にわたります。例えば、ざっくりとした分野の名前で言えば

  • 線形代数

  • 量子力学

  • 計算理論

  • 情報理論

などが挙げられるかなと思います。どれも必要になることは事実ですが、これらすべての分野をしっかりと勉強すると時間がかかります。いずれも広大な分野で、理系大学生が半年(あるいはそれ以上)かけて学ぶような内容です。それをすべてやろうというのは無謀な話です。

ですが、当然すべてやる必要はないと思います。それぞれの分野のエッセンスとなるような内容を知っていれば十分です。少なくともこれまで独学してきて困ったことなありません。

実際に量子コンピュータの入門書を開いてみると、それぞれの分野について簡潔にまとまっていて、その内容を知っていれば十分読み進められるようになっています。そこにはどんな知識が必要かがまとまっています。

必要な知識がまとまっているというのはとてもありがたいことです。わざわざ量子力学の専門書などを開かなくて済みます。ですが、勉強を始めた頃を思い返してみると、「こんな知識が必要になるよ」という話よりも「この辺の知識は必要ないよ」ということを言ってほしかったなと思います。こういう話はあんまり重要じゃないし回りくどいので教科書や講義資料には書かれていないですが、独学するうえでは役に立つと思っています。なのでこの記事では「必要ない知識」についてまとめてみようと思います。

線形代数のいらない話

線形代数いるいらないの図

「線形代数」という言葉が指す範囲は人によってかなり変わると思います。工学の人からすれば行列の計算(とてもテクニカル!)が線形代数の中心だと思いますし、数学の人からすれば僕には想像できないほど広範な世界を指す言葉だと思います。ここでは、教養課程で扱うような内容を指すことにします

とりあえず教養課程で使うような教科書を見ながら、量子コンピュータの入門に必要ない知識をまとめてみると

  • 行列式の計算

  • 逆行列の計算

などが挙げられると思います。(逆にこれ以外は必要になると思います)
たった2つだけ!?という感じですが、いずれも計算が面倒になりがちなので助かると思います。(僕は助かりました)
そもそも行列計算は人間がやることではないかもしれませんが…(退屈なことはPythonにやらせよう!)

行列式の計算はいらない

「いらない」は言い過ぎかもしれませんが、実際に出てくる場面は少ないです。2×2行列の行列式が計算できれば十分だと思います。

行列式を計算しなくて済む理由は、量子コンピュータの世界で出てくる行列の多くがユニタリ行列だからです。ユニタリ行列というのはベクトルのノルム(長さ)を保つような行列なので、行列式が1になります。つまり行列式は求めるまでもないということです。さらに言えば、行列式が1であるような行列をかけていったところで、行列式にはなんの情報も含まれません。なので行列式を使うこと自体が珍しいです。
訂正)行列式の絶対値が1です。値自体はさまざまな値を取り得ます。コメントでご指摘いただきました。ありがとうございます!

ただえさえ行列式を使わないので、余因子展開などもいりません。個人的にはややこしいイメージで嫌いなので、余因子展開が出てこないのは嬉しいポイントです。

逆行列の計算はいらない

「いらない」と言い切っていますが、これも行列式の計算が不要なのと同様の理由です。量子コンピュータで頻繁に登場するユニタリ行列は、共役転置が逆行列になります。つまり、すべての成分について複素共役をとって、転置すれば逆行列になります。(これがユニタリ行列の定義です)なので、よくある吐き出し法を使った逆行列の計算などは必要ないです。

量子力学のいらない話

量子力学いるいらないの図

量子力学については必要ではない話がたくさんあると思います。量子力学も広大な分野で、量子コンピュータで使われる内容は一部です。不要な内容をすべて挙げるときりがないので初学者がハマる可能性がある内容だけ抜粋すると

  • 解析力学から量子力学への話

  • 混合状態についての話

  • 無限次元の話

  • 具体的な計算手法

などが挙げられると思います。量子力学の入門的な本に書かれている大部分の内容は必要ないと思います。

解析力学から量子力学への話

すこしだけ量子力学について聞いたことがある人はハマる可能性があると思います。解析力学はほとんど必要ありません。強いて言うならハミルトニアンという言葉だけ知っているといいかもしれません。それでも言葉だけ知っていれば十分だと思います。

物理学科で量子力学を学ぶ人にとっては、古典力学から量子力学への移り変わりの話が重要かもしれないですが、量子コンピュータについて学ぶ人にとっては全く必要ないです。これだけは断言してもいいような気がします。なぜ解析力学が必要なのかというのは次の話にもつながります。

混合状態についての話

量子コンピュータの根本にある量子計算の理論は純粋状態について議論されるので、混合状態について理解している必要はありません。同様に、

  • 密度行列

  • TPCP写像

  • POVM測定

などは理解していなくても問題ないです。

ただし、エラーや量子誤り訂正について学ぶ際には必須の知識になるのでいつかは学ぶことになると思います。量子情報理論でも基本的な内容なので理解していると、視野が広がります。

無限次元ヒルベルト空間の話

物理学科の人や化学科の人などが学ぶ量子力学ではむしろこの話がメインになると思いますが、量子コンピュータの文脈では不要です。

無限次元ヒルベルト空間といえば、量子力学の教科書でしばしば最初に出てくる位置と運動量の話などがあります。無限次元ヒルベルト空間は有限次元とは異なり、作用素について少しややこしい話が出てきて正確な理解は大変ですが、量子コンピュータでは有限次元だけで十分です。有限次元であれば線形代数出でてくる複素ユークリッド空間を考えれば十分で、行列の計算がわかっていれば困りません。

具体的な計算手法

個人的に量子力学で最もややこしい内容は、様々な計算手法にあると思います。僕は理解していませんがよく見かけるのは

  • シュレディンガー方程式の解き方

  • 摂動論

  • WKB法

  • 経路積分

などがあるとおもいます。(併記すべきじゃない、あるいは計算手法でないというものもあるのかもしれません)
こういった具体的な計算手法は必要ないです。シュレディンガー方程式を解くことはほとんどありません。一方で計算手法として重要なものもあって

  • 固有値分解(スペクトル分解)

  • 特異値分解

  • シュミット分解

などがあります。これらは量子力学特有の計算手法ではなく、行列が出てくる分野では多く使われる手法で、計算手法というよりも行列の分解と呼ばれる手法ですが、頻繁に登場します。

計算理論のいらない話


計算理論いるいらないの図

計算理論についてはいらない分野の話をするよりも、必要な分野の話をしたほうがいいと思いますが、あえていらない分野の話をすると

  • オートマトンと正規言語

  • プッシュダウンオートマトンと文脈自由言語

などのいわゆる計算可能性のクラスは重要ではないです。量子コンピュータの話で重要になるのはチューリングマシンの計算可能性に対応するチューリング完全だけです。

逆に知っておくといいのは、アルゴリズムの記述の仕方や、計算量の評価の仕方などです。量子コンピュータを勉強するモチベーションのひとつとして、量子アルゴリズムの優位性の話題があると思うので、計算量の評価は重要ですし、計算量のクラスについても軽く知っておくといいと思います(具体的には、PとNPについて正確に理解しておくといいと思います。意外と誤解されていることもあるので)

情報理論はいらない

「情報理論はいらない」と言い切ってしまおうと思います。少なくとも量子コンピュータの仕組み(量子計算の基礎)を学びたいということであれば必要ありません。

逆にどういう場面で必要になるかと言うと、量子計算や量子誤り訂正符号について定量的に解析したいとか、量子情報理論についても学びたいというときです。これらも量子コンピュータの理論に含まれていると言われれば、それはそうだと思いますが、少なくとも初学で必要になることはないと思います。

結局は何を知ってればいいの?

ここまで「不要な知識」についてまとめてみました。不要な知識の話ばかりしていても、何も始まらないのは確かなので一応必要な知識に話をしてみたいと思います。

最低限必要な知識は、学部1年レベルの線形代数です。これだけは知らないと大変だと思います。なぜなら線形代数が難しいからです。線形代数がわかってしまえば、量子コンピュータに必要な量子力学の知識はすんなり理解できますし、計算理論は知らなくてもなんとかなります。とにかく線形代数だけは必要です。

線形代数の計算ができれば大丈夫だと思いますが、量子力学まで学んでおきたいという方は

  • 線形代数:線形性・固有値・テンソル <線形代数>応用への最短コース(原啓介 著)

    • テンソルについての話以外を読む

    • なるべく計算をしっかりやる

  • 量子力学10講(谷村省吾 著)

    • 5章(位置と運動量)、9章(運動方程式)、10章(調和振動子)以外をしっかりと読む

    • 演習問題はしっかり解く

という感じでやってみるといいかなと思います。(僕が読んだことある本の中から選んでいます)どちらの本もとてもわかり易くて、初学者でも取り組みやすい本だと思います。どちらも内容は濃いですが、コンパクトで値段も(理工系の本にしては)リーズナブルです。

さいごに

初学者に必要ない知識についてまとめてみました。どんな分野でも「必要な知識」についての話はよく聞きますが、「不要な知識」についての話はあまり聞きません。需要がないのかもしれませんが、僕自身は必要な知識として「線形代数」とか「量子力学」と言われてしまうと専門書を1冊読まないといけないのかな?と思ってしまってたじろいでしまいます。なので「不要な知識」についても言及してほしいと思っています。

とはいえ、「不要な知識」として紹介した内容も、量子コンピュータの理論の何処かしらで応用されている内容です。あくまでも初学者にとって不要なだけで、進んだ内容では必要になることがあります。そんなわけで、「不要」と言い切ってしまうのはなかなか危険な行為だと思いますが、僕は専門家じゃないので適当なことを書きました。勉強法の話なので正解なんてないと思いますし、学術的な議論じゃないのでいいかなと…

誰の役に立つのかわかりませんが、1年前の自分にとってはありがたい情報なので、日本語話者1億2000万人のうち1人くらいには刺さるかなと思います。

この記事が気に入ったらサポートをしてみませんか?