量子闸
在量子計算和特別是量子線路的計算模型裡面,一個量子閘(或量子邏輯閘)是一個基本的,操作一個小數量量子位元的量子線路。它是量子線路的基礎,就像傳統邏輯閘跟一般數位線路之間的關係。
與多數傳統邏輯閘不同,量子邏輯閘是可逆的。然而,傳統的計算可以只使用可逆的閘表示。舉例來說,可逆的Toffoli閘可以實做所有的布尔函数。這個閘有一個直接等同的量子閘,也因此代表量子線路可以模擬所有傳統線路的操作。
量子邏輯閘使用么正矩陣表示。就像常見的邏輯閘一般是針對一個或兩個位元進行操作,常見的量子閘也是針對一個或兩個量子位元進行操作。這也代表這一些量子閘可以以2 × 2或者4 × 4的么正矩陣表示。
常使用的閘
量子閘常使用矩陣表示,操作K個量子位元的閘可以用2k × 2k的么正矩陣表示。一個閘輸入跟輸出的量子位元數量必須要相等。量子閘的操作可以用代表量子閘的矩陣與代表量子位元狀態的向量作相乘來表示。
在下文中,单个量子位元的矢量表示为:

而两个量子位元的矢量表示为:

其中
是代表第一个量子位元处于
态,第二个量子位元处于
态所构成的(两个量子位元的)量子态的基矢。
阿達馬閘()
阿達馬閘是只對一個一個量子位元進行操作的閘。這個閘將基本狀態
變成
,並且將
變成
。這個閘可以以阿達馬矩陣表示:

Graphical representation of Hadamard gate

因為矩陣的每一列正交,
,其中I表示单位矩阵,因此H是一個么正矩陣。
泡利-X閘()
泡利-X閘操作一個量子位元。這個閘相當於經典的邏輯反閘。它將
換成
並且
換成
。這個閘可以以一個泡利X矩陣表示:

泡利-Y閘()
泡利-Y閘操作單一個量子位元。這個閘可以以一個泡利Y矩陣表示:

泡利-Z閘()
泡利-Z閘操作單一個量子位元。這個閘保留基本狀態
不變並且將
換成
。這個閘可以以一個泡利Z矩陣表示:

相位偏移閘()
這是一系列操作單一量子位元的閘,它保留基本狀態
並且將
換成
。

這裡的
代表相位位移。一些常見的例子像是
閘的
,相位閘的的
則等於
而泡利-Z閘的
。
互換閘()
互換閘操作兩個量子位元,可以用以下這個矩陣表示:

受控閘()

Circuit representation of controlled NOT gate
受控閘操作兩個以上的量子位元,其中一個或多個量子位元視為某一些操作的控制位元。舉例來說,受控反閘()操作兩個量子位元,第二個量子位元只有在第一個量子位元為
的時候進行NOT操作,否則就保持不變。這個閘可以以以下的矩陣表示:

更普遍地說,如果U是一個操作單一量子位元的閘,以以下這個矩陣表示:

則受控-U閘就是操作兩個量子位元的量子閘,以第一個量子位元作為控制。操作基本狀態如下:

Graphical representation of controlled-U gate




受控-U閘可以以矩陣代表如下:

Toffoli閘()

Circuit representation of Toffoli gate
Toffoli閘是一個操作三個量子位元的,對傳統運算是完備的閘。量子的Toffoli閘是類同的閘,以三個量子位元定義。如果前兩個量子位元是
,則對第三個量子位元進行泡利-X運算,反之則不做操作。這是一個受控閘的範例。既然這個閘是一個傳統邏輯閘的量子類比,因此它可以用一個真值表來完整表示如下:
INPUT |
OUTPUT |
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 | 0 | 1 |
1 | 1 | 0 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 0 |
也可以將這個閘以像是
to
的操作形容。
阿達馬閘()
阿達馬閘是只對一個一個量子位元進行操作的閘。這個閘將基本狀態
變成
,並且將
變成
。這個閘可以以阿達馬矩陣表示:

Graphical representation of Hadamard gate

因為矩陣的每一列正交,
,其中I表示单位矩阵,因此H是一個么正矩陣。
泡利-X閘()
泡利-X閘操作一個量子位元。這個閘相當於經典的邏輯反閘。它將
換成
並且
換成
。這個閘可以以一個泡利X矩陣表示:

泡利-Y閘()
泡利-Y閘操作單一個量子位元。這個閘可以以一個泡利Y矩陣表示:

泡利-Z閘()
泡利-Z閘操作單一個量子位元。這個閘保留基本狀態
不變並且將
換成
。這個閘可以以一個泡利Z矩陣表示:

相位偏移閘()
這是一系列操作單一量子位元的閘,它保留基本狀態
並且將
換成
。

這裡的
代表相位位移。一些常見的例子像是
閘的
,相位閘的的
則等於
而泡利-Z閘的
。
互換閘()
互換閘操作兩個量子位元,可以用以下這個矩陣表示:

受控閘()

Circuit representation of controlled NOT gate
受控閘操作兩個以上的量子位元,其中一個或多個量子位元視為某一些操作的控制位元。舉例來說,受控反閘()操作兩個量子位元,第二個量子位元只有在第一個量子位元為
的時候進行NOT操作,否則就保持不變。這個閘可以以以下的矩陣表示:

更普遍地說,如果U是一個操作單一量子位元的閘,以以下這個矩陣表示:

則受控-U閘就是操作兩個量子位元的量子閘,以第一個量子位元作為控制。操作基本狀態如下:

Graphical representation of controlled-U gate




受控-U閘可以以矩陣代表如下:

Toffoli閘()

Circuit representation of Toffoli gate
Toffoli閘是一個操作三個量子位元的,對傳統運算是完備的閘。量子的Toffoli閘是類同的閘,以三個量子位元定義。如果前兩個量子位元是
,則對第三個量子位元進行泡利-X運算,反之則不做操作。這是一個受控閘的範例。既然這個閘是一個傳統邏輯閘的量子類比,因此它可以用一個真值表來完整表示如下:
INPUT |
OUTPUT |
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 | 0 | 1 |
1 | 1 | 0 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 0 |
也可以將這個閘以像是
to
的操作形容。
萬能量子閘
較不正式地說,一個萬能量子閘的集合,是一個任何量子線路均可以用這一些閘實做出來的集合。也就是說,任何其他的單位操作均可以從這個集合組合出一個有限長度的序列來表示。技術上來說,因為可能的量子閘數目是不可數的,而從有限大的集合取出的有限長度的序列則是可數的,所以不可能達成。為了解決這個問題,我們只要求這一個有限大小的集合可以組合出近似任何量子運算的序列。Solovay–Kitaev theorem保證這一件事情可以有效達成。
一個簡單的,操作兩個量子位元的閘,的萬能量子閘集合是一個阿達馬閘(
),一個相位偏移閘
,和一個受控反閘.
只有單一個量子閘的萬能量子閘集合可以用一個操作三個量子位元的Deutsch閘
建構出來,Deutsch閘它的操作如下:

在傳統邏輯線路裡面的萬用算子Toffoli閘可以被簡化成一個Deutsch閘,
,因此代表著所有傳統邏輯線路的操作均可以由量子電腦模擬。
歷史
現有量子閘的記號是Barenco et al.以費曼所提出的記號为基础發明的。
参考文献
引用
书籍
- M. Nielsen and I. Chuang,Quantum Computation and Quantum Information,Cambridge University Press,2000
引用
书籍
- M. Nielsen and I. Chuang,Quantum Computation and Quantum Information,Cambridge University Press,2000
參見