簡體   English   中英

從通用語言(L_u)到非空語言圖靈機語言(L_ne)的“還原”

[英]“Reduction” from the complement of the universal language (L_u) to the language of nonempty-language Turing machines (L_ne)

我有一個來自理論計算機科學領域的問題。

所謂的通用語言 L_u 是由對 (M, w) 組成的,使得 w \in L(M)。 語言 L_ne 由具有非空語言的機器 M(實際上是它們的描述,但我們在這里不要太拘謹)組成。 我們都知道 L_u 和 L_ne 都是非遞歸的,但仍然是 RE(遞歸可枚舉)。 另一方面,L_u 的補碼(我們稱它為 L_nu)甚至在 RE 中也沒有,因為如果是,L_u 和 L_nu 都必須是遞歸的。

如果我們能夠將 L_nu 簡化為 L_ne,我們將證明 L_ne 也是非 RE。 這意味着這種減少應該是不可能的。 但是,我不知道為什么會這樣。

首先,為了將語言 L 簡化為 L',我們必須構造一個可計算的 function f,它將 L 的每個可能的正實例映射到 L' 的某個正實例,並將 L 的每個可能的負實例映射到 L' 的某個負實例。 僅此而已,不是嗎?

其次,我認為我們可以有把握地假設通用圖靈機(UTM)有兩個最終狀態,一個是狀態和一個非狀態。 當然,如果 w \not\in L(M) 對於給定的輸入 (M, w),UTM 將永遠不會到達 NO 狀態,但我們仍然可以假設如果 UTM 停止,它將在 YES 狀態或 NO 狀態下這樣做。 這也是正確的,不是嗎?

現在讓我們嘗試將 L_nu 簡化為 L_ne,如下所示:給定一對 (M, w),構建一個機器 M',使用 UTM 的邏輯在 w 上運行 M,如果 UTM 說是,則說否,反之亦然。 顯然,L_nu 的正實例(w \not\in L(M))映射到 L_ne 的正實例(L(M') 在這種情況下是非空的,因為 M' 總是說是),而 L_nu 的負實例 ( w \in L(M)) 被轉換為 L_ne 的負實例(L(M') 是空的,因為 M' 總是說 NO)。 雖然機器 M' 顯然對於至少一些正輸入永遠運行(因為至少有一對 (M, w) 與 w \not\in M 使得 UTM 永遠運行),減少本身是可計算的:代碼for M' 包括 UTM 的代碼(這絕對可以完成)和一個簡單的邏輯,用於檢查內置 UTM(如果應用於 (M, w))是否已到達 YES 狀態或 NO 狀態. 就是這樣。

因此,我剛剛“證明”了 L_ne 是非 RE。 但是,由於情況並非如此,我一定是在某個地方出錯了。 這真的讓我感到困惑,因為從 L_u 到 L_ne 的標准簡化,例如,Hopcroft-Ullman-Motwani 中給出的,采用了非常相似的推理。

如果有人能幫我解開這個謎語,我將不勝感激!

我已經看到這個問題四處游盪並且猶豫不決,因為它非常棘手。 我在下面有一個嘗試的解決方案,我試圖指出問題可能是什么。 請仔細閱讀 go,看看您是否遵循我的建議。 我相信問題的真正症結在於,正如我在下面詳細闡述的那樣,在 w 上運行 M 的 UTM 不能正確處理 M 無法在 w 上停止的情況:如果 M 無法在 w 上停止,那么 (M , w) 在 L_nu 中,但是在 w 上運行 M 的 UTM 永遠不會知道這一點。

如果我們有一個 L_ne 的決策者,我們可以決定 L_nu 嗎?

L_nu 問題的輸入是對 (M,w)。 有以下三種情況:

  1. M 進入停止接受輸入 w:返回 no
  2. M 對輸入 w 進入停止拒絕:返回是
  3. M 從不停止輸入 w:返回是,因為從不停止意味着 M 不接受 w。

我們當然可以計算一個機器描述 M',它使用 UTM 在 w 上運行 M 並返回相反的結果。 有以下三種情況:

  1. M'進入停止接受輸入w:返回是
  2. M' 對輸入 w 進入停止拒絕:返回 no
  3. M' 永遠不會停止輸入 w:我們永遠不會陷入循環,所以這必須 map 為 no

如果我們有一個 L_ne 的決策者 M'' 並將 M' 輸入其中,我們會得到什么?

  1. 在第一種情況下,M'' 將返回 yes,因為 M' 接受所有輸入
  2. 在第二種情況下,M'' 將返回 no,因為 M' 不接受任何輸入
  3. 在第三種情況下,M'' 將返回 no,因為 M' 不接受任何輸入

在第三種情況下,M'' - 我們的 L_ne 決定者 - 告訴我們不,語言 L(M'') 是空的。 但是,它沒有說明語言為什么是空的:它可能是 M' 的任何一個否定情況。 如果是因為 M' 明確輸入了停止拒絕,那么我們知道 w 在 L(M) 中,所以我們的歸約應該回答“否”。 如果是因為 M' 在 w 上永遠運行,那么我們知道 M 在 w 上沒有停止,所以我們的歸約應該回答“是”。

我們在運行 M'' 時無法區分這兩種情況,因此歸約失敗。 為什么失敗了? 它失敗是因為 M',即在 w 上運行 M 的 UTM,在 M 未能在 w 上停止的情況下無法准確地進入停止接受。 M' 永遠不會達到它知道處理將永遠繼續的地步。 在一般情況下,M' 需要永遠運行,在這些情況下,L(M') 將為空。

暫無
暫無

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

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