如何衡量字符串的复杂性?

时间:2011-05-21 20:55:49

标签: .net algorithm string complexity-theory approximation

我有一些长串(~1.000.000个字符)。每个字符串仅包含定义字母表中的符号,例如

A = {1,2,3}

示例字符串

string S1 = "1111111111 ..."; //[meta complexity] = 0
string S2 = "1111222333 ..."; //[meta complexity] = 10
string S3 = "1213323133 ..."; //[meta complexity] = 100

我可以使用哪种措施来量化这些字符串的复杂性?我可以看到S1没有S3那么复杂,但我怎么能以编程方式从.NET做到这一点?任何算法或指向工具/文献的人都将不胜感激。

修改

我尝试过Shannon熵,但事实证明它对我来说并不是真的有用。对于 AAABBBCCC ABCABCABC ACCCBABAB 以及 BBACCABAC ,我将具有相同的 H 值强>

<小时/> This is what I ended up doing

1 个答案:

答案 0 :(得分:11)

使用zip等标准技术压缩字符串可以很好地指示复杂性。

良好的压缩率≈低复杂度 压缩率不好≈更高的复杂度