簡體   English   中英

遞歸和遞歸可枚舉語言有什么區別

[英]What is the difference between recursive and recursively enumerable languages

我想知道遞歸和遞歸可枚舉語言在停機和圖靈機方面的區別是什么。 我知道遞歸可枚舉語言是遞歸語言的一個子集,但我不確定除此之外的區別。

你具有RRE之間的關系向后:RRE的(適當的)子集。 基本上,遞歸語言是一種你有一個總決策者的語言。

回憶一下遞歸可枚舉語言的定義,即存在部分決定器的語言; 也就是說,一個圖靈機,輸入一個字母表上的單詞,它將根據您的語言正確接受/拒絕該單詞,或者如果該單詞不在您的語言中,它可能會永遠循環。

相比之下,遞歸語言是一種存在總決策者的語言,即永遠不會循環的語言,並且總是在接受或拒絕狀態中停止。

將這兩個定義放在一起,很明顯遞歸語言也是遞歸可枚舉的,因為總決策器也是部分決策器(它只是從不“選擇”循環而不是用正確的答案停止)。

主要區別在於,在遞歸可枚舉語言中,機器對語言 L 中的輸入字符串停止。但對於不在 L 中的輸入字符串,它可能會停止或可能不會停止。

當我們談到遞歸語言時,無論機器是否接受它,它總是會停止。 如果它接受它到達(q接受)並停止。 如果不被機器接受,它直接到達(q 停止)。

停機問題是 RE 但非 R 問題的典型例子

在嘗試拆分復雜性類時,記住一個屬於一個但不屬於另一個的示例總是好的。

在這種情況下,規范示例是對應於停機問題決策問題的語言:

HALT = 所有停止的圖靈機/輸入對

眾所周知,任何圖靈機都無法確定性地解決停機問題,因此 HALT 語言不在 R 中。

但 HALT 顯然在 RE 中。

我們回憶一下遞歸可枚舉語言的定義:

RE 語言是這樣一種語言,它存在一個圖靈機,它在輸出是的每個語言成員上停止,並且可能在非成員上永遠運行

所以我們只需要一個圖靈機來模擬另一個圖靈機(通用圖靈機)。 然后該機器將在 HALT 的每個成員處停止,因此 HALT 處於 RE 中。

這個事實本身就應該突出 RE 比 R 難多少:RE 包含不可判定的問題,為此設計算法是不可能的! R,作為其定義的直接結果,沒有。

非 RE 問題

查看將兩者綁定的示例也很有幫助:

規范示例是 HALT 的補充:所有非暫停 TM/輸入對的語言。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM