最近看《程序员的数学》大概了解了一下停机问题,了解的同时也疑惑,这个能有什么实际用处吗?
带着疑惑上网搜到了cnbeta.com里的一篇新闻,http://www.cnbeta.com/articles/347905.htm
《停机问题证明致命机器人无法正确决定是否杀死人类》,其论文也发表在arxiv上。有兴趣的可以下载原文来看。
这篇论文的主要思路是,通过列出一系列电车难题的变种,来逐步提出一些悖论,最终通过停机问题证明论点。
列举下论文中提到的电车难题的变种(按顺序逐步深入):
1. 一辆失控的电车朝着一群玩耍的孩子开去,此时这群孩子已经来不及逃开了。突然你发现的手边有一个变道开关(switch),可以把电车引向另一轨道从而避开这群孩子,但是另一条轨道上有另一辆电车,并且电车上有很多人,此时你会怎么选择?
2.一辆失控的电车朝着一截废弃的车厢而去,此时你发现一个声名狼藉的女人(感觉这篇论文有性别歧视,坏人总是女性)站在变道开关(switch)旁边,试图把列车引向另一条轨道,这条轨道上有这很多工人。假定你是一名警察,你是跑过去阻止她可能已经来不及了,你是否会拔枪向她射击。
此时问题就来了,如果这个女的突然觉悟,放弃了这些罪恶的想法,你开枪射向她,是否合适?
另一种情况是,这个变道开关已经年久失修,这个女人根本不可能扳动,但是你并不知道这个情况,开枪是否合适?
3.让我们深入第二种情况,假定这个变道开关是一个全自动化的受程序控制的开关,写这个程序的代码的程序员就是这个女人(当初招聘时并未发现她的行为有什么不端),此时假如你是这个程序项目的主管,你如何判断这个程序是合乎逻辑和伦理的?
问题来了,你是否需要测试所有的情况,你能否创造出另一个程序来判断此开关程序的正确性?
是否觉得回到了停机问题上来了?
停机问题的定义:程序在给定数据下,是否会在有限时间内结束运行的问题。
聊以记录~