gpt4 book ai didi

infinite-loop - 检测程序是否处于无限循环中(读取 : Solving the Halting Problem)

转载 作者:行者123 更新时间:2023-12-04 15:48:45 25 4
gpt4 key购买 nike

是否检测确定性程序(即状态机)是否处于等效于解决停机问题的无限循环中?

我想出了一个解决方案,但我不确定它为什么不起作用:

  • 让程序运行
  • 当您认为它处于无限循环中时,请定期对其内存进行快照
  • 如果您检测到相同的快照,则程序处于无限循环中
  • 只要您没有两次获得相同的快照,要么 (1) 不在无限循环中,要么 (2) 您需要更快地拍摄快照(可能在每次内存访问时拍摄一次?)

我假设这不起作用...但是为什么呢?

这似乎是检测程序是否处于无限循环中的一种非常合理的方法(例如,特别是如果您存储哈希而不是内存本身,尽管这不会 100% 准确)......它有什么问题,如果有的话?

最佳答案

理论上,它等同于停机问题,因为真正的计算机具有有限数量的可能状态(即使它很大)。停机问题适用的图灵机具有无限存储空间。

但是,让我们进一步探索您的想法。您还必须拍摄“隐藏”状态的快照:CPU 的程序计数器和其他寄存器,并且必须在每条指令之前拍摄快照。 (如果内存快照相同并且即将执行相同的指令,则程序将处于无限循环中。如果内存内容相同,则无济于事,但是将执行除上一个之外的其他内容您看到相同快照的时间。)

在实践中,即使是非常小的计算机也有如此大量的潜在状态,以至于您永远无法存储(甚至散列!)所有快照。例如,即使是像古代 commodore 64 这样具有 64kB RAM 的小型机也有 256^65536 个潜在状态(不包括 5 个 CPU 寄存器)。可能如此长的跟踪周期在时间和空间上都是绝对不可行的。

关于infinite-loop - 检测程序是否处于无限循环中(读取 : Solving the Halting Problem),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6568181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com