一些程序员认为理论CS课程(特别是我的学生)并没有多大意义。这是我发现非常相关的东西。让我为那些以前没见过的人建造它们......
A)编程问题可以重写为有关语言的问题。
B)图灵机识别语言。
C)图灵机可以编码为(大)整数。
D)因此,可能的图灵机的数量是无穷无尽的
E)集合的幂集只是该集合的所有可能子集。
F)如果一个集合是无穷无尽的,它的功率集更大,即无数无限。
G)因此,如果一种语言是无限的,它就有无数无数的子集。这些都代表了一个问题。但是,只有很多图灵机可以解决这些问题。如果我们用图灵机无法解决问题,就无法解决。
结论......我们只能解决所有问题的无限小部分。
我的问题几乎就在这里......
每当我向学生提出这个论点时,他们就会陷入可数与无数无限之间。他们通常没有很强的数学背景,所以试图通过康托尔的对角化论证来解释他们的眼睛会釉。
通常我试着给他们一些他们可以抓住的东西,比如这样......在计数数字线的任何部分放置一个有限的盒子,我们捕获有限数量的那些数字......但是在有限的数量上放置一个有限的盒子。实数行,我们捕获无限数量的实数。有证据表明存在的实数比计数数字多。
最后我的问题......你如何向那些从未听说过这个概念的人解释多层无穷大的概念,而且可能不是数学倾向的?
最终编辑:我通过提出这个问题了解了很多,并且我很感激反馈。我浪费了太多时间试图找出“社区维基”究竟是什么。我了解到,有些人反对理论问题存在固有的偏见,我认为这只是一个错误,因为我们今天做的很多事情都是昨天的理论。但这种偏见是自然的,虽然我不同意理论的价值,但我对它没有任何问题,这有助于我理解我的学生来自哪里。我认为BS评论是不必要的。
我觉得这个问题根本不是民意调查或2009年的问题。那些只想要编码问题和编码答案的人可能想重新审视这个要求。我已将此问题移至社区维基,但强烈认为我不得不通过不当使用武力来这样做。
我认为你的解释是最简单的,因为这就是我所学到的。这几乎就像实数具有多个无穷大维度一样。它在一个方向上是无限的,但在另一个方向上也是如此
对角化是一个非常酷的实验,但我可以看到它可能会超过初学者的头脑。它确实有意义,如果以非常慎重的方式展示,那么进展非常缓慢。我想,快速抛出数字可能很难实现。
我认为的原则 连续体的基数 也很有用,虽然也许可以简化到初学者水平。表明除了简单的真实与整数之外还有更多可能有助于“点击”的东西。
我建议向有限数学背景的人教授无限级别的第一步是“为什么数学家说偶数和一组整数都是相同的大小?”这引入了“如果你可以将集合A的每个成员与集合B中的一个成员完全关联,那么数学家就说这些集合具有相同的大小。”接下来显示使用对角线方法可以将每个分数(每个有理数)与一个计数数相关联。一旦他们对此感到满意,我就会调出π,每个人都知道它的十进制表达式中有无数个非重复数字,这意味着它不能表示为分数,因此它将被遗留,这意味着无理数集合大于计数数字集合。如果你在基数π中工作,一些明智的人会反对π具有有限数字的数字,即1π,但你可以回答他们“好吧,brainiac,记下一周内基数π的天数。”
哪个是“非常相关”的部分?
编辑: 好吧,我已经专业编写了13年的代码,我不会把无限级别称为与我曾经做过的任何事情相关的无限级别。
我想我会从你的理论中得出一个不同的结论。如何“我们只能解决所有问题的无限小部分”我们的技术极限?
对我来说听起来像是无数(可数或不可数似乎没有什么区别)问题的数量。因此我们的工艺是无限的 - 我们永远不会遇到问题需要解决。
英语中有几万个单词。您可以计算书中的单词数或Universe中的书数。你无法计算将要出现的书籍数量
原谅下面写得不好的比喻。
我个人认为可数性/不可数性二分法与芝诺的箭头悖论密切相关。
所有自然数的集合都是可数的,有一种生成“下一个”整数的特定方法,它会让你向前迈进一步。在这个意义上,可数集是向前移动的。它几乎就像它有一个 速度它继续向前发展。
所有实数的集合都是不可数的,比如 zeno的箭头。
如果你必须在原点(0)和目的地之间移动(1 == 2-0),你必须首先通过中点(1/2 == 2-1)。
现在你的目的地是1/2;如果必须在原点(0)和(1/2)之间移动,则必须经过中点(1/4 == 2)-2)
所以等等,所以要介于0和1之间,你必须首先介于两者之间的某个东西之间,你必须先介于两者之间。没有有限的方法来计算“下一步”,所以 速度 (与自然数的速度相反)并不存在,你的下一步不会带你到任何地方。
编辑:
我现在意识到这可能与自然数集的总排序和映射到任何可数集都有关。 如果你不能完全订购集合中的项目,或者你不能创建一个方法来确定集合中的下一个项目,那么它很可能是不可数的。
G)因此,如果一种语言是无限的,它就有无数无数的子集。 这些都代表了一个问题。
引文需要。你不能仅仅假设任何(可能是无限的)图灵机必然代表一个独特的“问题”。至少,你必须(单独)将“问题”的定义正式化,就像图灵机正式化一样。
程序员(或者至少是我自己)通常不必以这种方式担心无限。当你在一个有限的盒子上放置一个有限的盒子 机器可表示 实数行你得到一个 有限 实数的数量。 =)
例如,a 双精度变量 具有有限数量的可能值:2 ^ 64。
这是一个可计算问题的例子:在国际象棋比赛开始时,白方是否有可能取得胜利?
可能的移动和反向移动的数量是有限的。我们所要做的就是建造树木并修剪它们。我们还没有这样做,只是因为目前的技术需要数十亿年。
以下是无法计算的问题示例:给定场景的二维视图,构建场景的完整三维模型。
我们一直这样做。 (在门上设一个带窥视孔的房间。有人提供它。透过洞洞来描述你看到的一切。)
我们不计算不可计算的。我们产生一个近似结果(就像我们计算和使用pi的近似值,另一个不可计算的数字)。随着更多信息的出现,我们不断更新结果。这就是视错觉的全部内容。当你看到“一个花瓶,或者它是两个面孔?”的图片时。你的视觉系统说:“这是一个花瓶。不。等等。这是两张脸。不。等等。这是一个花瓶。”你看到它在两种解释之间来回切换。
仅仅因为某些东西不可计算是没有理由不这样做的。
结论......我们只能解决所有问题的无限小部分。
你必须是网页设计师。