测量比特序列复杂度的方法

时间:2015-06-19 20:27:20

标签: performance sequence complexity-theory computation computability

我正在寻找一种简单的方法来估计固定大小的位序列的复杂性(可能最大长度为10)。例如,我想0000000和111111根本不是很复杂,但101010和101101位于光谱的其他地方。

我知道Kolmogorov的复杂性是不可计算的,但它是否可以简单地编程为具有二进制字母表的固定(和小)长度的序列?或者是否有另一种措施可能只是接近度量,但更容易计算?

重要的是,这项措施应该相当简单,以便我可以向其他(虽然受过良好教育的)人解释。

感谢。

1 个答案:

答案 0 :(得分:1)

您需要有一个计算复杂性的程序,并且没有最佳程序。

例如,您可以对字符串进行运行编码,并计算运行次数。

您可以通过LZW压缩器(如ZIP)运行该字符串,并报告其压缩的大小。

您不必只选择一种方法。 您的方法可能是尝试五种不同的方法,并报告给您最小的方法。

例如,您可以尝试最初反转每个其他位,然后尝试运行编码。 或者尝试将第2位和第3位反转,然后反转第6位和第7位,依此类推。

这些是获得衡量标准的可行方法,但就是这样。

Kolmogorov复杂度是最小程序的大小,以位为单位,可以重现字符串,这取决于语言(无论是高级,汇编,机器或图灵机,还是驱动特殊程序的代码)你为此目的而创造的。)

你知道它存在是因为你知道有上限和下限。任何可以重现字符串的程序都会给你一个上限。你知道空程序不能,所以这给你一个零下限。所以它介于两者之间,但这并不意味着你可以找到它。

请记住,谈论一个字符串的复杂性并没有多大意义,因为测量工具可以针对该字符串进行优化。 你真的需要谈论一大堆字符串,只是为了让工具保持诚实。