这是我在阅读停止问题、科拉茨猜想和科尔莫哥洛夫复杂性时突然想到的一个问题。我试图搜索类似的东西,但我无法找到一个特定的主题,可能是因为它没有太大的价值,或者它可能只是一个微不足道的问题。
为简单起见,我将给出三个程序/功能示例。
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 复杂性提出了一种查找对象(例如一段文本)的(描述性)复杂性的方法。我想知道,给定描述程序使用的内存空间的正式方式(在运行时计算),我们是否可以计算最大步数,如果超过,我们可以知道该程序是否会终止或永远奔跑。
最后,我想向我推荐任何我认为有用的资源,并帮助我弄清楚我到底在寻找什么。
谢谢你。(对不起我的英语,不是我的母语。我希望我很清楚)