工作積累之遞迴方法的實質和普遍意義

來源:互聯網
上載者:User

 從方法論意義上說,遞迴方法是一種從簡單到複雜、從低級到進階的可連續操作的解決問題的方法。它的每一步驟都是能行可操作的,各步驟之間是連續轉換的。遞迴定義是用簡單的、自明的要素描述、構造、說明複雜的整體。遞迴方法是通過解決簡單的問題來解決複雜的問題。在人們的思維過程中,普遍存在著遞迴機制。遞迴方法是一種處理問題的精緻技巧、解決問題的有效方法。從哲學方法論角度研究遞迴方法,具有重要的意義。
    遞迴定義和遞迴方法是邏輯學、數學、電腦科學(程式設計)中經常運用的定義和方法,它們具有精確的含義,特別在解決某些困難問題時很有效,它彷彿是一種有趣而精巧的加工器,能使問題得到完滿解決。在人的思維活動中,也普遍存在遞迴現象和遞迴機制。對於某些問題,只能用遞迴方法來處理;對於某些問題,用遞迴方法處理比其他方法更有效。在電腦程式中,遞迴可以構成一種自動推理機制。人工智慧的主要問題之一,就是讓電腦具有自動推理的功能。建立了一種“遞迴機制”後,一旦輸入初始值(前提)電腦就可以進行自動推理而得到結果(結論)。遞迴方法是一種處理問題的精緻技巧、解決問題的有效方法。

一、“遞迴”概念
    所謂遞迴(來自拉丁文recurso,原意指往回跑、召回等)是指藉助於“迴歸”而把未知的歸結為已知的。所謂遞迴函式是一種數論函數,就是說這種函數的定義域和範圍都是自然數,並且對未知數值的計算往往是要迴歸到已知數值才能求出。遞迴是一種迴圈結構,它把“較複雜”情形的計算,遞次地歸結為“較簡單”情形的計算,一直歸結到“最簡單”情形的計算,並得到計算結果為止。這就是遞迴的實質。對於定義是遞迴的,資料結構是遞迴的,問題的解法是遞迴的,都可以採用遞迴方法來處理。

“遞進”的定義:一個對象部分地由自己組成,或按照自己的定義來定義自己,則稱其為遞迴。

根據這個定義,可以把遞迴的類別分為以下幾種:

(1)遞迴函式:
    定義:一個函數是遞迴的,若在它的定義中又出現了定義本身的應用的話。

例如,階乘函數N!的遞迴定義為:

Ⅰ 0!=1 (N=0時)
Ⅱ N!=(N-1)!×N (N>0時)

這裡:
Ⅰ是非遞迴的初始值,是遞迴終止的判斷條件,叫做遞迴的出口。
Ⅱ中(N-1)!是遞迴中用較小的自變數表示較大的自變數N!的遞迴定義,即N!的定義是由它自己的一部分(N-1)!來定義的。
遞迴函式的定義步驟是:
    先給出一些容易定義的遞迴函式作為基本函數,它們是零函數、後繼函數、射影函數;然後給出一些基本規則,從基本函數出發,通過使用這些規則(可以重複),產生出所有遞迴函式。
   
(2)遞迴過程 ,

   定義 :
一個過程是遞迴的,若一個過程P包含著對自己的調用,則稱P為直接遞迴的;若P包含著對另一個過程Q的調用,而Q又調用了P,則稱P是間接遞迴的。

   遞迴法是一種計算函數值的方法,其每一個處理階段都包含所有後繼標記,即第一階段不能在所有其他階段結束之前完成。遞迴函式是用迭代公式從一些自然數匯出其值為自然數的一種函數,而該函數是迭代公式中的一個運算元。遞迴計算是指具有某些檢驗功能的自我調用進程並使用前一次遞迴結果得到的數值的過程。一般而言,遞迴過程是指每一步都要利用以前若干步的結果的一種過程。

(3)遞迴資料結構:

    一種資料結構是遞迴的,若它的結構定義中包含著自身的定義。資料結構中的堆棧就是一種遞迴資料結構。

(4)遞迴例行子程式

    遞迴例行子程式是本身可以作為一個例行子程式來使用的一種遞迴程式,能夠直接調用,也能夠由另一個自己調用自己的程式加以調用。例如,在計算運算式 N=n!=n×(n-1)×(n-2)……×2×1(即n階乘)中,n為程式傳遞參數,若n=1或0,則程式傳回值為1,否則程式每次用(n-1)值調用自己,用n乘以調用結果,並返回其乘積。此程式連續反覆調用自己,直到傳遞的參數值等於1為止。當程式值為1返回時,逐次調用獲得程式值,最後得出程式值 N=n!。遞迴程式最常用的調用方法是利用堆棧,使每一次調用時的最近返回地址和任何其他狀態資訊被推到堆棧出口,堆棧頂部的地址被彈出作為返回地址。所以,遞迴例行子程式是允許自己調用自己的子程式。在每一次後繼的調用中,遞迴例行子程式的狀態必須存放起來,表示該狀態的資料往往都存入堆棧中,在未轉出該子程式之前,可以直接或間接再次調用子程式本身。一個遞迴程式是由初始值和遞迴關係一起完成(構成)的。遞迴方法就是先找出遞迴關係,並在已知初始值條件下解所得遞迴方程,求出同項公式,從而得到所需要的結果。

二、遞迴方法

1.遞迴論
    亦稱“遞迴函式論”、“能行性理論”。
    它主要是用數學方法研究“可構造性”或“能行過程”的學科。

    各種遞迴函式本身的構造也是它研究的重要方面。遞迴論的主要內容包括原始遞迴函式、一般遞迴函式、部分遞迴函式、遞迴可枚舉性、判定問題、遞迴不可解性理論、α遞迴論、譜系理論等。遞迴論的主要方法是通過對數論函數的研究,深刻揭示能行過程的本質,從而有力地解決許多重要的數學問題。

    遞迴論討論的是從形式上刻劃一個運算或一個進程的能行性這種直觀的觀念,也就是從原則上講,它們能機械地進行而產生一個確定的結果。“能行的”(effectify)這個概念含有可具體實現的、有效、有實效的等等意思。遞迴的概念並不難理解,它就是由前面的結果可以遞推得到後面的結果。遞迴論所研究的數論函數有精確的數學定義。為樣本起見,用遞迴定義式定義“斐博那奇函數”如下:

初始規定:
f(0)=0,
f(1)=1,
遞迴運算關係:
f(n)=f(n-1)+f(n-2)。
  
    容易看到,任意給定一個自然數n,f(n)恒可使用上述遞迴定義式逐步地求得。

    在曆史上,對於“能行過程”這一含糊的概念有許多精確的定義。例如,一般遞迴式,圖靈機器,正規演算法,有限自動機等。後來發現這些定義彼此都是等價的,從而確認深入研究遞迴論對弄清“能行過程”是十分關鍵的。在這一領域做出重要貢獻的有希爾柏特、歌德爾、邱奇、圖靈、克林尼、波斯特等人。時至今日,遞迴論已取得了豐碩的成果,它不但在數學基礎理論方面有極其重要的應用,而且在其他新興學科,尤其在電子電腦科學中已越來越顯出它的重要性。

2.遞迴操作序列

    一個項的序列,其中第一個項之後的每一個項都由其前面某些項或所有項作為運算元進行某種運算(操作)而確定,則稱它是一個遞迴操作序列。設第一項為n[,0],運算為F,則有:

(1) n[,0](初始狀態)
n[,1]=F(n[,0])
n[,2]=F(n[,1])
……
n[,i]=F(n[,i-1])
(2) n[,0](初始值)
n[,1]=F(n[,0])
n[,2]=F(n[,0],n[,1])
……
n[,i]=F(n[,0],n[,1]…n[,i-1])

這是一個連續操作的過程。從一般意義上說,就是從事物的某一個初始狀態開始,對事物連續進行某種操作,使事物的狀態發生一系列的變化。不同的是,操作可以始終是同一種,也可以在不同的環節上有不同的操作。用S(State)表示狀態,O(Operate)表示操作,則表示為:

(1) S[,0](初始狀態)
S[,1]=O(S[,0])
S[,2]=O(S[,1])
……
S[,i]=O(S[,i-1])
在整個過程中進行的是同一種操作O。
(2) S[,0](初始狀態)
S[,1]=O[,1](S[,0])
S[,2]=O[,2](S[,1])
……
S[,i]=O[,1](S[,i-1])
在整個操作過程中進行的是不同的操作O[,1],O[,2]……,O[,i]。

3.遞迴證法

亦稱“數學歸納法”,這一方法既簡明又有力。例如,我們可以只用遞迴證法推匯出全部初等數論。
遞迴證法最通常的形式是,為了證明命題A(n)對任意的自然數n成立,我們只需要證明以下兩點:
(1)證明A(0)正確,進行代入驗證,這一步驟叫做奠基。
(2)假設A(n)正確(這叫做歸納假設),而設法證明A(n+1)也正確,這一步驟叫做歸納。
遞迴證法還有別的形式,其中好些是與上述遞迴證法的形式等價的,但也有些力量更強或更弱的證法。需要指出的是,在數學的一個分支——集合論中,當討論超窮數時,我們往往把遞迴證法推廣到超窮數去而得到超窮遞迴證法。這種證法也是討論超窮數時的一個重要工具。而通常所說的遞迴證法則與遞迴論有密切的聯絡。遞迴證法是一個很重要和很有力的證明方法,它在遞迴論以及其他數學理論的發展中起了重要的作用。

4.遞迴定義

    這樣的一種定義或許看來令人吃 驚:當定義某一對象時,可以使用尚未完整定義的同一對象?這樣的定義叫做遞迴定義。
    邏輯上它們完全是正確的並且是可理解的。
    遞迴定義是用遞迴的方法給一個 概念下定義的方法。
    例如,邏輯學中就是用遞迴定義方法來定義“合式公式”的。合式公式的定義是:

(1)命題變元A、B等是合式公式;
(2)如果變元A是合式公式,則~A是合式公式;
(3)如果變元A和B是合式公式,則A∧B,A∨B,A→B,A←→B是合式公式;
(4)有限地使用上述(1)、(2)、(3)規則所構成的符號序列都是合式公式。

    這就是用遞迴的方法給“合式公式”下的定義,即遞迴定義。這裡就是用“合式公式”來定義“合式公式”,即“自己定義自己”。
遞迴定義是一種自我迴圈嗎?是“迴圈定義”、“同語反覆”嗎?從普通邏輯的角度看,“自己定義自己”就是迴圈定義,是違反定義的規則的。這二者之間有著本質的區別。遞迴定義往往用來表示(定義)一種傳遞關係。
遞迴定義的實質反映了人類思維的有限性、起始性。在一定層次上、一定階段上,對某一個具體思維過程來說,總是要有一個起始點,這個起始點往往是一種“自明” 的預設,直接承認它,對它不再作解釋和定義,以它作為思維進程的起點。人的思維不可能無限地往前追朔,否則,任何一個思維過程都無法進行和完成。
遞迴定義的一般含義:某個起始物件具有某種性質,對它進行某種變換(操作)後得到一個新對象,該新對象也有這種性質。或者說,某個綜合物件(整體)具有某種性質,是由它的構成單元對象(部分)具有這種性質所決定的。例如,說A∨B是合式公式,是由A、B都是合式公式決定的。


三、遞迴的實質

    遞迴包含著還原。
    所謂“還原”就是找到最基本的初始元素和最基本的操作步驟。遞迴方法與可操作性問題相關。
    可遞迴的,就是可還原的,也就是可操作的。
    某些問題的解決是一個有始有終、環環緊密相聯的過程中,要得到最終結果,必須從第一步做起,任何一步都不能缺少;任何相鄰的兩步,前一步完成之後才能完成後一步。這樣的問題就必須用遞迴方法來解決。

    從一般意義上說,遞迴方法是一種從簡單到複雜、從低級到進階的可連續操作的解決問題的方法。它的每一步驟都是能行可操作的,各步驟之間是連續轉換的。遞迴定義是用簡單的、自明的要素描述、構造、說明複雜的整體。遞迴方法是通過解決簡單的問題來解決複雜的問題。在人們的思維過程,存在著遞迴機制。對於某些問題必須用遞迴方法來定義或解決。

    遞迴方法從事物的聯絡、連續變換的角度研究問題,它研究的一系列對象或對象的一系列狀態之間不是孤立的,而是聯絡的、能行轉化的,一個對象產生出另一個對象、對象的一個狀態產生出(轉化為)另一個狀態。如:
n[,1],n[,2]=f(n[,1]),n[,3]=f(n[,2]),……
n[,2] 由n[,i]產生出來,n[,3]由n[,2]產生出來,……這些對象是一個相互聯絡的序列。人的思維中包含著“能形性機制”。這是思維的一個基本性質,否則思維將無法進行。邏輯思維具有能形性。直覺、頓悟也具有能形性機制,只不過還沒有發現而已。“能形性”就是“遞迴性”。“能行性”是思維過程得以進行的前提,沒有“能行性”,思維活動的各環節之間就無法轉化,任何一種過程內部都存在著“能行性”機制。
遞迴論中的“可計算性”,從數學上說,就是從一個數計算出另一個數,從一般意義上說,這種“可計算性”就是可操作性、可轉化性,即從一個對象產生出另一個對象、從一種狀態產生出另一種狀態。從邏輯上說,遞迴也是一種推理。遞迴方法在能行性理論(判定問題、不可解性等)的研究中起了重要的作用。遞迴方法也叫遞推法,這是一種尋找數學規律和解題思路的重要方法。
   
     演算法是遞迴論中的重要概念。

     所謂演算法一般被看成是針對一類問題的統一處理規則。這時的“統一處理”意指這種規則並非對每個具體問題的單獨性處理,而是適用於一類問題。演算法是由有窮個語句組成的,當給出一類問題中的任一問題後,可以能行地執行這些規則,經有窮步後得到答案。演算法的定義是:一個演算法是一個作為計算程式(並不必定是數值的)的明晰的能行的指令集,用它可以找到給定的一類問題中的任一個問題的解答。直觀地說,能行就是機械,能行的方法就是機械的方法,其中沒有任何隨意性。描述得切近些,是指它的每一步都由某個事先給定的規則(計算程式)明確規定了的,即規則規定了第一步如何作,並且也規定了在某一步之後下一步如何作;同時要求這個過程要在有窮步內完成。遞迴演算法的特點:一個遞迴演算法就是在定義中使用自己的演算法。遞迴是一種重要的概念,有了它,就可以使用函數或過程自己來定義該函數或過程。

    遞迴定義,就每一個具體規則來看,它是簡單機械的,但它們匯成的整體功能卻超出了人們的想象。遞迴定義的功能是按固定方式自動地由上一代產生下一代,由下一代產生下下一代。雖然其“產生”方式固定不變,但是輸入的“原材料”不同,產生的 “後代”一般也不同。遞迴定義是一個“加工器”。一個遞迴定義就是給出一組規則(法則),由這些規則確定某一類對象組成的一個集合。這些規則中的第一條規定某些對象屬於該集合,其餘各條都規定如果某些對象屬於該集合,那麼另外的一個怎樣的對象也屬於該集合。
遞迴定義具有這樣的特點:要證明由歸納定義所確定的某一類對象中的每一個都有某個性質,只需證明滿足定義中陳述的規則的對象都有該性質。例如,要證明一個形式系統的每一定理都有性質P,只需要證明滿足對定理的定義規則的公式都有性質P。換句話說,只需要證明:
(1)形式系統的每一公理都有性質P;
(2)如果一個推斷規則的所有前提都有性質P,那麼規則的結論也有性質P(推斷規則保持性質P)。這也叫做“推斷規則的遺傳性”。
用這個方法所作的證明稱為對於定理的歸納證明。(1)稱為基始;(2)稱為歸納步驟。(2)中的假設:推斷規則的所有前提都有性質P,稱為歸納假設。歸納證明是一個很重要、應用很廣的證明方法。
遞迴論的基本內容是討論“演算法可計算”或“能行可計算”函數類。可計算性是和演算法概念精確化共生的。在電腦科學理論中有兩個理想的可計算的形式構造系統。一個是瑟(Thue)系統,它純粹是一個形式系統,在這個系統中,符號序列可以作為其他的符號序列依靠某些規則的推論而“演繹”出來。這樣,給出一個輸入序列後,這些規則允許轉換出一個輸出序列。這是一種形式資訊處理系統。另一個是圖靈機,圖靈機對演算法概念的計算特徵作了深入到細節的刻劃。圖靈機是一種理想的電腦,它是一個用數學方法精確地加以定義的,且能反映計算程式這個概念的抽象系統。圖靈機把計算時用到的要素都恰當地轉換為某種基本程式,把計算歸結為最基本的要素,最後用形式的程式表達出來。

    “遞迴”是一種普通的思維機制,但在不同的科學領域中它又表現為一些特殊的現象、特殊的方法。在方法論研究中,雖然我們不可能尋找到一種能解決所有問題的萬能方法,事實上這樣的方法也是不存在的,但我們可以對不同科學領域中的問題進行分類,從抽象化問題過渡到具體化問題,使問題的定義和描述精確化,從而尋求解決某一類問題的精確方法(即演算法)。在各種科學領域中以至在社會結構中、人們的各種操作行為中,普遍存在一類具有遞迴結構的問題,我們把這類問題稱為“遞迴問題”。遞迴方法就是解決這類“遞迴問題”的精確方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.