📜  为什么自然数集不可判定?(1)

📅  最后修改于: 2023-12-03 15:21:37.566000             🧑  作者: Mango

为什么自然数集不可判定?

在计算机科学中,判定问题指的是一个问题可以通过“是”或“否”的答案来回答。自然数集就是一个由所有正整数构成的无穷集合,其符号化表示为N={1,2,3,……}。然而,自然数集不可判定,这意味着没有算法可以判定一个给定的自然数是否在N中。

前置知识:可判定性问题

在谈论为什么自然数集不可判定之前,我们需要先了解可判定性问题。在计算机科学中,可判定性问题指的是可以构造一个算法来解决问题的问题。也就是说,可以通过有限次操作构造一个机器来解决问题。一些经典的可判定性问题包括停机问题和可满足性问题。

自然数集的不可判定性证明

证明自然数集是不可判定的最常见方法是采用对角线法。假设有一种算法A,可以判定任意一个自然数是否在N中。我们可以使用对角线法来找到一个自然数,它对于算法A来说无法判定属于N还是不属于N。

具体来说,我们可以将自然数按顺序排列,形成一个二维的表格。然后,对于每一个自然数,我们可以将它的二进制表示的每一位作为一行,按顺序排列。例如:

| |位1|位2|位3|位4|...| |-|-|--|--|--|---| |1|0|0|0|0|...| |2|0|1|0|0|...| |3|1|1|0|0|...| |4|0|0|1|0|...| |5|1|0|1|0|...| |6|0|1|1|0|...| |7|1|1|1|0|...| |8|0|0|0|1|...| |...|...|...|...|...|...|

接下来,我们将对角线上的数字取反,例如第1位如果是0,则变成1,如果是1,则变成0。然后,我们把这些数字拼接在一起,得到一个二进制数。例如,在上表中,对角线上的数字是0,1,0,1,1,0,1,0,...,因此我们得到的二进制数是01011010...。

现在,我们将这个二进制数作为输入,让算法A判断它是否在N中。如果算法A返回“是”,则说明这个二进制数在N中。然而,这与我们的构造矛盾,因为这个数不在表格中出现过。如果算法A返回“否”,则说明这个二进制数不在N中。然而,这也与我们的构造矛盾,因为这个数必须在表格中出现过。因此,我们得出结论:算法A无法判定一个给定的自然数是否在N中。

总结

自然数集不可判定是一个重要的结论,这意味着我们无法构造一个算法来解决它。这是通过对角线法证明的,这种方法也可以用来证明其他无限集合的不可判定性。了解这个结论可以帮助我们更好地理解计算机科学中的可判定性问题和不可判定性问题。