我正在读一篇关于topcoder的大博符号的博客。 https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/
我遇到过以下段落
有关输入尺寸的正式说明
这究竟是什么"输入大小"我们开始谈论?在里面 正式定义这是一些输入写入的大小 固定有限字母表(至少2"字母")。为了我们的需要,我们 可以认为这个字母是数字0..255。然后是"输入 大小"结果是输入文件的大小(以字节为单位)。
任何人都可以解释一下这句话的内容吗?
是一些写入的输入大小 固定有限字母表(至少2"字母")。为了我们的需要,我们 可以认为这个字母是数字0..255。
答案 0 :(得分:0)
该陈述是关于使用符号的信息的基本表示。您使用的符号越多(字母表越大),您可以用较少的字符表示的信息越多,尽管您可以用两个"字母"表示所有内容,即每个字符一位信息。使用数字0..255相当于使用8位,即一个字节(2 ^ 8 = 256)。
在计算机编程中,您通常使用字节,但在理论上使用计算机科学位,因为它们具有相同的功能(您只需要更多功能)并且它使证明更容易编写。
答案 1 :(得分:0)
此声明表示以下内容。您必须表示输入以通过算法处理它,即您必须“将其写下来”。您可以使用字母(=符号)向下写入输入。符号的数量必须是有限的(否则你或算法无法理解它),即它们来自固定有限字母(=可能符号集)。输入的大小是你用来写下输入的字母数。
在文中提到的例子中写道,字母表包含0到255之间的数字。这意味着每个字母都可以用ASCII字符书写。因此,您可以使用ASCII字符记下输入。每个ASCII字符可以存储在一个字节中,即输入的大小(= ASCII字符数)是字节数。
答案 2 :(得分:0)
让我举例说明。
让我们假设分解(子)问题:给定数字n
(不是素数),找到与1
和n
不同的任何除数。显然,我们需要检查最多sqrt(n)
个数字才能找到一个。因此,它似乎是一个次多项式问题。为什么它被认为是一个难以破解的呢?那是因为我们通常只需要log(n)
个数字来记下n
,我们自然希望解决“易于写下”的问题。但是,与sqrt(n)
相比,虽然n
看起来有点小,但与log(n)
相比,它对我们来说太过分了。
这就是为什么在谈论问题的复杂性之前我们需要对“输入字母表”说一句话。