可構函數

来自testwiki
imported>InternetArchiveBot2021年10月8日 (五) 14:21的版本 (Add 1 book for verifiability (20211007)) #IABot (v2.0.8.1) (GreenC bot
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到导航 跳转到搜索

複雜度理論裡,函數f:時間可構(英語:time constructible),意即存在運行時間規模在f(n)內的圖靈機,當輸入n時,圖靈機輸出f(n)。定義此類函數是為了排除一些無法成為圖靈機運行時間上界的函數。[1]

時間可構函數

有兩種不同的方式去定義時間可構函數。第一種定義裡,函數f時間可構,當且僅當存在正整數n0和圖靈機M,使得對所有nn0,在輸入字串1nn個1)後,該圖靈機恰好f(n)步後停機。第二種定義裡,函數f時間可構,當且僅當存在圖靈機M,在輸入字串1nn個1)後,它會在O(f(n))時間內輸出f(n)的二進制(亦可以用輸出一進制,兩種表示的定義等價,因為可以用O(f(n))時間轉換兩種表示)。[1]

另外,還有整體時間可構函數:函數f時間全可構當且僅當存在圖靈機M,對所有自然數n,輸入字串1n後,恰好在f(n)步後停機。這個定義比前兩個定義更狹窄,但在多數應用裡,使用哪種定義都無傷大雅Template:Citation needed

空間可構函數

類似地,函數f空間可構,當且僅當存在正整數n0和圖靈機M,使得對所有nn0,在輸入字串1n後,該圖靈機恰好在使用了f(n)個格子後停機。等價地,函數f空間可構,當且僅當存在圖靈機M,在輸入字串1nn個1)後,它會在O(f(n))空間內輸出f(n)的二進制(或一進制)。[1]

另外,函數f空間全可構當且僅當存在圖靈機M,對所有自然數n,在輸入字串1n後,恰好在使用了f(n)個格子後停機Template:Citation needed

例子

所有滿足f(n)cn(其中c>0是常數)的常見函數(例如n,nk,2n)都是時間和空間可構的。除了最終是常數的函數,o(n)裡的函數都不時間可構,因為圖靈機甚至没有時間完整讀入n。不過Template:Tmath是空間可構的。

應用

複雜度理論的結論,例如時間階層定理使用了時間可構函數去刻劃複雜度層級。這是因為時間層級能成立的基石是能在O(f(n))時間內判斷其他算法是否已經用了超過f(n)步的圖靈機。假若f(n)不能在這麼多步以內計算,該圖靈機當然不可能存在。類似的複雜度定理一般對所有自然的函數f都成立,但不一定對人為構造的f成立。時間可構函數的嚴謹定義成功準確刻劃了這些滿足時間階層定理的函數。

空間可構函數在空間階層定理裡亦有類似的應用。

Template:PlanetMath attribution

參考文獻

Template:Reflist