【计算机理论基础】停机问题(Halting Problem)

server/2024/12/21 20:34:46/

1 停机问题的来源

        Alan Turing: On Computable Numbers, with an Application to the Entscheidungsproblem 

        resource: https://people.math.ethz.ch/~halorenz/4students/Literatur/TuringFullText.pdf

        停机问题(Halting Problem):是否存在一个算法可以判断任意的程序是否会在有限时间内停止执行,还是会陷入无限循环?

2 为什么提出停机问题

        上一篇文章中,我们讲到了图灵机(Turing Machine),为什么需要将停机问题呢?我的理解是,这篇文章是图灵为了回答判定问题,判定问题就是“是否存在一个通用的算法或者方法,能够判断任何一个数学命题是真还是假的”,有了这个背景,我们再进行下一步理解。

        如果想要说明这个问题,我们首先可以看能不能找到哪些命题是不可以被回答的。然后图灵提出了图灵机的概念,并总结“任何可以计算的问题或者过程都可以通过图灵机来表达”,图灵机提供了一个定义“计算”或“算法”的精确方法,它能解决的问题被称为可计算问题。然后通过停机问题证明了“并非所有问题都可以由图灵机在有限时间内解决”,也就是说“存在不可解的问题(或者说图灵机不可解的问题)”。那么就是说“没有一种通用的算法,能够判断一个程序和输入是否会在有限的时间内停下来”,那么就是说“没有一种通用的算法或方法,能够判断一个命题是真或假”,从而便回答了“判定问题”。

3 怎么证明停机问题不可解

        图灵通过一种对角线论证归谬法来证明停机问题是不可解的。

        图灵假设有一个“判定器”可以决定任意图灵机是否会在给定输入下停机。为了证明这个问题不可解,图灵构造了一个特殊的图灵机 M,当这个机器接收到自身的描述作为输入时,会导致自我矛盾:

  1. 假设:存在一个通用的算法 H(M,x),该算法能够判定图灵机 M是否会在输入 x 上停机。

  2. 构造新的机器 D:该机器使用 H 作为子程序,它接受一个图灵机描述 M 作为输入并做如下操作:

    • 如果 H(M,M)返回“停机”,则D不停机,进入无限循环。
    • 如果 H(M,M)返回“不停机”,则D停机。
  3. 矛盾:现在将 D自己作为输入,即 D(D)。根据 H 的判定:

    • 如果 D(D) 停机,那么 H(D,D)必须返回“不停机”,但这与 D(D) 会停机相矛盾。
    • 如果 D(D) 不停机,那么 H(D,D)必须返回“停机”,但这与 ( D(D) 不停机相矛盾。

        因此,图灵得出结论,不可能存在这样的算法可以解决所有情况下的停机问题。这就是停机问题不可判定性的证明​。

        文章说明:本文第三部分内容来自大模型生成内容,笔者意在记录学习过程,最大的愿望是希望有理解更深层次的学者能够指导,说明这篇生成内容是否正确,并讲讲自己对该部分的理解,不胜感激!


http://www.ppmy.cn/server/126820.html

相关文章

Unity给物体添加网格(Wire)绘制的方法参考

先看效果&#xff1a; 再看代码&#xff1a; using System.Collections.Generic; using UnityEngine;public class WireMesh : MonoBehaviour {[SerializeField]Material material;void Start(){Mesh mesh OptimizeMesh(GetComponent<MeshFilter>().mesh);GameO…

遮罩解决图片悬浮操作看不到的情况

未悬浮效果 悬浮效果 如果仅仅是添加绝对定位&#xff0c;那么遇到白色图片&#xff0c;就会看不到白色字体。通过遮罩&#xff08;绝对定位透明度&#xff09;就可以解决这个问题。 <script setup> </script><template><div class"box"><…

蓝桥杯-财务管理

#include<stdio.h> int main() { int i 1; float yue 0,nian0; printf("请输入每月结余:\n "); while (i < 12) { scanf_s("%f", &yue); i; nian yue; } printf("平均月结余&#xff1a…

论文提纲怎么写?分享5款AI论文写作软件

在学术研究和写作过程中&#xff0c;撰写高质量的论文是一项挑战性的任务。幸运的是&#xff0c;随着人工智能技术的发展&#xff0c;AI论文写作工具逐渐成为帮助学者和学生提高写作效率的重要工具。这些工具不仅能够提高写作效率&#xff0c;还能帮助简化复杂的写作流程&#…

土地规划中的公共设施布局:科学规划,赋能土地高效利用的艺术

在城市与区域发展的宏大叙事中&#xff0c;公共设施布局如同血管与神经网络&#xff0c;支撑着城市的脉动与感知。合理规划公共设施布局对于提升土地使用效率、促进社会公平、增强居民福祉至关重要。本文将深入探讨如何通过科学方法与创新策略&#xff0c;实现公共设施的高效布…

使用Scikit-image进行图像处理入门

简介 在数据科学的广阔领域中&#xff0c;图像处理占据了重要的一席之地&#xff0c;为分析和处理视觉数据提供了各种工具和技术。Python 拥有丰富的库生态系统&#xff0c;为图像处理提供了多种选择&#xff0c;其中&#xff0c;scikit-image 凭借其强大且易用的功能脱颖而出…

目标检测 DETR(2020)

文章目录 前言backbone位置编码&#xff08;二维&#xff09;encoder、decoderprediction heads损失函数计算 前言 DETR全称是Detection Transformer&#xff0c;是首个基于Transformer的端到端目标检测网络&#xff0c;最大的特点就是不需要预定义的先验anchor&#xff0c;也…

vue admin 若依框架 解决无权限时进入死循环的问题 auths

核心原因&#xff1a; if (auths && auths.length > 0) { // like12 find bug,数组为空[]时依然会进入死循环 原来为&#xff1a;if (auths) // 获取用户信息getInfo({ commit, state }) {return new Promise((resolve, reject) > {getInfo(state.token).then(…