我有一些长串(~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
答案 0 :(得分:11)
使用zip等标准技术压缩字符串可以很好地指示复杂性。
良好的压缩率≈低复杂度 压缩率不好≈更高的复杂度