Durma durumu bilinmeyen çok kısa programlar nelerdir?


32

Binary Lambda Calculus'taki bu 579 bit program bilinmeyen durma durumuna sahiptir:

01001001000100010001000101100111101111001110010101000001110011101000000111001110
10010000011100111010000001110011101000000111001110100000000111000011100111110100
00101011000000000010111011100101011111000000111001011111101101011010000000100000
10000001011100000000001110010101010101010111100000011100101010110000000001110000
00000111100000000011110000000001100001010101100000001110000000110000000100000001
00000000010010111110111100000010101111110000001100000011100111110000101101101110
00110000101100010111001011111011110000001110010111111000011110011110011110101000
0010110101000011010

Yani, bu programın sonlandırılıp sonlandırılmadığı bilinmemektedir. Bunu belirlemek için Collatz varsayımını - veya en azından 2 ^ 256'ya kadar olan tüm numaralar için çözmelisiniz . Bu depoda , bu programın nasıl elde edildiğinin tam bir açıklaması vardır.

Halen bilinmeyen durma durumuna sahip (çok) daha kısa BLC programları var mı?


6
Çok ilgili bir soru . Topluluk oyları, lütfen: çoğalt?
Raphael

9
Böyle bir programı olabildiğince az bir bitle ifade etme görevi, Code Golf , daha az bilgisayar bilimi gibi görünüyor .
Raphael

2
Bence Ricky'nin 5 durumlu TM hakkındaki cevabının asıl sorudan daha iyi olduğunu düşünüyorum. Bu dupe olarak kapatılırsa, cevap taşınabilir mi?
David Richerby


6
Önemli bir ayrıntıyı kaçırıyorsunuz: programın hangi dilde yazması gerektiğini belirtmediniz. Örnekte ikili lambda hesabı kullanıyor - ilgilendiğiniz tek dil bu mu? Halen bilinmeyen durma durumuna sahip 1 bitlik bir program geliştirmenin önemsiz olduğunu görebiliriz, algoritmanın gövdesini doğrudan dilin içine yerleştirerek. Bu bir kaçamak, ancak bir golf çözümleri isterken dikkat etmeniz gerekiyor. Boşluklarını seviyorlar ! Kolmogov karmaşıklığı burada keşfedilmesi gereken önemli bir konu olabilir.
Cort Ammon - Monica

Yanıtlar:


30

Evet. Bu sayfa 98 5-devlet olduğunu söylüyor Turing makinası olan durdurulması durumları bilinmemektedir. Sinir bozucu bir şekilde, bu tür makinelere hiçbir örnek vermez, ancak bu 26 yaşındaki sayfa , o sırada durma durumları görünüşte bilinmeyen 2 durumlu Turing makineleri sunar. ("Basit sayaç" aranması sizi bu iki kişi arasında alacaktır.) Bağlantı kopması durumunda onları buraya kopyaladım:

Input Bit   Transition on State     Steps            Comment
             A   B   C   D   E

    0       B1L C1R D0R A1L H1L   > 2*(10^9)       ``chaotic''
    1       B1R E0L A0L D0R C0L

    0       B1L A0R C0R E1L B0L       ?        complex ``counter''
    1       A1R C0L D1L A0R H1L

Sayfanın en altında diyor: $ Tarih: 2007/11/03, sonra nasıl 26 yaşında?
Falaque

1
@Falaque Sayfanın en üst kısmı "Bu sayfa yazarın ... Şubat 1990 tarihli HTML kodudur." Metin HTML içine yorumuyla 2007 yılında (ya da en son güncelleme) dan, 26 yaşında
IMSoP

5

Collatz varsayımı:

Aşağıdaki program daima durur:

void function( ArbitraryInteger input){
     while( input > 1){
            if(input % 2 == 0)
                input /= 2;
            else
                input = (input*3) + 1;
     }

     // Halt here
}

Hafif çeşitlilik (hala bir varsayım, çünkü Collatz'ın sonucuna dayanıyor):

Bazı girdiler için aşağıdaki program asla iki kez aynı duruma girmez (burada durum "girdi" tarafından tutulan değer tarafından belirlenir):

void function( ArbitraryInteger input){
     while( input >= 1){ // notice the "="
            if(input % 2 == 0)
                input /= 2;
            else
                input = (input*3) + 1;
     }
}

İlk programın durup durmadığına bakılmaksızın, ikinci programın hiç durmadığını unutmayın.

İlk programın her zaman herhangi bir girdi için sonlandırıldığına inanılıyor, ancak bunun kanıtına sahip değiliz ve hala programın durmadığı bazı tamsayılar olabilir (bunun kanıtlanması için 100 dolarlık bir ödül de var) .

İkinci program da ilginçtir: bazı girdiler için programın hiçbir zaman iki kez aynı duruma girmeyeceğini belirtir; bu, temelde ilk programın tekrar etmeden birbirinden ayrıldığı bilinen bir sekansa sahip olmasını gerektirir. Sadece Collatz varsayımının yanlış olmasını gerektirmez , aynı zamanda açık 1,4,2,1 döngüsünden ayrı olarak yanlış ve döngüsiz olmasını gerektirir .

  • Collatz sadece döngü karşıt örneklere sahipse, varsayımdaki varyasyon yanlıştır

  • Collatz döngü olmadan yanlışsa, varsayımdaki varyasyon geçerlidir

  • Collatz doğruysa, varyasyon yanlış

  • Collatz hem döngüler olduğu hem de ayrıldığı bir sayıya sahip olması nedeniyle yanlışsa, varsayımdaki varyasyon geçerlidir (sadece bir döngüye girmeden ayrıldığı bir sayı gerektirir).

Varyasyonun daha ilginç olduğunu düşünüyorum (sadece kazayla bulduğum ve @LieuweVinkhuijzen sayesinde fark ettiğim için değil), ama aslında gerçek bir kanıt gerektirdiği için. Zorla zorlama ile, bir gün veya başka bir döngü bulabiliriz (ve bu 70 sayıdan daha uzun bir döngü olacaktır: mevcut durumun 68'den daha kısa sonsuz döngüler olmaması) ve kaba zorlama ilginç değildir: sadece sayı çatırtıdır. Bununla birlikte, sonsuz bir farklı diziyi kaba şekilde zorlayamayız, gerçek bir kanıt olmadan gerçekten bitip bitmeyeceğini bilmiyoruz.

EDIT: Collatz Conjecture ile ilgili kısmı atladığım için üzgünüm, birkaç yıl önce okuduğum bir algoritma ile gerçekten kalpten cevap verdim, daha önce bahsedilmesini beklemiyordum.

EDIT2: Bir yorum, algoritmayı yanlış yazdığımı fark etmemi sağladı, ancak bu hata aslında cevabımı Collatz varsayımından (ancak bunun doğrudan bir varyasyonundan) farklı kılıyor.


1
input > 1input >= 11421

Doğru, ben koymak istedim edilmektedir >biz durdurulması-lık bir kanıt yok olarak ile ancak sürece, >biz olamaz emin biz ulaşacak 1 -> 4 -> 2 -> 1için sona yoksa örnekte (döngü >o don' t reach >=)
GameDeveloper

1
> =14211421> =>

2
n<1n=1n4n>1n11

1
Bu doğru :) Haklısın, ilk yorumuma 'Collatz varsayımı doğruysa' eklemeliydim. Düzenini çok iyi görüyorum. İkinci programa ihtiyacınız yoktur, çünkü 'bu program asla aynı duruma iki defa girmez' varsayımı, ilk programdan da çözülür: sonsuza dek ayrılmayan, ancak bunun yerine sıkışıp kalmış bir sayı vardır. bir yerde çok fazla sayıda büyük halka.
Lieuwe Vinkhuijzen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.