可数字符串是否总是可数?

时间:2018-09-29 11:13:39

标签: automata

  • 为什么有些集合是可数的而有些是不可数的?说常规集是可数的,但是(0 + 1)*将如何可数?它是一个无限的字符串,那么怎么可能是一个可数的集合?
  • 从N到N的所有非递减函数的集合如何计数?
  • N的所有有限分区的集合如何不可数?

1 个答案:

答案 0 :(得分:0)

首先让我们清除一个常见的误解:(0+1)*不是无限字符串。这是一种无限数量的有限字符串的语言。区别很重要:语言中给定的任何字符串都是有限的,但是它们的数目是无限的。

L=(0+1)*的意思是L={'', '0', '1', '00', '01', '10', '11', etc}。这也说明了如何列出一种语言,如果您列出所有长度为0,然后为1,然后为2,等等的单词,则该语言中的每个单词在此集合中都有位置,并且可以映射到自然数。

所有常规语言都是可数的单词集。有限的语言微不足道。无限语言是可数的,因为可以遍历相应的DFA,以有序的方式枚举整个语言,从而允许将所有字符串映射到自然数。

另外两个问题通常是数学而非计算机科学。这应该有所帮助:https://math.stackexchange.com/questions/1396896/number-of-non-decreasing-functions。对于最后一个问题,这可能会有所帮助:https://en.wikipedia.org/wiki/Cantor%27s_theorem