非圧縮性メソッドは、平均的なケースのアルゴリズムの分析を簡素化すると言われています。私が理解しているところによると、これは、そのアルゴリズムの可能な入力のすべての組み合わせを計算してから、平均的な複雑さを導き出す必要がないためです。代わりに、単一の非圧縮文字列が入力として使用されます。非圧縮文字列が一般的であるため、この入力は平均的なケースの正確な近似として機能できると想定できます。
非圧縮性メソッドを実際にアルゴリズムに適用することに夢中です。余談ですが、私は数学者ではありませんが、この理論は日常のプログラミングに実用的であると思います。
最終的に、特定のアルゴリズムの平凡なケースでも複雑なケースでも、平均的なケースを推定する方法を学びたいと思います。誰かがこの方法を単純なアルゴリズムにどのように適用できるかを私に実演していただけませんか?たとえば、入力文字列Sが与えられた場合、すべての一意の文字をSに格納し、それぞれを個別に出力します。
void uniqueChars(String s) {
char[] chars = chars[ s.length() ]
int free_idx = 0;
for (int i = 0; i < s.length(); i++) {
if (! s[i] in chars) {
chars[free_idx] = s[i]
free_idx++;
}
}
for (int i = 0; i < chars.length(); i++) {
print (chars[i])
}
}
配列に要素が含まれているかどうかを確認するための線形検索を想定します。
上記のコードスニペットは、説明のためだけのものです。もちろん、理論を実証できるより優れたアルゴリズムは許容されます。
私は2014年7月にStackOverflow(https://stackoverflow.com/q/24619383/3813812)でこの質問をしましたが、いくつかの役立つコメントを受け取りましたが、明確な回答は得られませんでした。コメントの1人が指摘したように、この質問はComputer Science StackExchangeに適しているため、本日ここで質問します。
私がレビューしたいくつかの文献は次のとおりです。
Ming LiとPaul MBVitányiによるコルモゴロフの複雑さとその応用の紹介
https://www.cs.duke.edu/~reif/courses/complectures/Li/KC-Lecture1.pdf
http://www.detectingdesign.com/PDF%20Files/Kolmogorov%20Complexity%202.pdf
手元にリンクがない他のいくつかのリソースの中で。
コルモゴロフの複雑さの適用可能性についての私の理解が不正確であるか、または私が尋ねることが非現実的である場合、私はその事実に関する声明をいただければ幸いです。