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