logo

フレドキン・CSWAPゲート

フレドキン・CSWAPゲート

定義1

以下のようなベクトル値ブール関数フレドキンゲートFredkin gateと呼ぶ。

F:{0,1}3{0,1}3 F : \left\{ 0, 1 \right\}^{3} \to \left\{ 0, 1 \right\}^{3}

F(a,b,c)=(a,(¬ab)(ac),(¬ac)(ab)) F (a, b, c) = \Big(a, (\lnot a \land b) \lor (a \land c), (\lnot a \land c) \lor (a \land b) \Big)

  • CSWAP\text{CSWAP} ゲートControlled SWAP(CSWAP) gateとも呼ばれる。

説明

エドワード・フレドキンEdward Fredkinによって紹介された。フレドキンゲートは、最初の入力を変えずに、最初の入力が11の場合には、残りの二つの値を交換swapして出力する。その具体的な計算は次のようである。

F(0,0,0)=(0,(¬00)(00),(¬00)(00))=(0,00,00)=(0,0,0)F(0,0,1)=(0,(¬00)(01),(¬01)(00))=(0,00,10)=(0,0,1)F(0,1,0)=(0,(¬01)(00),(¬00)(01))=(0,10,00)=(0,1,0)F(0,1,1)=(0,(¬01)(01),(¬01)(01))=(0,10,10)=(0,1,1)F(1,0,0)=(1,(¬10)(10),(¬10)(10))=(1,00,00)=(1,0,0)F(1,0,1)=(1,(¬10)(11),(¬11)(10))=(1,01,00)=(1,1,0)F(1,1,0)=(1,(¬11)(10),(¬10)(11))=(1,00,01)=(1,0,1)F(1,1,1)=(1,(¬11)(11),(¬11)(11))=(1,01,01)=(1,1,1) \begin{align*} F (0,0,0) &= (0, (\lnot 0 \land 0) \lor (0 \land 0), (\lnot 0 \land 0) \lor (0 \land 0)) = (0, 0 \lor 0, 0 \lor 0) = (0, 0, 0) \\ F (0,0,1) &= (0, (\lnot 0 \land 0) \lor (0 \land 1), (\lnot 0 \land 1) \lor (0 \land 0)) = (0, 0 \lor 0, 1 \lor 0) = (0, 0, 1) \\ F (0,1,0) &= (0, (\lnot 0 \land 1) \lor (0 \land 0), (\lnot 0 \land 0) \lor (0 \land 1)) = (0, 1 \lor 0, 0 \lor 0) = (0, 1, 0) \\ F (0,1,1) &= (0, (\lnot 0 \land 1) \lor (0 \land 1), (\lnot 0 \land 1) \lor (0 \land 1)) = (0, 1 \lor 0, 1 \lor 0) = (0, 1, 1) \\ F (1,0,0) &= (1, (\lnot 1 \land 0) \lor (1 \land 0), (\lnot 1 \land 0) \lor (1 \land 0)) = (1, 0 \lor 0, 0 \lor 0) = (1, 0, 0) \\ F (1,0,1) &= (1, (\lnot 1 \land 0) \lor (1 \land 1), (\lnot 1 \land 1) \lor (1 \land 0)) = (1, 0 \lor 1, 0 \lor 0) = (1, 1, 0) \\ F (1,1,0) &= (1, (\lnot 1 \land 1) \lor (1 \land 0), (\lnot 1 \land 0) \lor (1 \land 1)) = (1, 0 \lor 0, 0 \lor 1) = (1, 0, 1) \\ F (1,1,1) &= (1, (\lnot 1 \land 1) \lor (1 \land 1), (\lnot 1 \land 1) \lor (1 \land 1)) = (1, 0 \lor 1, 0 \lor 1) = (1, 1, 1) \\ \end{align*}

上の表を見れば、FF可逆関数であることと、FFを二回合成すると恒等関数になることが容易にわかる。

Id=FF \operatorname{Id} = F \circ F

また、{F}\left\{ F \right\}機能的に完全であるため、FF汎用ゲートである。

ブール関数シンボル
FF
真理値表
入力出力
aabbccaa(¬ab)(ac) (\lnot a \land b) \lor (a \land c)(¬ac)(ab) (\lnot a \land c) \lor (a \land b)
000000000000
000011000011
001100001100
001111001111
110000110000
110011111100
111100110011
111111111111

整理

(射影と注入を制約なく使えると仮定すると)フレドキンゲートFF汎用ゲートである。つまり、{F}\left\{ F \right\}機能的に完全である。

証明

定理

NOT\text{NOT}ゲートとAND\text{AND}ゲートの集合{¬,}\left\{ \lnot, \land \right\}は機能的に完全である。

上の定理に従って、射影、注入、FFを適切に使用してNOT\text{NOT}AND\text{AND}を表現できることを示せば、証明は終了する。

  • NOT\text{NOT}ゲート

    ¬=p0p1Fȷ2ı1 \lnot = p_{0} \circ p_{1} \circ F \circ \jmath_{2} \circ \imath_{1}

    が成り立つ。まずȷ2ı1(a)=(a,0,1)\jmath_{2} \circ \imath_{1} (a) = (a, 0, 1)であるため、次を得る。

    Fȷ2ı1(a)=F(a,0,1)=(a,a,¬a) \begin{equation} F \circ \jmath_{2} \circ \imath_{1}(a) = F(a, 0, 1) = (a, a, \lnot a) \end{equation}

    ここで、最初の二つの値を消去するためにp0p1p_{0} \circ p_{1}を取ると、

    p0p1Fȷ2ı1(a)=p0p1(a,a,¬a)=¬a p_{0} \circ p_{1} \circ F \circ \jmath_{2} \circ \imath_{1} (a) = p_{0} \circ p_{1} (a, a, \lnot a) = \lnot a

    ※ さらに(1)(1)p2p_{2}を適用すると、複製関数を得る。

  • AND\text{AND}ゲート

    =p0p1Fı2 \land = p_{0} \circ p_{1} \circ F \circ \imath_{2}

    が成り立つ。まずFȷ2(a,b)F \circ \jmath_{2} (a, b)は次のようである。

    Fȷ2(a,b)=F(a,b,0)=(a,(¬ab)(a0),(¬a0)(ab))=(a,(¬ab)0,0(ab))=(a,¬ab,ab) \begin{align*} F \circ \jmath_{2} (a, b) = F(a, b, 0) &= (a, (\lnot a \land b) \lor (a \land 0), (\lnot a \land 0) \lor (a \land b)) \\ &= (a, (\lnot a \land b) \lor 0, 0 \lor (a \land b)) \\ &= (a, \lnot a \land b, a \land b) \end{align*}

    したがって、p0p1p_{0} \circ p_{1}を取ると、

    p0p1Fı2(a,b)=p0p1(a,¬ab,ab)=ab p_{0} \circ p_{1} \circ F \circ \imath_{2} (a, b) = p_{0} \circ p_{1} (a, \lnot a \land b, a \land b) = a \land b

関連項目


  1. 金永勳·許在成, 量子情報理論 (2020), p90-93 ↩︎