倭算数理研究所

科学・数学・学習関連の記事を、「倭マン日記」とは別に書いていくのだ!

Go

「2つのボールをぶつけると円周率がわかる」のを他の言語でシミュレーションしてみた

ここ1年くらいまとものコードを書いてなかったので、ちょっとリハビリに「「2つのボールをぶつけると円周率がわかる」らしいのでシミュレーションしてみた」で書いていた Groovy コードを他の言語で書き直してみました。 Java Scala Go Rust そのまま移植す…

Go で 2-Qubit System (Multi-Qubit System)

Go で量子コンピューティングシリーズ(目次)。 今までは1つの qubit だけを扱っていましたが、量子コンピューティングの特筆すべき性質は複数の qubit が量子もつれを起こしている系から得られます。 今回は2つの qubit からなる 2-qubit 系を表す qubits2…

Go で量子鍵配送 (Quantum Key Distribution) もう少し B92 プロトコル

Go で量子コンピューティングシリーズ(目次)。 今回は前回見た B92 プロトコルに対して BB84 プロトコルでやったような分析をしていきます。 理論的な値は「『Quantum Computing: A Gentle Introduction』の演習問題を解く 2.11」で計算しています。【この…

Go で量子鍵配送 (Quantum Key Distribution) B92 プロトコル

Go で量子コンピューティングシリーズ(目次)。 今回は B92 プロトコル。B92 プロトコルは BB84 プロトコルに比べて直感的に分かりにくい処理(エンコード・デコード*1)をしますが、古典チャネルでの通信が BB84 プロトコルに比べて半分で済みます。 その…

Go で量子鍵配送 BB84 プロトコルでイヴがランダムに基底を選ぶ場合

Go で量子コンピューティングシリーズ(目次)。 今回は BB84 プロトコルで、アリスとボブがエンコード・デコードに使う基底をイヴが知らずに、ランダムな基底を使って盗聴を行う場合を見ていきます。 アリスとボブのコードは今までと同じです。各種の理論値…

Go で量子鍵配送 (Quantum Key Distribution) もう少し BB84 プロトコル

Go で量子コンピューティングシリーズ(目次)。 今回は前回見た BB84 プロトコルの特徴をもう少し詳しく見ていきます。【この記事の内容】 長さ n の鍵を生成するために必要な qubit 数 盗聴に気づく確率 イヴが正しい鍵のビット値を得る割合 盗聴に気づい…

Go で量子コンピューティング ~目次~

Go で量子コンピューティングシリーズの目次。 Qubit 量子鍵配送 (QKD: Quantum Key Distribution) 枠組み BB84 基本・分析・イヴがランダムな基底で測定する場合 B92 基本・分析 2-Qubit 系(n-Qubit 系) Quantum Computing: A Gentle Introduction (Scien…

Go で量子鍵配送 (Quantum Key Distribution) BB84 プロトコル

Go で量子コンピューティングシリーズ(目次)。 今回は量子鍵配送 (Quantum Key Distribution) の BB84 プロトコルの実装をしていきます。【この記事の内容】 量子鍵配送 BB84 プロトコル Go での実装 bb84.Alice の EstablishKey メソッド bb84.Bob の Est…

Go で量子鍵配送 (Quantum Key Distribution)

Go で量子コンピューティングシリーズ(目次)。 次回から何回かで量子鍵配送 (qkd: quantum key distribution) を3種類ほど実装していく予定ですが、今回はそれらに共通する型などを見ていきます。 実装は直接的には量子鍵配送に関係なのでスルーします。【…

Go で Qubit

Go で量子コンピューティングシリーズ(目次)。 Google Go で量子計算・量子コンピュータの簡単なシミュレータを書いていきます(『Quantum Computing: A Gentle Introduction』の練習問題を解くサポートで)。 今回は準備として 1 qubit 系に関連する型を…