閘與電路
托佛利閘(Toffoli / CCNOT)
你可以把托佛利閘想像成一個帶安全聯鎖的電燈開關。它盯著兩根控制線,作用在第三根線(目標線)上。規則很簡單:只有當兩個控制位都是 1 時,才翻轉目標位;只要有一個控制位是 0,就讓一切保持原樣。因為它一次牽涉三個位元,所以你有時會聽到它被叫作受控-受控-非閘,也就是 CCNOT。
它特別之處在於可逆:再執行一遍,你就回到了出發點,因為它從不丟棄任何資訊。普通的古典邏輯可不是這樣。比如一個 AND 閘,把兩個輸入壓縮成一個輸出,而你無法從答案反推出原來的輸入。托佛利閘透過保留足夠多的線路繞開了這種資訊損失,它能夠模擬 AND、NAND 以及其他古典運算,同時保持可逆。這正是量子電腦所需要的,因為每一個量子閘都必須是可逆的(么正的)。
所以托佛利閘是古典算術與量子電路之間的橋梁。當一個量子演算法需要做加法、比較大小,或在抵達由量子干涉真正發揮作用的那一步之前先算出某個普通函數時,托佛利閘就負責這些幕後記帳工作。它們也頻繁出現在容錯設計中——在那裡,可靠的邏輯必須由更簡單的、經過糾錯的部件層層搭建起來。
(a, b, c) -> (a, b, c XOR (a AND b))
兩個控制位 a 和 b 原樣通過;只有當 a 和 b 都為 1 時,目標位 c 才被翻轉(XOR 1)。
托佛利閘本身並不帶來任何加速;它只是可逆的古典邏輯,讓量子電路能把普通計算當作一塊積木來執行。單憑它自己,並不足以構成一台通用量子電腦(你還需要像 H 這樣能製造疊加態的閘)。
又稱
另見