读改变未来的九大算法笔记08_并非万能的算法

这篇具有很好参考价值的文章主要介绍了读改变未来的九大算法笔记08_并非万能的算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

读改变未来的九大算法笔记08_并非万能的算法

1. 有些问题根本不可能通过计算机解决,不管计算机有多强大或人类程序员有多聪明

2. 不可计算问题

2.1. 20世纪30年代末

2.1.1. 美国人阿隆佐·邱奇

2.1.1.1. Alonzo Church

2.1.1.2. 在计算理论上的突破性工作至今仍是计算机科学许多方面的基础

2.1.1.3. 单独发现了不可判定问题的存在

2.1.1.3.1. 比图灵早几个月发表了自己的成果
2.1.1.3.2. 邱奇的公式更为抽象,且并未详尽地提及由机器执行的计算

2.1.2. 英国人阿兰·图灵

3. 计算机软件的可靠性

3.1. 通常的情况

3.1.1. 即便高质量、编写良好的软件都会做些偏离其原有目的的事

3.2. 糟糕的情况

3.2.1. 软件崩溃,你丢失了正在处理的数据或文件

4. 可以证明不可能

4.1. 可以证明不可能存在一个能侦测所有计算机程序中所有潜在崩溃的自动化软件检查器

4.2. 反证法(Proof by Contradiction)

4.2.1. 假设怀疑某个声明S为假,但你想确信无疑地证明其为假。你先假设S为真

4.2.2. 你先假设S为真

4.2.3. 通过进行一些推理,你得出某个声明T也必须为真

4.2.4. 如果已知T为假,就出现了矛盾

4.2.5. 这能证明你的原始假设(S)也必为假

4.2.6. S导出T,但T为假,因此S为假

4.3. 实验前提

4.3.1. 任何程序可以将任何文件作为输入运行,但输出结果通常为乱码,除非输入文件本该配合由你选择运行的程序

4.3.2. 计算机程序作为文件被存储在计算机磁盘上,因此一个程序可以用另一个程序作为其输入文件运行

4.3.3. 计算机程序能将其自身文件作为输入运行

5. 发现崩溃的不可能性

5.1. 图

读改变未来的九大算法笔记08_并非万能的算法文章来源地址https://www.toymoban.com/news/detail-477642.html

5.2. 假设名为CanCrash.exe的程序能分析其他程序并判定它们是否会崩溃

5.2.1. 作为输入的程序会在某种情况下崩溃,CanCrash.exe就会输出“yes”并结束

5.2.2. 如果输入程序永不会崩溃,CanCrash.exe就会输出“no”并结束

5.3. 让CanCrash.exe崩溃

5.3.1. 改变后的程序为CanCrashWeird.exe

5.3.1.1. 如果输入会崩溃,那么CanCrashWeird.exe这个程序也会故意崩溃

5.3.1.2. 如果输入永不会崩溃,则CanCrashWeird.exe会输出“no”

5.4. 转换成一个更模糊的程序称为CrashOnSelf.exe

5.4.1. 只关注程序在将自身作为输入时运行的表现

5.4.1.1. 会检测其输入程序,如果输入程序能在自身上运行,则CrashOnSelf.exe会故意崩溃

5.4.1.2. 反之,CrashOnSelf.exe会输出“no”

5.5. 转换成AntiCrashOnSelf.exe

5.5.1. 如果其输入在自身上运行时崩溃,AntiCrashOnSelf.exe就会输出“yes”

5.5.2. 如果输入在自身上运行时不崩溃,AntiCrashOnSelf.exe就会故意崩溃

5.6. 矛盾

5.6.1. AntiCrashOnSelf.exe将自己作为输入运行时会输出什么?

5.6.1.1. 如果输入崩溃,AntiCrashOnSelf.exe就会输出“yes”

5.6.1.2. 因为如果AntiCrashOnSelf.exe已经崩溃,它就不能成功地输出“yes”并结束

5.6.1.3. 如果输入不崩溃,则AntiCrashOnSelf.exe应崩溃

5.6.1.4. 排除了AntiCrashOnSelf.exe两种可能的行为,这也意味着AntiCrashOnSelf.exe一开始就不可能存在

5.6.2. 假设CanCrash.exe存在必为假

6. 停机问题和不可判定性

6.1. 停机问题(The Halting Problem)

6.1.1. 已有计算机程序最终是否会结束或“停止”的问题

6.2. 不可判定问题

6.2.1. 不能通过编写计算机程序解决的问题

6.2.2. 你不能编写一个名为AlwaysHalts.exe,输入永远停止时输出“yes”,反之输出“no”的计算机程序

6.3. 不可判定性对计算机使用的实际影响

6.3.1. 不可判定性只关注计算机程序能否生成答案,并不考虑我们需要等答案多久

6.3.2. 许多可判定任务还没有高效算法

6.3.2.1. 著名的要数旅行商问题(Traveling Salesman Problem),简称为TSP

6.3.2.1.1. 假设你必须飞往很多城市,你应该采用哪种顺序访问城市才能让飞行费用最少

6.3.2.2. 问题可判定这一事实并不意味着我们可以在实践中解决它

6.3.3. 大部分时间里都能很好地解决不可判定问题

6.3.3.1. 通常能为不可判定问题找到非常有用的部分解决方案

6.3.3.2. 软件可靠性提升部分得益于崩溃发现程序的进步

7. 人脑

7.1. 如果你相信人脑在原则上能被计算机模拟,那么人脑就会和计算机受相同的限制

7.1.1. 会存在人脑无法解决的问题——不管这个人脑有多聪明或经过多么良好的训练

7.2. 从科学观点来看,人脑和计算机之间似乎没有什么基本壁垒,因为化学和电子信号在人脑中传输的低级细节很好理解

7.3. 多种哲学论据暗示,人脑创造“理智”的物理过程在性质上与计算机能模拟的任何物理系统有所不同

到了这里,关于读改变未来的九大算法笔记08_并非万能的算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 读改变未来的九大算法笔记02_数据库

      2.1.1. 当一个程序崩溃时,它会丢掉所有正在处理的东西 2.1.2. 只有安放在计算机文件系统中的信息会得到保存 2.1.3. 崩溃相当宽泛:包括任何可能导致计算机停止运行进而损失数据的事 2.1.3.1. 可能的事件包括断电、硬盘出错、其他硬件出错,以及操作系统或应用程序中的

    2024年02月08日
    浏览(33)
  • 读改变未来的九大算法笔记07_搜索引擎

    1.1.1.1. 惠普(Hewlett-Packard) 1.2.1.1. 从一间卧室开始的,空间很快就不够用了,于是他们转移到了车库 1.3.1.1. 谷歌 1.3.1.1.1. 门洛帕克车库 2.1.1.1. 美国工程师范内瓦·布什(Vannevar Bush) 2.1.1.2. 论文《诚若所思》(As We May Think) 2.1.1.3. 一台被称作麦麦克斯(memex)的机器

    2024年02月08日
    浏览(41)
  • 读改变未来的九大算法笔记05_数字签名

    3.3.1.1. 钟大小为11的乘法表 3.5.2.1. 欧几里得算法也能根据钥匙值计算出挂锁值,而这一算法要比暴力破解高效得多。这也是乘法方法被认为不安全的原因 4.2.1.1. 钟大小为22时n的三次方和七次方的值 4.5.1.1. 发明一种高效的分解因子算法只会破坏类RSA机制

    2024年02月08日
    浏览(35)
  • 读改变未来的九大算法笔记09_指尖的精灵

    5.1.2.1. 编译器 5.1.2.2. 程序验证技术 5.2.2.1. 排序算法(快速排序等) 5.2.2.2. 图形算法(迪杰斯特拉最短路径算法等) 5.2.2.3. 数据结构(哈希表等) 5.3.2.1. CPU(中央处理器) 5.3.2.2. 监视器 5.3.2.3. 网络

    2024年02月08日
    浏览(26)
  • 零拷贝并非万能解决方案:重新定义数据传输的效率极限

    在我们前面讲解零拷贝的内容时,我们了解到一个重要的概念,即内核缓冲区。那么,你可能会好奇内核缓冲区到底是什么?这个专有名词就是PageCache,也被称为磁盘高速缓存。也可以看下windows下的缓存区:如图所示: 零拷贝进一步提升性能的原因在于 PageCache 技术的使用。

    2024年02月08日
    浏览(25)
  • 读十堂极简人工智能课笔记08_人工智能的未来

    1.2.2.1. 其骨头是用塑料生产的,结构相当精巧,足以匹配人类的骨骼 2.2.2.1. 其灵感来自人脑 2.2.2.2. 如今被用于神经科学、机器人和计算机科学 2.2.3.1. 每个处理器又由18个较小的处理器组成 2.2.3.1.1. 16个用于模拟神经元 2.2.3.1.2. 1个用于管理 2.2.3.1.3. 1个备用 2.2.3.2. 其巧妙

    2024年02月21日
    浏览(31)
  • 【Algorithms 4】算法(第4版)学习笔记 08 - 3.1 符号表

    本文的主要内容是 符号表 (symbol table,以下简称 ST)。内容比较简单,只涉及到比较基础的实现,没有太过复杂的概念,因而篇幅比较短。 在 Sedgewick 教授的视频课程中对一些数学模型分析内容没有进行详细的证明,但在书中有比较详细的介绍,可以参考书中的相关章节进

    2024年02月20日
    浏览(27)
  • 九大经典算法

    1. 冒泡排序(Bubble Sort) 两个数比较大小,通过两两交换,像水中的泡泡一样,较大的数下沉,较小的数冒起来。 算法描述 : 1.比较相邻的元素。如果第一个比第二个大,就交换它们两个; 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的

    2023年04月09日
    浏览(43)
  • 排序算法(九大)- C++实现

    目录 基数排序 快速排序  Hoare版本(单趟) 快速排序优化 三数取中  小区间优化 挖坑法(单趟) 前后指针法(单趟) 非递归实现(快排) 归并排序 非递归实现(归并) 计数排序 冒泡排序 插入排序 希尔排序(缩小增量排序) 选择排序(优化版本) 堆排序 实现原理:

    2024年02月13日
    浏览(32)
  • 九大排序算法(c语言版)

    过年这几天晚上在家码代码学了一点。 代码中排序的数字均由rand()函数随机生成。 一个经典的不能再经典的排序算法。 优化前: 两个for循环搞定。 优化后: 加入了一个flag变量,用于减少多余的比较和交换,大大提高代码运行效率,减少循环次数。 冒泡增强版,就是拿后

    2024年03月12日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包