質問

Kolmogorovの複雑さが特定の言語に対して計算可能かどうかを判断しようとしています。私はこの指定された言語が完全ではないことを確認しています。言語は次のように定義されています:

$ a; b \ text { - 命令aとbを実行した後、} $
$!x_i! \ text { - 変数} x_i \ text {値への} 2。$
$ \ {x_i \} \ text { - 変数の値を2倍にします} x_i $
$ [X_I] \ text { - 変数の値を半分にします} x_i \ text {およびそれをラウンドする。} $
$ "w" \ text { - 文字列を印刷する} w \ in \ {a、b、...、z、a、b ...、z} $
$ \ lambda(x_i、a)\ text { - 命令を実行します。} \ text {正確に} x_i \ text {後の変更に関係なく、} x_i $ < / P>

具体的には、この言語に対するKolmogorovの複雑さが一般的に計算可能かどうかを知る必要があります。この複雑さを計算するプログラムは、チューリング完全な言語で書くことができます。

私は、任意のチューリング完全な言語では、Kolmogorovの複雑さは計算不可能であることを理解しています。ここでのこの言語は、それがインデックスループを作成する機能を欠いています、そしてそれ自体がチューリング完了よりも小さいです。私はこの観察から発生した直感を感じていません。私は、この言語が弱く、コルモゴロフの複雑さが今計算可能であると仮定します。それでも私はこれの証明を見つけることができません。このタスクを満たすアルゴリズムを与えると、過度に複雑になります。この言語の使用は、Kolmogorovの複雑さのより一般的な計算性の特別な場合と同様であり、そのため一般的なケースが計算不可能な場合は一般的なケースの属性から派生することはできません。これはまだあるかもしれません。

この問題を抱えて立ち上げて地面を見つけていないため、解決策への先端やポインタを歓迎します。私たちがこれまでに述べたものよりこの言語から他に何かを推測できますか?チューリング完了言語と比較してそれは低い電力ですかこの状況で私たちを助けますか?

役に立ちましたか?

解決

気づくべき重要なことは、プログラムが常に停止することです。これにより、文字列 $ W $ が与えられるので、Kolmogorovの複雑さのコンピューティングは簡単な作業を行います。 > $ \ le | w | + 2 $ 出力が $ w $ の最短プログラムを見つけます。上限 $ | w | +2 $ は、任意の文字列 $ w $ の場合、 "W"は、出力が $ w $ です。

実際には、圧縮が繰り返しの場合にのみ可能であるため、多項式時に文字列の複雑さを計算することができます(より一般的な構造を利用できません)。次の行に沿って何かが $ kc(w_1 ... w_n)=min \ limits_i \ big(kc \ left(w_ {i + 1} ... w_n | w_i \ right)+ kc(w_1 ... w_i)\ big)$ 。ここで、 $ kc \左(w | w | w | w '\ right)$ $ kc(w)$ の場合 $ w '$ $ w $ 、および $ kc(w '')+ o(\ log j)$ $ W= w '^ jw' '' $ $ j $ はこれを満たす最大数です。この点は、 $ w $ のサブストリングの複雑さを計算する必要があるため、 $ O(| | w | ^ 2)$

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top