正在检测程序(即状态机)是否处于无限循环等同于解决暂停问题的确定性程序?检测程序是否处于无限循环(阅读:解决暂停问题)
我想出了一个解决方案,我不知道为什么它不应该工作:
- 让程序运行
- 当你认为这是一个无限循环,采取的快照它的内存有规律的间隔
- 如果你检测到相同的快照,程序处于无限循环
- 只要你没有得到相同的快照两次,它或者(1)不在无限循环中,或者(2)您需要更快速地拍摄快照(也许每次访问内存时都需要一次?)
我假设这不起作用......但为什么?
这似乎是一个非常合理的方式来检测程序是否处于无限循环(例如,特别是如果您存储散列而不是内存本身,但这不会100%准确)......它有什么问题, 如果有什么?
@Downvoter:小心点评? – Mehrdad
几分钟前,我想到了这个想法,我很高兴别人已经提出并关心问。谢谢。 –
我在看到你之前打开了一个类似的问题:http://stackoverflow.com/q/16250472/1858225(请注意,我的问题也是基于另一个我认为过早关闭的问题。)我认为,而不是将我的标记为重复我只是在这里留下这个评论,因为我的问题是更具体一点,我的答案区分这和停止问题。 –