フレドキン・CSWAPゲートフレドキン・CSWAPゲート
定義
以下のようなベクトル値ブール関数をフレドキンゲートFredkin gateと呼ぶ。
F:{0,1}3→{0,1}3
F(a,b,c)=(a,(¬a∧b)∨(a∧c),(¬a∧c)∨(a∧b))
- CSWAP ゲートControlled SWAP(CSWAP) gateとも呼ばれる。
説明
エドワード・フレドキンEdward Fredkinによって紹介された。フレドキンゲートは、最初の入力を変えずに、最初の入力が1の場合には、残りの二つの値を交換swapして出力する。その具体的な計算は次のようである。
F(0,0,0)F(0,0,1)F(0,1,0)F(0,1,1)F(1,0,0)F(1,0,1)F(1,1,0)F(1,1,1)=(0,(¬0∧0)∨(0∧0),(¬0∧0)∨(0∧0))=(0,0∨0,0∨0)=(0,0,0)=(0,(¬0∧0)∨(0∧1),(¬0∧1)∨(0∧0))=(0,0∨0,1∨0)=(0,0,1)=(0,(¬0∧1)∨(0∧0),(¬0∧0)∨(0∧1))=(0,1∨0,0∨0)=(0,1,0)=(0,(¬0∧1)∨(0∧1),(¬0∧1)∨(0∧1))=(0,1∨0,1∨0)=(0,1,1)=(1,(¬1∧0)∨(1∧0),(¬1∧0)∨(1∧0))=(1,0∨0,0∨0)=(1,0,0)=(1,(¬1∧0)∨(1∧1),(¬1∧1)∨(1∧0))=(1,0∨1,0∨0)=(1,1,0)=(1,(¬1∧1)∨(1∧0),(¬1∧0)∨(1∧1))=(1,0∨0,0∨1)=(1,0,1)=(1,(¬1∧1)∨(1∧1),(¬1∧1)∨(1∧1))=(1,0∨1,0∨1)=(1,1,1)
上の表を見れば、Fが可逆関数であることと、Fを二回合成すると恒等関数になることが容易にわかる。
Id=F∘F
また、{F}が機能的に完全であるため、Fは汎用ゲートである。
ブール関数 | シンボル |
F |  |
真理値表 |
入力 | 出力 | a | b | c | a | (¬a∧b)∨(a∧c) | (¬a∧c)∨(a∧b) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
|
整理
(射影と注入を制約なく使えると仮定すると)フレドキンゲートFは汎用ゲートである。つまり、{F}は機能的に完全である。
証明
定理
NOTゲートとANDゲートの集合{¬,∧}は機能的に完全である。
上の定理に従って、射影、注入、Fを適切に使用してNOT、ANDを表現できることを示せば、証明は終了する。
NOTゲート
¬=p0∘p1∘F∘2∘1
が成り立つ。まず2∘1(a)=(a,0,1)であるため、次を得る。
F∘2∘1(a)=F(a,0,1)=(a,a,¬a)
ここで、最初の二つの値を消去するためにp0∘p1を取ると、
p0∘p1∘F∘2∘1(a)=p0∘p1(a,a,¬a)=¬a
※ さらに(1)にp2を適用すると、複製関数を得る。
ANDゲート
∧=p0∘p1∘F∘2
が成り立つ。まずF∘2(a,b)は次のようである。
F∘2(a,b)=F(a,b,0)=(a,(¬a∧b)∨(a∧0),(¬a∧0)∨(a∧b))=(a,(¬a∧b)∨0,0∨(a∧b))=(a,¬a∧b,a∧b)
したがって、p0∘p1を取ると、
p0∘p1∘F∘2(a,b)=p0∘p1(a,¬a∧b,a∧b)=a∧b
■
関連項目