在計算複雜性理論中,算術電路是計算多項式的標準模型。算術電路能夠從變數或數字中獲取輸入,並通過加法或乘法來計算先前計算出的表達式的結果。這種模型使得我們能夠形而上地了解計算多項式的複雜性。
電路的基本問題是“怎樣以最有效的方式計算給定的多項式?”
一個算術電路由導向無環圖所構成,圖中的每個入度為零的節點被稱為輸入閘,並標記為變數或者域中的元素。其他的閘則是加法閘或乘法閘。算術公式是一種電路,每個閘的出度均為一,形成一棵有向樹。電路有兩個重要的複雜性度量:大小和深度。電路的大小是指閘的數量,而深度則是指在電路中最長的有向路徑的長度。
算術電路在計算多項式方面有其自然的方法。輸入閘計算其標記的多項式;加法閘計算其子節點所計算出多項式的和,而乘法閘則計算其子節點所計算出的多項式的乘積。以圖為例,輸入閘依序計算 x1、x2 和 1,加法閘計算 x1 + x2 和 x2 + 1,乘法閘計算 (x1 + x2) x2 (x2 + 1) 的值。
當我們面對一個多項式 f 時,問題在於如何以最好的方式來計算它——例如,計算單位電路的最小大小。這個問題通常由兩個部分組成。第一部分是找到一個計算該多項式的電路,稱之為上界複雜度;第二部分是證明其他電路不能達到更好的性能,稱之為下界複雜度。
儘管這兩個任務密切相關,但證明下界通常更具難度,因為需要對所有電路進行同時的討論。
在此,值得注意的是,我們關心的是多項式的正式計算,而非多項式所定義的函數。例如,考慮二元域的多項式 x2 + x,該多項式在此域上代表零函數,但它並不是零多項式。這是算術電路研究與布林電路研究之間的差異之一,也是一個原因使得布林複雜性更難於算術複雜性。
在計算多項式複雜度的研究中,發現了一些聰明的電路或算法。例如,著名的 Strassen 矩陣乘法算法,使用的電路大小約為 n2.807,相較於簡單的 n3,大大降低了複雜度。另一個引人入勝的故事是有關 n × n 矩陣的行列式計算,雖然原始的計算方法需要的電路大小為 n!,但我們知道可以用多項式大小的電路來計算行列式,雖然該電路的深度是線性與 n。
與此同時,關於 n × n 矩陣的常數電路 (permanent),為了計算其大小也存在類似的挑戰,最佳電路的大小約為 2n。
在證明下界的方面,我們目前的知識非常有限。例如,計算很大度數的多項式通常需要大的電路;例如,度數為 2^2n 的多項式需要的電路大小約為 2n。主要的問題便在於對於小度數的多項式證明下界,尤其是多項式大小的 n。
當前的主要開放問題是,找到一個明確的多項式,使其被計算所需的電路大小超過多項式級別。
在計算複雜性理論中,最有趣的開放問題是 P 與 NP 問題。約略來說,這個問題在於確定一個問題的解是否能夠和證明解的存在一樣容易。Valiant 提出了 VP 與 VNP 問題的代數類比,這涉及到多項式大小與電路大小的關係。
對於我們了解多項式計算的一個重要基準是 Valiant、Skyum、Berkowitz 和 Rackoff 的研究。他們表明,如果一個度數為 r 的多項式擁有大小為 s 的電路,則該多項式也擁有大小為多項式 r 與 s 的電路。
這一結果在布林設定下的類似結果被認為是錯誤的。此結果的推論之一是,對有關多項式的電路的模擬,這是相對較小的公式;在這種情況下,一個度數為 r 的多項式擁有大小 s 的電路則需要的公式的大小為 s^(O(log(r)))。
算術電路的設計、大小及深度等,都是計算多項式的關鍵要素,研究這些要素不僅是數學理論上的挑戰,還與實際應用緊密相連。在這些複雜的計算中,是否能夠找到更高效的方法來解決更大型的問題,將是未來研究的方向之一?