量子情報とその仕組みを説明するにあたり、まず古典情報の概要から始めましょう。
量子情報のコースでなぜ古典情報にこれほどの注意が払われるのか疑問に思う方もいるかもしれませんが、それには十分な理由があります。
量子情報と古典情報は、いくつかの点で驚くほど異なりますが、その数学的な記述は実際のところかなり似ています。
また、古典情報は量子情報を学ぶ際に馴染みのある参照点となり、驚くほど広い範囲で通用する類比の源でもあります。
量子情報について問われる疑問には自然な古典的類比を持つものが多く、そのような疑問にはしばしば、量子情報に関する元の疑問への明解さと洞察を与える単純な答えがあります。
実際、古典情報を理解せずして量子情報を真に理解することはできない、と主張しても決して不合理ではありません。
このセクションで扱う内容をすでに知っている読者もいれば、そうでない読者もいるでしょうが、この解説はどちらの読者にも向けたものです。
量子情報入門に最も関連する古典情報の側面を強調するとともに、このセクションでは量子情報と計算においてベクトルや行列を記述するためによく用いられるディラック記法を紹介します。
ディラック記法は量子情報に固有のものではなく、古典情報の文脈でも、またベクトルや行列が現れる他のさまざまな場面でも同様に使用できます。
古典状態と確率ベクトル
情報を保持するシステムがあるとします。
より具体的には、このシステムは各瞬間において有限個の古典状態のいずれか一つにあるものとします。
ここで古典状態という用語は、明確に認識・記述できる構成として直感的に理解してください。
繰り返し登場する典型的な例はビットです。ビットは古典状態が 0 と 1 であるシステムです。
他の例としては、古典状態が 1, 2, 3, 4, 5, 6(上面に描かれた点の数で表される)の標準的な六面ダイス、古典状態が A、C、G、T のDNA鎖の核酸塩基、そして古典状態が(一般的に)強、中、弱、切 の扇風機のスイッチなどがあります。
数学的には、システムの古典状態の仕様がまさに出発点となります。古典状態が 0 と 1 であるシステムをビットと定義し、異なる古典状態集合を持つシステムについても同様に定義します。
この議論のために、考えているシステムに X という名前を付け、X の古典状態の集合を Σ という記号で表すことにします。
Σ が有限であるという仮定(すでに述べたもの)に加え、Σ が空でないことも自然に仮定します。物理システムが状態を全く持たないというのは意味をなさないからです。
無限に多くの古典状態を持つ物理システムを考えることも理にかなっていますが、それは確かに興味深いながらもこのコースには関係のない可能性であるため、ここでは無視します。
これらの理由から、また簡便さと簡潔さのために、以降では古典状態集合という用語を有限かつ空でない任意の集合を意味するものとして使用します。
以下にいくつかの例を示します:
- X がビットであれば、Σ={0,1}. この集合を言葉では二値アルファベットと呼びます。
- X が六面ダイスであれば、Σ={1,2,3,4,5,6}.
- X が扇風機のスイッチであれば、
Σ={high,medium,low,off}.
X を情報の担い手として考える場合、X の異なる古典状態にはそれぞれ意味が割り当てられ、それが異なる結果や帰結につながることがあります。
そのような場合、X がとり得る古典状態のいずれかにあると単純に記述するだけで十分なこともあります。
たとえば X が扇風機のスイッチであれば、それが強に設定されていることを確実に知っていて、それを中に切り替えるという場合などです。
しかし情報処理においては、知識が不確かな場合も多くあります。
システム X の古典状態に関する知識を表現する一つの方法は、異なる古典状態それぞれに確率を対応付けることであり、これを確率的状態と呼ぶことにします。
たとえば、X がビットであるとします。
X に対する過去の出来事に関する知識や予測に基づいて、X が確率 3/4 で古典状態 0 にあり、確率 1/4 で状態 1 にあると考えることができます。
この信念は次のように書き表せます:
Pr(X=0)=43andPr(X=1)=41.
この確率的状態をより簡潔に表現する方法として、列ベクトルが使えます。
(4341)
ビットが 0 である確率をベクトルの上に、1 である確率を下に配置するのは、集合 {0,1} を順序付ける慣例的な方法に従っているためです。
一般に、任意の古典状態集合を持つシステムの確率的状態も、同様に確率のベクトルとして表すことができます。
確率の並べ方は任意ですが、自然またはデフォルトの順序が存在することが多いです。正確に言えば、任意の確率的状態は次の二つの性質を満たす列ベクトルで表現できます:
- ベクトルのすべての成分が非負の実数である。
- 成分の和が 1 に等しい。
逆に、この二つの性質を満たす任意の列ベクトルは確率的状態の表現として解釈できます。
以降、この形式のベクトルを確率ベクトルと呼びます。
この表記法の簡潔さに加え、確率的状態を列ベクトルとして同一視することには、確率的状態への操作が行列とベクトルの積として表現できるという利点があります。これについては後ほど説明します。
確率的状態の測定
次に、確率的状態にあるシステムを測定するとどうなるかを考えてみましょう。この文脈では、測定とは単にシステムを見て、どの古典状態にあるかを曖昧さなく認識することを意味します。直感的に言えば、システムの確率的状態を「見る」ことはできません。実際に見たとき、私たちはとり得る古典状態のいずれかひとつを目にするだけです。
測定によってシステムに対する知識が変化することもあり、それに伴いシステムに関連付ける確率的状態も変化することがあります。
つまり、X が古典状態 a∈Σ にあることを認識した場合、X の状態に関する知識を表す新たな確率ベクトルは、a に対応する成分が 1 で他のすべての成分が 0 のベクトルになります。
このベクトルは X が古典状態 a に確実にあることを示しており、ちょうど今それを認識したわけです。このベクトルを ∣a⟩ と表記し、「ケット a」と読みます(その理由は後ほど説明します)。
この種のベクトルは標準基底ベクトルとも呼ばれます。
たとえば、考えているシステムがビットである場合、標準基底ベクトルは次のように与えられます:
∣0⟩=(10)and∣1⟩=(01).
任意の二次元列ベクトルは、これら二つのベクトルの線形結合として表せることに注目してください。
たとえば、
(4341)=43∣0⟩+41∣1⟩.
この事実は任意の古典状態集合に自然に一般化されます。任意の列ベクトルは標準基底状態の線形結合として書くことができます。
ベクトルをこのような形式で表現することはよく行われます。
測定による確率的状態の変化について、日常的な経験との関連を見てみましょう。
公平なコインを投げ、見る前にそのコインを覆ったとします。
そのとき、コインの確率的状態は
(2121)=21∣heads⟩+21∣tails⟩.
と表されます。ここでコインの古典状態集合は {heads,tails} です。表を最初、裏を次の順に並べることにします。
∣heads⟩=(10)and∣tails⟩=(01)
コインの覆いを外して見ると、表か裏かのどちらかの古典状態が確認できます。
仮に結果が裏であれば、コインの確率的状態の記述を自然に ∣tails⟩ に更新します。
もちろん、その後コインを再び覆い、もう一度覆いを外して見たとしても、古典状態は依然として裏のはずです。これは確率的状態がベクトル ∣tails⟩ で記述されることと一致しています。
これは自明に見えるかもしれませんが、ある意味ではそのとおりです。
しかし、量子システムもまったく同様の振る舞いをする一方で、その測定の性質はしばしば奇妙または異常なものと考えられます。
古典システムの類似した性質を確立しておくことで、量子情報の仕組みはそれほど奇妙に感じられなくなるかもしれません。
確率的状態の測定に関する最後の注意点として、確率的状態は必ずしも実際の事実ではなく知識や信念を記述するものであり、測定はシステム自体ではなくあくまで私たちの知識を変えるだけです。
たとえば、コインを投げた後、見る前のコインの状態は表か裏のいずれかです。ただし、見るまでどちらかはわかりません。
裏であることを確認したとき、私たちは知識を記述するベクトルを自然に ∣tails⟩ に更新しますが、コインが見えなかった別の人にとっては、確率的状態は変わらないままです。
これは問題ではありません。異なる人が特定のシステムについて異なる知識や信念を持ち、そのため異なる確率ベクトルでシステムを記述することがあっても当然です。
古典的操作
この古典情報の簡潔な概要の最後の部分では、古典システムに対して行える操作の種類を考えます。
決定論的操作
まず、決定論的操作があります。これは各古典状態 a∈Σ を f:Σ→Σ の形のある関数 f によって f(a) に変換するものです。
たとえば Σ={0,1} の場合、この形の関数は f1, f2, f3, f4 の四つがあり、値の表で次のように表せます:
a01f1(a)00a01f2(a)01a01f3(a)10a01f4(a)11
最初と最後の関数は定数関数です。各 a∈Σ に対して f1(a)=0、f4(a)=1 が成り立ちます。
中の二つは定数ではなく、平衡関数です。とり得るすべての入力に対して、二つの出力値がそれぞれ同じ回数(この場合は一回ずつ)現れます。
関数 f2 は恒等関数で、各 a∈Σ に対して f2(a)=a です。
f3 は f3(0)=1 かつ f3(1)=0 の関数で、NOT関数としてよく知られています。
決定論的操作が確率的状態に与える作用は、行列とベクトルの積で表すことができます。
具体的には、関数 f:Σ→Σ を表す行列 M は、
M∣a⟩=∣f(a)⟩
をすべての a∈Σ に対して満たすものです。
このような行列は必ず存在し、この要件によって一意に決まります。
決定論的操作を表す行列は、各列にちょうど一つの 1 があり、他のすべての成分は 0 です。
たとえば、上記の関数 f1,…,f4 に対応する行列 M1,…,M4 は次のとおりです:
M1=(1010),M2=(1001),M3=(0110),M4=(0101).
最初の行列が正しいことを確認する簡単な検証を示します。
残りの三つも同様に確認できます。
M1∣0⟩M1∣1⟩=(1010)(10)=(10)=∣0⟩=∣f1(0)⟩=(1010)(01)=(10)=∣0⟩=∣f1(1)⟩
これらやその他の形式の行列を便利に表現するために、先ほどの列ベクトルの記法と類似した行ベクトルの記法を使います。各 a∈Σ について、a に対応する成分が 1 で他のすべての成分が 0 の行ベクトルを ⟨a∣ と表記します。
このベクトルは「ブラ a」と読みます。
たとえば Σ={0,1} の場合、
⟨0∣=(10)and⟨1∣=(01).
任意の古典状態集合 Σ について、行ベクトルと列ベクトルを行列として見なし、行列の積 ∣b⟩⟨a∣ を計算することができます。
得られる正方行列は、(b,a) という対に対応する成分(行が古典状態 b に、列が古典状態 a に対応)が 1 で、他のすべての成分が 0 です。たとえば、
∣0⟩⟨1∣=(10)(01)=(0010).
この記法を用いると、任意の関数 f:Σ→Σ に対応する行列 M を次のように表せます:
M=a∈Σ∑∣f(a)⟩⟨a∣.
たとえば、Σ={0,1} の上記の関数 f4 を考えると、行列は
M4=∣f4(0)⟩⟨0∣+∣f4(1)⟩⟨1∣=∣1⟩⟨0∣+∣1⟩⟨1∣=(0100)+(0001)=(0101).
これが成り立つ理由は以下のとおりです。
ベクトルを行列として考え、今度は積 ⟨a∣∣b⟩ を計算すると、1×1 行列が得られます。これはスカラー(数)として扱えます。
整合性のために、この積を ⟨a∣∣b⟩ ではなく ⟨a∣b⟩ と書きます。
この積は次の簡単な公式を満たします:
⟨a∣b⟩={10a=ba=b.
この観察と、行列の積が結合的かつ線形であるという事実を合わせると、
M∣b⟩=(a∈Σ∑∣f(a)⟩⟨a∣)∣b⟩=a∈Σ∑∣f(a)⟩⟨a∣b⟩=∣f(b)⟩,
がすべての b∈Σ に対して成り立ちます。これはまさに行列 M に求められる性質です。
後のレッスンでより詳しく説明しますが、⟨a∣b⟩ はベクトル ∣a⟩ と ∣b⟩ の内積とも見なすことができます。
内積は量子情報において非常に重要ですが、必要になるまでその議論は後回しにします。
この時点で「ブラ」と「ケット」という名前の由来が明らかになったかもしれません。「ブラ」⟨a∣ と「ケット」∣b⟩ を合わせると「ブラケット」⟨a∣b⟩ になります。
この記法と用語はポール・ディラックによるものであり、そのためディラック記法として知られています。
確率的操作と確率行列
決定論的操作に加えて、確率的操作があります。
たとえば、ビットに対する次のような操作を考えます。
ビットの古典状態が 0 であれば変更せず、1 であれば反転させて、確率 1/2 で 0 に、確率 1/2 で 1 になります。
この操作は次の行列で表されます:
(102121).
この行列が正しく動作することは、二つの標準基底ベクトルをこの行列に掛けることで確認できます。
任意の古典状態集合を対象とする場合、すべての確率的操作の集合を数学的に記述すると、それは確率行列(ストキャスティック行列)で表されるものであり、次の二つの性質を満たします:
- すべての成分が非負の実数である。
- 各列の成分の和が 1 である。
言い換えれば、確率行列とはすべての列が確率ベクトルをなす行列です。
確率的操作は、上記の例のように操作中に何らかの形でランダム性が利用または導入されるものとして直感的に理解できます。
確率行列による確率的操作の記述において、各列はその列に対応する古典状態が入力されたときに生成される確率的状態のベクトル表現と見なせます。
確率行列とは、確率ベクトルを常に確率ベクトルに写す行列として考えることもできます。
つまり、確率行列は常に確率ベクトルを確率ベクトルに写し、確率ベクトルを常に確率ベクトルに写す任意の行列は必ず確率行列でなければなりません。
最後に、確率的操作を考える別の見方として、決定論的操作をランダムに選ぶことと見なす方法があります。
たとえば、上記の操作は恒等関数と定数0関数のどちらかをそれぞれ確率 1/2 で適用することとして考えることができます。
これは次の等式と整合しています:
(102121)=21(1001)+21(1010).
このような表現は、任意の古典状態集合の選択と、その古典状態集合で行と列が識別される任意の確率行列に対して常に可能です。
確率的操作の合成
X を古典状態集合 Σ を持つシステムとし、M1,…,Mn をシステム X に対する確率的操作を表す確率行列とします。
確率ベクトル u で表される確率的状態に最初の操作 M1 を適用すると、得られる確率的状態はベクトル M1u で表されます。
次に、この新しい確率ベクトルに二番目の確率的操作 M2 を適用すると、確率ベクトル
M2(M1u)=(M2M1)u.
が得られます。
この等式は、行列の積(行列とベクトルの積をその特殊ケースとして含む)が結合的であることから成り立ちます。
したがって、最初に M1 を適用し次に M2 を適用するという一番目と二番目の確率的操作を合成することで得られる確率的操作は、行列 M2M1 で表され、これは必然的に確率行列です。
より一般に、行列 M1,…,Mn で表される確率的操作をこの順序で合成する場合、つまり M1 を最初に適用し、M2 を二番目に適用し、…、Mn を最後に適用する場合、それは
Mn⋯M1.
という行列の積で表されます。
ここで順序が重要である点に注意してください。行列の積は結合的ですが、可換ではありません。
たとえば、
M1=(1010)andM2=(0110),
であるとき、
M2M1=(0101)andM1M2=(1010).
つまり、確率的操作を合成する順序は重要です。合成における操作の適用順序を変えると、結果として得られる操作が変わることがあります。