Dot-Net
如何測量字元串的複雜度?
我有幾個長字元串(~ 1.000.000 個字元)。每個字元串僅包含定義的字母表中的符號,例如
A = {1,2,3}範例字元串
string S1 = "1111111111 ..."; //[meta complexity] = 0 string S2 = "1111222333 ..."; //[meta complexity] = 10 string S3 = "1213323133 ..."; //[meta complexity] = 100Q我可以使用什麼樣的度量來量化這些字元串的複雜性?我可以看到 S1 沒有 S3 複雜,但我怎樣才能從 .NET 以程式方式做到這一點?任何算法或指向工具/文獻將不勝感激。
編輯
我嘗試了香農熵,但結果證明它對我來說並不是真的有用。對於這些序列AAABBBCCC和ABCABCABC以及ACCCBABAB和BBACCABAC我將具有相同的H值
使用 zip 等標準技術壓縮字元串可以很好地表明復雜性。
良好的壓縮率 ≈ 較低的複雜度
較差的壓縮率 ≈ 較高的複雜度