有人在讨论中提出(他认为)至少可以有连续数量的策略来解决特定问题。具体的问题是交易策略(不是算法而是策略),但是我认为这不是我要问的重点。
这让我开始思考算法集的基数。我一直在搜索,但是什么也没想出来。我一直在想,由于图灵机使用有限的字母集运行,并且磁带必须是可索引的,因此可数,所以不可能有无数的算法。我的集合论无疑是生疏的,因此我不确定我的推理是完全正确的,而且我可能无法证明这一点,但这是一个有趣的想法。
这套算法的基数是什么?
有人在讨论中提出(他认为)至少可以有连续数量的策略来解决特定问题。具体的问题是交易策略(不是算法而是策略),但是我认为这不是我要问的重点。
这让我开始思考算法集的基数。我一直在搜索,但是什么也没想出来。我一直在想,由于图灵机使用有限的字母集运行,并且磁带必须是可索引的,因此可数,所以不可能有无数的算法。我的集合论无疑是生疏的,因此我不确定我的推理是完全正确的,而且我可能无法证明这一点,但这是一个有趣的想法。
这套算法的基数是什么?
Answers:
非正式地将算法描述为用于完成某些任务的书面指令的有限序列。更正式地说,它们被识别为图灵机,尽管您同样可以将它们描述为计算机程序。
您使用的精确形式并不重要,但基本要点是每种算法都可以记为有限的字符序列,其中的字符是从一些有限的集合中选择的,例如罗马字母,ASCII或零和一。为了简单起见,我们假设零和一。任何零和一的序列都只是用二进制写的自然数。这意味着最多有无穷多个算法,因为每种算法都可以表示为自然数。
为了获得满分,您应该担心某些自然数可能无法编写有效的程序,因此算法可能少于自然数。但是,(对于奖金积分,你也可能会想,如果有可能的是两个不同的自然数代表相同的算法)print 1
,print 2
,print 3
等都是算法和各不相同,所以有至少可数无限多的算法。
因此,我们得出结论,算法集是无限的。
该算法集是无限的。这是因为每种算法都有一个有限的描述,例如图灵机。
一种算法具有有限描述的事实使我们可以将一种算法输入另一种算法,这是可计算性理论的基础。例如,它使我们能够制定暂停问题。
至少解决特定问题的连续策略数量
“连续谱”可能应该表示实数……在顶部使用“至少”和该词是荒谬的。有点口口相传:无数个无限大是相当大的,但无数个无限大是……大于大。更是如此。难以置信。
因此,让我们把它丢到窗外。看看我们正在处理哪种无限是非常简单的(而且直观,即使您的朋友从未听说过任何理论计算机科学):
具体问题是交易策略(不是算法而是策略)
我不知道你的朋友对“战略”意味着什么;我认为他的意思有点像算法,但不够详细,无法将其破解到计算机中?还是在执行过程中某种程度上取决于人类的“直觉”?如果是这样,那么这些只是无关紧要的细节。就我们在CS中使用的意义而言,人类还没有找到对过程的描述比“算法”更强大或更强大的描述。
如果我们将算法视为用二进制*编写的计算机程序,那么算法的数量就是(整数)二进制数的数量。因此,算法的基数就是整数的基数。
*证明图灵机可以运行所有算法,并且计算机可以运行任何程序图灵机的证据,将使答案不必要地冗长。前者可能取决于算法的定义,但我不认为您使用的是无可争议的交易策略。
其他答案已经说明,在标准计算模型(Turing Machines,Lambda Calculus等)中,算法集是无穷的。
但是,还有其他一些理论计算模型,其中算法集是无限的。例如,Blum–Shub–Smale机器具有无穷无穷的指令集1,因此它们的算法集也无穷无穷的无限。
由于图灵机使用一组有限的字母进行操作,并且磁带必须是可索引的,因此可数
给定特定的尺寸,图灵机数量有限,并且尺寸也很多。只要是有限的,一组可数的数字都是可数的。字母的大小是图灵机数量的一个因素,但是磁带的大小不是。如果允许字母具有许多字符,那么将有无数的机器(每个实数都可以编码为符号序列)。