Çok fazla ayrıntı verdiğim için şimdiden özür dilerim, ama insanlarla çelişmek üzereyim.
Hakkında K(x)≤K′(x)+c
Aslında genellikle gelen tercüman açıklama dili 1. ve içine açıklama dili # 2 değil # 1 programlara # 2'nin programlarından bir çevirisinden.K1(x)≤K2(x)+c
Örneğin ve bu eşitsizliği şu şekilde elde edersiniz:KC(x)≤KPython(x)+cpy2c
void py_run(char * s) {
// code of your Python interpreter
}
int main(void) {
py_run("Put here your Python program of size Kpython(x)");
}
Sonra sürekli gibi bir şey olacak 528 + 490240688 528 bu kodu bit ve sayısıdır 490240688 bit yalnızca olası içinde ne yorumlamak gerekir Tabii ki resmi Python yorumlayıcısı C ile yazılmış boyutudur 69 MB'den daha iyi yapabilmeniz için Python için açıklama dilinizi yazın :-)cpy2c528+490240688528490240688
Önemli olan Python programınızı doğrusal olarak C kodunuza yazabilmenizdir . Örneğin, her karakter arasına "BANANA" koymanız gereken bir dil çok iyi bir açıklama programı değildir ve özellik yanlıştır. (Ancak açıklama dili size ayrı bir dosyaya veya bir bloğa veri yazma yetkisi verirse, bu sorun kaybolur)
neden kusurlu?K1(x)=q
tanımınızla ilgili sorun, geçişleri kodlamanız gerektiğinden q durumlu bir Turing makinesini tanımlamak için q bitten fazlasına ihtiyacınız olabilir .K1qq
Hiçbir Yani ve K 2 muhtemelen eşdeğer değildir, ancak esas olarak, K 1 'in hatası. Hepimizin için ispat düşünüyorum a > 0 bir var c bir şekilde K 1 ( x ) ≤ a | x | + c a . Tabii ki, herhangi bir < 1 , K 1'in geçerli bir fonksiyon olmadığı gerçeğini kanıtlamak için yeterlidir , çünkü bu, 2 n olası uzunluk dizesinin tümünü daha fazla kodlayabileceğimiz anlamına gelir.K1K2K1a>0caK1(x)≤a|x|+caa<1K12n içine bir n + c bir bit.nan+ca
Ancak Turing makineleri inşa ederken boyut inanılmaz derecede sıkı bir sınır. Fikir, bir durum bloğunda, her bir durum için geçişleri bulmanın b 2 b yolları olduğu ve b bitlerini doldurabileceğiniz normal 2 b yollarından daha iyi olmasıdır . Sonra her blok içinde saklayabilirsiniz günlüğü 2 b bilgilerinin bit. ( 2 log 2 b değil, çünkü bloğu bir şekilde girip çıkarmanız gerekir)bb2b2bblog2b2log2b
Yani evet ... büyüklüğündeki bloklarla muhtemelen K 1 ( x ) ≤ a | x | + c a . Ama zaten devlet sayısının neden geçerli bir Kolmogorov karmaşıklık fonksiyonu olmadığı hakkında çok fazla yazdım. Eğer detaylandırmamı istiyorsan, yapacağım.21/aK1(x)≤a|x|+ca
Şimdi K2
Saf tanımlayıcı dil kabaca (yani her bir sonraki durum için log 2 q ve yazma ve sonlandırma ile ilgili ayrıntılar).K2(x)=q⋅2⋅(log2q+2)log2q
Eğer gibi görünüyor, ben, belki bir devlet ise olmadığını söylüyor açıklama dilinde bir ikili etiketi ekleyerek daha iyi / dolandırıcı yolu encode Turing makinesinin içine "veri" yetkilendirmek olacağını ikna ediyorum veri devlet ( sadece biraz yazar ve bir sonraki duruma gider) veya başka bir şey yaparsa. Bu şekilde size bir bit depolayabilir Açıklayıcı dil biri birazdan.x
Ancak aynı tutarsanız, birkaç bit kaydetmek için önceki bölümde kullandığım tekniği kullanabilirsiniz, ancak K 2 ( x ) ≤ a | x | günlüğü | x | + c (herhangi bir a > 0 için ) .. belki günlükten daha az | x | , hatta, ama O ( | x | ) elde etmek zor görünüyor. (Ve ben olması gerektiği bekliyoruz | x | , hatta Ç ( |K2K2(x)≤a|x|log|x|+ca>0log|x|O(|x|)|x| .)O(|x|)