Dot-Net

如何測量字元串的複雜度?

  • August 24, 2012

我有幾個長字元串(~ 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

Q我可以使用什麼樣的度量來量化這些字元串的複雜性?我可以看到 S1 沒有 S3 複雜,但我怎樣才能從 .NET 以程式方式做到這一點?任何算法或指向工具/文獻將不勝感激。

編輯

我嘗試了香農熵,但結果證明它對我來說並不是真的有用。對於這些序列AAABBBCCCABCABCABC以及ACCCBABABBBACCABAC我將具有相同的H值


這就是我最終做的

使用 zip 等標準技術壓縮字元串可以很好地表明復雜性。

良好的壓縮率 ≈ 較低的複雜度

較差的壓縮率 ≈ 較高的複雜度

引用自:https://stackoverflow.com/questions/6084402