遞歸函數(九):最小不動點定理

遞歸函數(一):開篇
遞歸函數(二):編寫遞歸函數的思路和技巧
遞歸函數(三):歸納原理
遞歸函數(四):全函數與計算的可終止性
遞歸函數(五):遞歸集與遞歸可枚舉集
遞歸函數(六):最多有多少個程序
遞歸函數(七):不動點算子
遞歸函數(八):偏序結構
遞歸函數(九):最小不動點定理

    • -

回顧

上文我們討論了集合上的偏序結構,之所以談論它們是因為,
完全偏序集上的連續函數具有最小不動點,這稱之為最小不動點定理,
除了集合論的一些知識之外,我們還要討論到底什么是連續函數,以及什么是完全偏序集。

有向子集與完全偏序

偏序集\((D,leqslant )\)的非空子集\(Ssubseteq D\)叫做有向子集(directed subset),
當且僅當,對于\(S\)中的任意元素\(a,bin S\),
存在\(S\)中的一個元素\(c\),有\(aleqslant c\)且\(bleqslant c\)。

如果一個偏序集\((D,leqslant )\)的每個有向子集\(Ssubseteq D\)都有上確界(記為\(bigvee S\))
就稱它是一個有向完全偏序集,
此外,如果它還有最小元,就稱它是一個完全偏序集。

注意,完全偏序集并不是每一個子集都有上確界,
而是它的每一個有向子集都有上確界。

連續函數

假設\((D,leqslant )\)與\((E,leqslant )\)是完全偏序集,
\(f:Drightarrow E\)是集合上定義的一個函數,
如果,\(Ssubseteq D\),則\(f(S)\)為\(E\)的子集,
其中\(f(S)=lbrace f(d)| din S rbrace\)。

對于任意的\(d,d'in D\),如果\(dleqslant d'\)就有\(f(d)leqslant f(d')\),
我們就說\(f\)是單調的。
可以看出,如果\(f\)是單調的,且\(S\)是\(D\)的有向子集,那么\(f(S)\)也是\(E\)的有向子集。

如果\(f\)是單調的,且對于任意有向子集\(Ssubseteq D\),
有\(f(bigvee S)=bigvee f(S)\),就稱\(f\)是連續的。

連續函數集上的偏序結構

完全偏序集\((D,leqslant )\)和\((E,leqslant )\)上的連續也可以定義偏序結構,
我們稱\(fleqslant g\),當且僅當對于每一個\(din D\),我們有\(f(d)leqslant g(d)\)。
這樣我們就得到了一個元素為連續函數的偏序集,\((Drightarrow E,leqslant )\)。
可以證明,\((Drightarrow E,leqslant )\)也是一個完全偏序集。(證略

最小不動點定理

如果\((D,leqslant )\)是一個完全偏序集,且\(f:Drightarrow D\)是連續的,
則\(f\)有最小不動點,\(fix_D f=bigvee lbrace f^n(perp )| ngeqslant 0 rbrace \)。

因為\(perp \)是\(D\)中的最小元,且\(f(perp )in D\),所以,\(perp leqslant f(perp )\),
因為\(f\)是連續的,所以\(f\)也一定是單調的,所以,\(f(perp )leqslant f^2(perp )\),
繼而,\(f^n(perp )leqslant f^{n+1}(perp )\),對于任意的\(ngeqslant 0\)都成立。

\(lbrace f^n(perp )| ngeqslant 0 rbrace\)構成了一個全序集,
所以,它是完全偏序集\((Drightarrow E,leqslant)\)的一個有向子集,必有上確界。

設\(a\)是上確界,\(a=bigvee lbrace f^n(perp )| ngeqslant 0 rbrace \),
首先\(a\)是\(f\)的不動點,因為,由\(f\)的連續性,
\(f(a)=f(bigvee lbrace f^n(perp )| ngeqslant 0 rbrace )\)
\(f(a)=bigvee lbrace f^{(n+1)}(perp )| ngeqslant 0 rbrace \),
但是由于\(lbrace f^n(perp ) rbrace\)與\(lbrace f^{(n+1)}(perp ) rbrace\),有同樣的上確界,
所以,\(f(a)=a\)。

其次,\(a\)是\(f\)的最小不動點,
假設\(b=f(b)\)是\(f\)的任意不動點,因為\(perp leqslant b\),所以\(f(perp )leqslant f(b)\),
類似的,對于任意的\(ngeqslant 0\),\(f^n(perp )leqslant f^n(b)\)。
但是,由于\(b\)是\(f\)的不動點,所以\(f^n(b)=b\),
因此\(b\)是集合\(lbrace f^n(perp )| ngeqslant 0 rbrace\)的上界。
由于集合的最小上界是\(a\),所以有\(aleqslant b\)。

后繼函數的不動點

succ :: Int -> Int
succ n = n+1

在第七篇中,我們說fix可以得到任意函數的不動點,
那么這個succ函數呢?它有沒有不動點?
fix succ是什么?

現在我們有了最小不動點定理,
就得驗證succ所指稱的數學函數,是不是一個完全偏序集上的連續函數,
如果是的話,它就有不動點。

在第四篇為了表示計算的不可終止性,我們對自然數集進行了擴充,\(Ncup lbrace perp rbrace\),
然后用這個集合作為程序中Int類型的值的解釋。

然而,\(Ncup lbrace perp rbrace\)不是一個完全偏序集,原因是它沒有上界,
如果我們額外加入一個比其他的自然都大的元素\(+infty \),
則我們就得到了一個完全偏序集,\(Ncup lbrace perp rbracecup lbrace +infty rbrace\)。

然后,我們看succ連續嗎?
首先,它是單調的,如果我們再定義\(succ(+infty )=+infty \),
就有\(succ(bigvee N)=bigvee succ(N)\),
因此,succ是一個連續函數。

根據最小不動點定理,succ的最小不動點是,\(fix succ=bigvee lbrace succ^n(perp )| ngeqslant 0 rbrace \)。

由于\(succ(perp )=perp \),即對于非終止的輸入succ的計算也不會終止,
所以\(succ^n(perp )=perp \),
因此,\(fix succ=bigvee lbrace succ^n(perp )| ngeqslant 0 rbrace =perp \),
即,succ的最小不動點是\(perp \),fix succ的計算不會終止。

求解階乘函數

上一篇中,我們證明了階乘函數fact是以下函數的不動點,fact = fix g

g :: (Int -> Int) -> Int -> Int
g f n = case n of1 -> 1_ -> n * f (n-1)

現在我們來看一下,如何運用最小不動點定理來得到這個答案。
為了避免篇幅過長,關于g函數的連續性證明暫略,
我們直接使用公式,
\(fix g=bigvee lbrace g^n(perp )| ngeqslant 0 rbrace \),
即,g函數的最小不動點,就是集合\(D=lbrace g^n(perp )| ngeqslant 0 rbrace\)的上確界。

我們先來看一下這個集合\(D\)中有哪些元素,
其中,\(g(perp )in D\),我們將\(perp \)傳入\(g\)中,看看會得到什么,

f1 = \n -> case n of1 -> 1_ -> ...

這個函數能計算f1 1,但是不能計算f1 2,恰好是fact函數有限展開的一階項。

我們再來看\(g^2(perp )in D\),它等于\(g(f1)\),

f2 = \n -> case n of1 -> 1_ -> n * f1 (n-1)

這個函數能計算f2 1以及f2 2,但是不能計算f2 3,恰好是fact函數展開的二階項。

由此,我們看出了規律,
\(g^n(perp )in D\)就是fact函數有限展開的第\(n\)階項。
上一篇中,我們已經證明了,當\(nrightarrow infty\)時,它就是fact函數,
考慮到\(f1,f2,cdots\)這些函數的序關系,
因此,我們有\(fact=bigvee lbrace g^n(perp )| ngeqslant 0 rbrace \)。

即,fact函數就是g函數的最小不動點。

總結

到此為止,我想這個系列的文章已經討論完了,
本系列文章一直圍繞著遞歸函數和不動點進行分析,
在內容上可以分為兩個部分,前半部分主要與可計算性理論有關,
后半部分與不動點定理有關,希望對大家有所幫助。

參考

有向集合
完全偏序
Kleene fixed-point theorem
Foundations for Programming Languages

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259322.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259322.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259322.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

html中單選框顏色怎么改,如何更改單選按鈕的顏色?

侃侃無極一種快速的解決方法是使用來覆蓋單選按鈕的輸入樣式:after,但是創建自己的自定義工具箱可能是更好的做法。 input[typeradio]:after { width: 15px; height: 15px; border-radius: 15px; top: -2px; left: -1px; …

PhotoShop

前景色填充:Altdelete 背景色填充:Ctrldelete 切換前景/背景色:X 鍵 接按d 是默認的黑色和白色轉載于:https://www.cnblogs.com/xingfuzzhd/p/3358156.html

python 循環技巧

原文地址:http://docs.pythontab.com/python/python3.4/datastructures.html#tut-tuples 在字典中循環時,關鍵字和對應的值可以使用 iteritems() 方法同時解讀出來。 knights {gallahad: the pure, robin: the brave}for k,v in knights.items():print(…

C++內存管理詳解

C內存管理詳解 轉載:http://blog.csdn.net/yingxunren/article/details/4344933 偉大的Bill Gates 曾經失言:   640K ought to be enough for everybody — Bill Gates 1981   程序員們經常編寫內存管理程序,往往提心吊膽。如果不想觸…

如何先執行input (checkbox,radio)再執行函數

2019獨角獸企業重金招聘Python工程師標準>>> 遇到一個問題,當input type"checkbox"點擊時,沒有立即執行勾選或去勾,而是先執行函數,如下代碼 $(".sidebar_cart .cart_list ul").on("click&qu…

計算機基礎及msoffice應用好考嗎,全國計算機等級考試考試一級WPS Office和MS Office有什么不同?那個好考?...

以后的計算機office中的word等時2010版本,計算機一級有兩個選擇:1、一級WPS Office1. 采用無紙化考試,上機操作。考試時間為90 分鐘。2. 軟件環境:Windows 7 操作系統,WPS Office 2012 辦公軟件。3. 在指定時間內,完成下列各項操作:(1) 選擇題…

Linux服務器上監控網絡帶寬的18個常用命令

本文介紹了一些可以用來監控網絡使用情況的Linux命令行工具。這些工具可以監控通過網絡接口傳輸的數據,并測量目前哪些數據所傳輸的速度。入站流量和出站流量分開來顯示。 作者:布加迪編譯來源:51CTO.com|2014-04-11 10:10移動端收藏分享【51…

strcpy和memcpy的區別

轉載:http://www.cnblogs.com/stoneJin/archive/2011/09/16/2179248.html strcpy與memcpy都是標準的C庫函數,strcpy提供了字符串的復制。即strcpy只用于字符串復制,并且它不僅復制字符串內容之外,還會復制字符串的結束符。 已知…

js正則表達式語法

1. 正則表達式規則 1.1 普通字符 字母、數字、漢字、下劃線、以及后邊章節中沒有特殊定義的標點符號,都是"普通字符"。表達式中的普通字符,在匹配一個字符串的時候,匹配與之同樣的一個字符。 舉例1:表達式 "c&q…

計算機常見屏幕英語語句,計算機常見屏幕英語

計算機系統常見的屏幕英語對照,。、計算機常見屏幕英語(SCREEN ENGLISH)access 訪問 data 數據 hard disk 硬盤 files 文件directory 目錄 delete 刪除(同:remove) exists 存在 name 名稱 read-only 只讀 change 修改,改變 save 保存 password 密碼 conn…

[轉]Windows Phone 7程序設計”完全版電子書可以免費下載了

本文轉自:http://www.cnblogs.com/salam/archive/2010/10/29/1864246.html 現在學習Windows Phone 7開發資料十分有限,除了MSDN的官方開發文檔外和一些博客外,幾無其他的學習渠道。幸運地是美國的資深程序員兼作家Charles Petzold為大家免費放…

土豆春季實習試題之慘烈教訓

今天做土豆的春季C實習生招聘試題,很多不應該錯的錯了,在此挑出一些重要的錯誤,供自己參考,以免以后再犯。 一、一道編程題,很簡單,但是錯了。 題目: 輸入一個數組,求它的逆序數組…

linux-redhat替換yum網絡源為centos網絡源

2019獨角獸企業重金招聘Python工程師標準>>> 1.為什么要替換 redhat系統使用yum命令安裝軟件時會出現This system is not registered with RHN. RHN support will be disabled. 原因是redhat的yum安裝軟件需要注冊,是收費的。而centos的yum源是免費的。這…

計算機如何打開無線網絡適配器,win7系統下網絡適配器打不開怎么解決

通常情況下我們的電腦中都會有一個網絡適配器,這是計算機聯網的設備,不過最近有深度技術win7旗艦版系統用戶卻遇到了網絡適配器打不開的情況,該怎么辦呢,接下來系統城小編就給大家分享一下win7系統下網絡適配器打不開的具體解決方…

cf13C Sequence(DP)

題意: N個數。a1...aN。 對于每個數而言,每一步只能加一或減一。 問最少總共需要多少步使得新序列是非遞減序列。 N (1?≤?N?≤?5000) 思路: *一個還不知道怎么證明的結論(待證):最后的新序列b1...bN中…

【華為OD機試真題2023CD卷 JAVAJS】求幸存數之和

華為OD2023(C&D卷)機試題庫全覆蓋,刷題指南點這里 求幸存數之和 知識點數組 時間限制:1s 空間限制:256MB 限定語言:不限 題目描述: 給一個正整數列 nums,一個跳數 jump,及幸存數量 left。運算過程為:從索引為0的位置開始向后跳,中間跳過 J 個數字,命中索引為J+…

JavaScript編碼規范

1. 變量命名規范 變量名包括全局變量,局部變量,類變量,函數參數等等,他們都屬于這一類。 基本規范 變量命名都以類型前綴有意義的單詞組成,單詞首字母都需要大寫。例如:sUserName,nCount。 前綴…

大數據相加(轉載)

轉載:http://www.du52.com/text.php?id411 在這個大數據的年代里,我們不可避免會遇到兩個超越正常數據類型(如int,long,long long)的整數相加。顯然兩個大數據已經不能使用傳統的加號直接相加,但是相加的原理仍然是不…

微型計算機中使用的光盤應屬于什么媒體,計算機應用基礎練習題

計算機應用基礎一、判斷題1、微型機中硬盤工作時,應特別注意避免強烈震動【是】2、在Windows中,文件夾或文件的換名只有一種方法【否】3、用戶在連接網絡時,只可以使用域名,不可以使用IP地址【否】4、在WORD2007中,您可…

七天學會SALTSTACK自動化運維 (3)

七天學會SALTSTACK自動化運維 (3) 導讀SLSTOP.SLSMINION選擇器SLS文件的編譯總結參考鏈接導讀 SLS SLS (aka SaLt State file) 是 salkstack 中非常基礎和重要的一種配置文件. 重要程度僅次于minion和 master 的主配置文件(或者說是一種數據結構,使用yaml編寫), 因…