一、在可計算性理論
中,乙個
自然數的子集
被稱為遞迴的、可計算的或具
可判定性
,如果我們可以構造乙個
演算法
,使之能在有限時間內終止並判定乙個給定元素是否屬於這個集合。更一般的集合的類叫做
遞迴可列舉集合
。這些集合包括遞迴集合,對於這種集合,只需要存在乙個演算法,當某個元素位於這個集合中時,能夠在有限時間內給出正確的判定結果,但是當元素不在這個集合中時,演算法可能會永遠執行下去(但不會給出錯誤答案)。
1、可數集合: 可以與正整數集建立一一對應的無窮集合.
2、遞迴可列舉集合: 可數集合s被稱為遞迴可列舉的, 如果存在生成s的元素的演算法. 等價定義:可數集合s被稱為遞迴可列舉的, 如果有乙個圖靈機, 在給定s的乙個元素作為輸入的時候總是停機, 並在給定的輸入不屬於s的時候永不停機.
3、遞迴集合: 可數集合s被稱為遞迴的, 如果存在能夠在有限步驟內判定任意給定元素是否屬於s的演算法.
遞迴集合
性質:如果 a 是遞迴集合,則 a 的補集是遞迴集合。 如果 a 和 b 是遞迴集合,則 a ∩ b、a ∪ b 和 a × b 是遞迴集合。集合 a 是遞迴集合,當且僅當
a 和 a 的補集是遞迴可列舉集合。乙個遞迴集合在全
可計算函式下的原像(preimage)是遞迴集合。
二、可判定性和半可判定性
判定問題是無窮多個同類個別問題的總稱。例如,2是不是素數?6是不是素數?這些都是個別問題,把這類個別問題概括起來,就得到乙個判定問題:任意給定的正整數是不是素數?這裡的正整數集合稱為該判定問題的域,給定域中的乙個元素,判定問題就對應乙個個別問題。對於乙個判定問題,如果能夠編出乙個程式,以域中任意元素作為輸入,執行該程式就能給出相應的個別問題的答案,就稱該判定問題
為可判定的。例如,「任意正整數是不是素數」這個問題就是可判定的。對於集合a,域中任意元素是否屬於它的問題稱為集合 a對應的判定問題。集合是遞迴集的充分必要條件為對應的判定問題是可判定的。因此,全體素數的集合是遞迴集。
對於乙個判定問題,如果能夠編出乙個程式p,以域中任意元素作為輸入,當相應的個別問題的解答是肯定的時候,p的執行將終止並輸出「是」,否則p的執行不終止,就稱該判定問題為
半可判定的。可判定的問題總是半可判定的。集合是遞迴可列舉集的充分必要條件為對應的判定問題是
半可判定的。
圖靈在2023年證明,圖靈機的停機問題是不可判定的,即不存在乙個圖靈機能夠判定任意圖靈機對於任意輸入是否停機。圖靈機的停機問題是半可判定的。圖靈機的停機問題是很重要的,由它可以推出電腦科學、數學、邏輯學中的許多問題是不可判定的。
生成可重集的排列 (遞迴過程)
解釋一下劉汝佳的 就是這個遞迴只會考慮相同元素的第乙個,所以與前乙個相同的元素應當被忽略,第乙個元素由於沒有前面的元素,所以應當取走。注意這一行 觀察用例 3 1 1 1 有了這行 只會輸出乙個 1 1 1 但沒有這行 就會輸出27 個 1 1 1 3層迴圈,每層3個 3 3 可重集的全排列2 ru...
列舉排列 生成可重集的排列
輸入陣列p,按照字典序輸出所有的p中元素的全排列 由於c c 語言中的函式在接受陣列引數的時候無法得知陣列的元素個數所以需要傳乙個已經填好的位置個數,或者當前需要確定元素位置cur,還需要傳輸原始陣列p,共四個引數 生成的排列有重複的所以需要統計a 0 a cur 1 中p i 出現的次數c1,以及...
遞迴函式(四) 全函式與計算的可終止性
遞迴函式 一 開篇 遞迴函式 二 編寫遞迴函式的思路和技巧 遞迴函式 三 歸納原理 遞迴函式 四 全函式與計算的可終止性 遞迴函式 五 遞迴集與遞迴可列舉集 遞迴函式 六 最多有多少個程式 遞迴函式 七 不動點運算元 遞迴函式 八 偏序結構 遞迴函式 九 最小不動點定理 上文我們討論了集合上的關係,...