遞歸函數(八):偏序結構
回顧
上一篇我們介紹了不動點運算元和Y組合子,以及Y組合子的具體表現形式,
這一篇我們根據不動點運算元的性質來證明fact
函數就是g
函數的不動點。隨後,我們回歸到了數學中,討論集合上的一種偏序結構,這為下文完全偏序集,以及完全偏序集上連續函數的不動點定理做好準備。
不動點運算元的性質
上文我們介紹了不動點運算元fix
,
fix :: (a -> a) -> afix f = let x = f x in x
並且我們說以下函數的不動點為fact = fix g
,
g :: (Int -> Int) -> Int -> Intg f n = case n of 1 -> 1 _ -> n * f (n-1)
但是上文中,我們只是對它們的計算結果進行比對,
並沒有對它進行證明。考慮到fix
的性質,fix g = g (fix g)
,
fix g
是g
的不動點,令h = fix g
,上式為h = g h
我們可以使用數學歸納法,證明對於任意的自然數 ,fact n = fix g n
。我們先證初始條件,
fix g 1 = g (fix g) 1 = case 1 of 1 -> 1 _ -> ...= 1= fact 1
然後再證遞推條件,假設fact k = fix g k
,
我們要推出fact (k+1) = fix g (k+1)
,其中, 。
fix g (k+1)= g (fix g) (k+1)= case (k+1) of 1 -> 1 _ -> (k+1) * (fix g) k= (k+1) * (fix g) k= (k+1) * fact k= fact (k+1)
因此,對於任意的自然數 ,fact n = fix g n
。
fact = fix g
。
不動點運算元的有限展開
根據上一節fact = fix g
的證明,我們看到,
fix
的性質fix g = g (fix g)
,但是對於一個具有有限存儲空間的機器來說,遞推的步驟不可能是無限的。為了界定最多使用多少次遞推,我們定義, ,
並且認為 對於任意的 無定義, ,而 在 時沒有定義,, ,而 在 時沒有定義。
因此, 是一個部分函數,且,
所表示的函數,總是比 的計算能力更強一些,離fact
更近一些。當 時, 就是階乘函數fact
。即, 的最小上界,就是g
的不動點。
g
才能保證這個集合具有最小上界呢?序理論指出,完全偏序集上的序保持自映射具有最小不動點。為此,我們需要先認識什麼是偏序集,什麼是連續函數。
使用完全偏序集上的連續函數解釋程序中函數的方式,稱為域論模型。偏序集與哈斯圖
在第三篇中,我們討論過偏序關係,
一個偏序集 是一個集合 ,並且在這個集合上定義了一個偏序關係 。設 為實數集的一個非空子集,我們定義 上的偏序關係為 ,
當且僅當 是小或等於 的實數,則 是一個偏序集。偏序集反映了集合上的一種偏序結構,它比我們想像中的更為常見,
例如,一個集合 ,對於任意兩個元素 ,我們定義 當且僅當 ,那麼 是一個偏序集。因此,如果某個集合構成了一個偏序集,這完全取決於我們怎樣定義偏序關係。
設 是一個偏序集,
對於任意的 ,如果總是有 或者 成立,則稱 和 是可比的。
,且 ,則記為 。
如果 和 是可比的,且 ,如果不存在 ,使得 ,則稱 覆蓋 。根據可比性和覆蓋性,我們就可以將偏序關係用無向圖表示出來了,
其中,頂點表示元素,邊表示覆蓋關係,並且省去圖中每個頂點處的環, 覆蓋 就將代表 的頂點放在代表 的頂點之上,並在 和 之間連線,如果 ,但是 不覆蓋 ,就省掉 與 之間的連線。這樣用來表示有限偏序集的無向圖,稱為哈斯圖。
例如,易證整除關係是整數集上的一種偏序關係,
我們可以畫出偏序集 對應的哈斯圖,如下,
全序集與擬序集
設 是一個偏序集,如果對於任意 , 和 都可比,
則稱 為 上的全序關係,此時稱 為全序集。可見,實數集以及實數集上的小於等於關係 ,構成了一個全序集。
哈斯圖為從下至上的「一條線」,是全序集的充要條件。設 是非空集合 上的,反自反的和傳遞的二元關係,
則稱 為 上的擬序關係,常將擬序關係記為 ,並稱 為擬序集。擬序關係自然具有反對稱性。(其中,反自反關係,指的是不存在 ,使得 。
擬序關係與偏序關係的哈斯圖在畫法上完全相同,
只是擬序關係的哈斯圖的各頂點都沒有環。設 是一個擬序集,如果對於任意的 ,
, , 三式有且僅有一式成立,則稱 具有三歧性,這樣的擬序關係 ,稱為擬全序關係,這樣的擬序集 ,稱為擬全序集。擬全序集的哈斯圖也是「一條線」。最小元與上確界
對於偏序集 ,以及它的一個子集 ,
如果存在 ,且對於任意的 ,有 ,則稱 為 的最小元。(相似的我們可以定義最大元
如果存在 ,對於任意的 ,
如果 那麼就有 ,則稱 為 的極小元。(相似的我們可以定義極大元如果 是有窮集,則 的極小元一定存在,並且可能有多個,
但是最小元卻不一定存在。上文中,我們畫出了偏序集 對應的哈斯圖,
我們取 , , ,
則 是 的最小元,也是極小元, 是 的極大元,但 沒有最大元。是 的極小元,但 沒有最小元, 是 的最大元,也是極大元。
是 的最小元,也是極小元, 是 的極大元,但是 沒有最大元。對於偏序集 ,以及它的一個子集 ,
如果存在 ,(注意,不一定是 使得對於任意的 , ,則稱 為 的上界,如果 的所有上界存在最小元,則稱它為 最小上界,或上確界。(相似的可以定義下確界的上界和下界不一定存在,即使存在,上確界和下確界也不一定存在。
設 是一個擬全序集,如果對於 中的任何非空子集 都有最小元,
則稱 是一個良序關係, 是一個良序集。例如,自然數集以及自然數集上的小於關係,構成了一個良序集 ,
但是,整數集以及整數集上的小於關係,並不構成良序集,而僅僅是一個擬全序集。總結
本文從一個證明出發,我們了解了不動點運算元的工作原理,
然後引出了一些數學概念,序關係在不動點運算元理論中佔有很重要的地位,所以,這裡給出了詳細的介紹,下文我們開始討論最小不動點定理。參考
序理論
域論模型 偏序關係 離散數學教程下一篇:遞歸函數(九):最小不動點定理
推薦閱讀: