簡體   English   中英

通過以位為單位的長度確定程序的執行時間?

[英]Determining a program's execution time by its length in bits?

這是我在閱讀停機問題、collat​​z 猜想和 Kolmogorov 復雜性時突然想到的一個問題。 我試圖搜索類似的東西,但我無法找到一個特定的主題,也許是因為它沒有很大的價值,或者它可能只是一個微不足道的問題。

為了簡單起見,我將給出三個程序/函數的例子。

function one(s):
  return s
function two(s):
  while (True):
    print s
function three(s):
  for i from 0 to 10^10:
    print(s)

所以我的問題是,是否有一種方法可以將程序的長度(如用於描述它的位)以及程序使用的內部存儲器形式化,以確定決定所需的最小/最大時間/步數程序是終止還是永遠運行。

例如,在第一個函數中,程序不會改變其內部存儲器並在一些時間步后停止。
在第二個示例中,程序永遠運行,但程序也不會更改其內部存儲器。 例如,如果我們考慮所有與程序 2 長度相同但不改變其狀態的程序,難道我們不能確定步數的上限,如果超過這個上限,我們可以得出這個程序永遠不會終止的結論嗎? (如果不是為什么?)
在最后一個例子中,程序改變了它的狀態(變量 i)。 因此,在每一步,上限可能會改變。

[簡而言之] Kolmogorov 復雜性提出了一種尋找對象(例如一段文本)的(描述性)復雜性的方法。 我想知道,給定一種描述程序使用的內存空間的正式方式(在運行時計算),我們是否可以計算最大步數,如果超過該步數,我們就可以知道該程序是否會終止或永遠運行。

最后,我想向我推薦任何我認為有用的來源,並幫助我弄清楚我到底在尋找什么。
謝謝你。 (對不起我的英語,不是我的母語。我希望我很清楚)

如果確定性圖靈機兩次進入完全相同的配置(我們可以檢測到保留迄今為止看到的配置的痕跡),那么我們立即知道 TM 將永遠循環。

如果它事先知道確定性圖靈機不可能使用超過某個固定常量的輸入磁帶,那么 TM 必須明確地停止或最終進入它已經訪問過的某個配置。 假設 TM 最多可以使用 k 個磁帶單元,磁帶字母表是 T,狀態集是 Q。那么有 (|T|+1)^k * |Q| 唯一的配置(長度為 k 倍的狀態數的字符串數量(T union blank)和鴿巢原理我們知道,一個需要這么多步驟的 TM 必須進入它之前已經進入的某個配置。

一:因為我們知道這個函數不使用內部存儲器,我們知道它要么暫停,要么永遠循環。

二:因為我們知道這個函數不使用內部存儲器,我們知道它要么暫停,要么永遠循環。

三:因為我們知道這個函數只使用固定數量的內部存儲器(比如 34 位),所以我們可以在少於 2^34 次循環迭代中判斷 TM 是否會針對任何給定的輸入 s 停止,保證。

現在,知道TM 將使用多少磁帶,或者程序將使用多少內存,都不是 TM 可以解決的問題。 但是如果你有一個預言機(比如一個能夠做證明的人)告訴你一個正確的固定內存上限,那么停機問題是可以解決的。

暫無
暫無

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

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