コルモゴロフ非圧縮性法を使用した平均ケースアルゴリズム分析


8

非圧縮性メソッドは、平均的なケースのアルゴリズムの分析を簡素化すると言われています。私が理解しているところによると、これは、そのアルゴリズムの可能な入力のすべての組み合わせを計算してから、平均的な複雑さを導き出す必要がないためです。代わりに、単一の非圧縮文字列が入力として使用されます。非圧縮文字列が一般的であるため、この入力は平均的なケースの正確な近似として機能できると想定できます。

非圧縮性メソッドを実際にアルゴリズムに適用することに夢中です。余談ですが、私は数学者ではありませんが、この理論は日常のプログラミングに実用的であると思います。

最終的に、特定のアルゴリズムの平凡なケースでも複雑なケースでも、平均的なケースを推定する方法を学びたいと思います。誰かがこの方法を単純なアルゴリズムにどのように適用できるかを私に実演していただけませんか?たとえば、入力文字列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に適しているため、本日ここで質問します。

私がレビューしたいくつかの文献は次のとおりです。

  1. Ming LiとPaul MBVitányiによるコルモゴロフの複雑さとその応用の紹介

  2. https://www.cs.duke.edu/~reif/courses/complectures/Li/KC-Lecture1.pdf

  3. http://www.detectingdesign.com/PDF%20Files/Kolmogorov%20Complexity%202.pdf

手元にリンクがない他のいくつかのリソースの中で。

コルモゴロフの複雑さの適用可能性についての私の理解が不正確であるか、または私が尋ねることが非現実的である場合、私はその事実に関する声明をいただければ幸いです。


それはいくつかのケースを分析することをより簡単にするかもしれませんが、それがまだ簡単であるとは言いません。最も良い例の1つは、無限に多くの素数があることを証明することです。このメソッドを特定の興味深いアルゴリズムに適用することは、私の経験から、研究論文に値する傾向があります。
Juho

回答:


4

kαk/2αkαkk8αk+klogαk8αk+klog2αk8kkαk256128kk

Θ(n)αk


すばらしい回答をありがとう、ユヴァル。非圧縮性の方法が確率論的分析の直接的な代替品として機能する可能性があるという誤った印象の下にありました。あなたの回答とJuhoのコメントは、場合によっては分析を単純化することしかできないことを強調するために重要だと思います。
user3813812 14

1

受け入れられた回答に関する追加のコメントとして(ただし、実際のコメントより少し長い):

  1. Kolmogorov Complexity(またはAlgorithmic Complexity)は、「文字列」の最適な記述を扱います記号のシーケンスとして文字列の一般的な意味で)

  2. 文字列は、その(アルゴリズム的)記述(kolmogorov複雑度K)が(リテラル)サイズ以上の場合、(十分に)非圧縮性または(十分に)アルゴリズム的にランダムです。つまり、文字列の最適な説明は、文字列そのものです。

  3. 理論の主な結果は、ほとんどの文字列が(アルゴリズム的に)ランダム(または典型的)であることです(これは、Chaitinの研究を通じて、Goedelの定理などの他の領域にも関連しています)。

  4. コルモゴロフの複雑性確率論的(またはシャノン)エントロピーに関連しています。実際、エントロピーはKCの上限です。そして、これは記述的な複雑さに基づく分析を確率論に基づく分析に関連付けます。それらは交換可能です。

  5. 場合によっては、確率論的分析を使用する方が簡単かもしれません。

したがって、上記に照らして、アルゴリズムへのアルゴリズム的にランダムな入力を想定すると、次のようになります。

  1. 入力は標準的なものであるため、分析は平均的なケースのシナリオを記述します(上記のポイント3)
  2. 入力サイズは一定の方法でその確率に関連しています(上記のポイント2)
  3. アルゴリズム的視点から確率的視点に移ることができる(上記のポイント4)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.