İki sayaçlı otomata hakkında varsayım


19

Aşağıdaki varsayımı kanıtlamak (veya çürütmek) istiyorum:

Varsayım : Bir iki karşıt otomata (2CA) Aşağıdaki dilini karar veremez:

L={n üçlü ve ikili gösterimler da uzunluk veya tek bir uzunlukta hem de sahip}n}

2CA, ikili gösterimin eşit veya tek bir uzunluğa sahip olup olmadığını kolayca kontrol edebilir (sadece ikiye bölünmeye devam edin ve her bölümden sonra bir "çift uzunluk" bayrağı güncelleyin); aynı şekilde üçlü gösterimin eşit veya tek bir uzunluğa sahip olup olmadığını kontrol edebilir (sadece üçe bölünmeye devam edin ve her bölümden sonra bir "çift uzunluk" bayrağı güncelleyin).

Ancak bunlardan birini hesaplamak için girdisini yok etmeli ve diğerini hesaplamak için kurtaramaz; bu yüzden ye karar vermenin bir yolu yok gibi görünüyor .L

Varsayımı kanıtlamak için kullanılabilecek bir teknik biliyor musunuz?
Ya da karar veren bir 2CA varsayımını çürütür müsünüz ? L

2CA'nın karar veremediğini{n2n1} kanıtlamak için Ibarra'nın izlediği aynı yaklaşımı denedim , ama doğru görünmüyor.

Not : basitlik için 2CA, başlangıçta girişi ve aşağıdaki komut setini içeren bir değişken sahip bir programa eşdeğerdir :c

  • INC : değişkene bir tane ekleyin;
  • DEC : azaltma (yalnızca sıfırdan büyükse);c
  • JZ lab : sıfırsa etiket atlayın, aksi takdirde devam edin;l a bclab
  • MULK : kostant çarpın ;KcK
  • DIVK[,lab0,lab1,...,labK1] : sabitini sabitine bölün ve bölümü ( ) olarak ; geri kalanına göre muhtemelen farklı etiketlere atlamak ( );cKcc=c/KcmodK
  • GOTO lab : koşulsuz atlama;
  • HALT Kabul Et | Reddet : durdur ve kabul et veya durdur ve reddet.

Örneğin, n'nin ikili gösteriminin neşit uzunlukta olup olmadığını kontrol etmek için bir program :

   loop: JZ even   // test if n = 0
         DIV 2
         JZ odd    // test if n = 0
         DIV 2
         GOTO loop
   even: HALT Accept
    odd: HALT Reject

(eşdeğer bir 2CA oluşturabiliriz)


2
Ben imkansızlık deliller nasıl gideceğini biliyorum, ama yok { | üçlü gösterimi tek bir uzunlukta} durumda olan girişinizi sadece asal çarpanları bildiği ne zaman n burada (senin üslerin tedavi edebilir, çünkü çözülebilir ) simüle edilmiş bir otomattaki sayaçlar olarak (fazladan primerlerle simüle edilmiş) istediğiniz kadar sayaç, böylece Turing tamamlandı. 2 n2n2n
Ørjan Johansen

2
Size bazı "kod" e-postayla gönderdi ve ayrıca başka birinin izlemesi durumunda web siteme koydu .
Ørjan Johansen

1
@joro Açıkladığım yöntemin katı bir sınırlaması var: girdinin yalnızca son derece çok sayıda asal faktörünü işleyebilir (kalanın 0 olup olmadığını test etmek hariç). Sorun genel problemde, tüm asalın üslerinin faktör sayısı. Aslında hesaplayabilir ya da veya parite kadar, ancak bildiğim kadarıyla, genel bir giriş karşılaştırmak için bir yolu yoktur veya yüzden, süreç içinde onu yok olmadan bu test yapamaz diğer sonradan bir. Şu anki önsezim, genel sorunun 2CA ile çözülememesidir. k2 k 3 mm2k3m
Ørjan Johansen

1
@ ØrjanJohansen: vzn ile aynı fikirdeyim: İsterseniz, çözümü daha basit bir soruna (ödüllü değere :-) ve asıl soruna hızla girmek isteyenlere yardımcı olabilir) çözüm ile cevap gönderebilirsiniz. Ayrıca , Ibarra'nın yaklaşımının genel sorun için neden başarısız olduğunu ve daha basit versiyonun çözümünün neden genel sorun için başarısız olduğunu ÇOK kısaca not edebilirsiniz (yorumu kopyalayın-joro'ya yapıştırın).
Marzio De Biasi

1
Teşekkür! Bu problemdeki tüm ilgiyi / aktiviteyi görmek harika / nadirdir. Bu sorunla ilgili birkaç yorum / soru
vzn

Yanıtlar:


11

Bu yüzden insanlar sadece sorunun basitleştirilmiş bir versiyonunu çözmesine rağmen beni bu mesajı göndermeye devam ediyor. Tamam o zaman :)

Bunun sonunda, Ibarra ve Trân'ın makalesinden öğrendiklerimin bazılarını ve bu yöntemin neden genel sorunumuzu bozduğunu, ancak belki de bazı yararlı bilgiler vereceğim .

Ama önce, sete karar vermeye çalışmanın daha basit problemine bakacağız

2 n }L={2n üçlü ve ikili çarpımını da uzunluk veya tek bir uzunlukta hem de sahip2n}

Bunun orijinal gibi yerine unutmayın . Özellikle giriş numarası 2'nin gücü değilse , herhangi bir bazdaki uzunluğunu hesaplamak yerine onu reddetmek istiyoruz. n2nn

Bu büyük ölçüde konularda kolaylaştırır: Orijinal sayı yazılmışsa asal olarak factorized sonra herkes için hariç biz sadece çek gerek hepsi .v i v 2 02v23v35v57v7...viv20

Bu, bu basitleştirilmiş problemi , bir çarpma / bölme otomatının tek değişkeninin asal çarpanlarına ayırma işlemlerinde -sayıcı otomatının durumunu kodlamak için eski yöntemin etrafına bir sarıcı kullanarak (Minsky I varsayıyorum) çözmemizi sağlar , yukarıdaki OP'de belirtildiği gibi, 2 sayaçlı bir otomatla eşdeğerdir.k

İlk olarak, sarmak için bir -sayıcı otomatına ihtiyacımız var . , ve adında 3 sayaç .v 2 v 3 v 5kv2v3v5

Otomat ilk sayaç değerleri için IFF kabul edecek, üçlü ve ikili çarpımını bile uzunluk veya tek bir uzunlukta, her ikisi de ve her ikisi de ve sıfırdır. Kabul ettiğinde önce tüm sayaçlarını sıfırlar. v 32v2v3v5

İşte OP için benzer bir montaj biçiminde bunun için bazı kodlar (Ben sadece talimatlara değişkenler ekledim). Aslında bunu test etmedim, çünkü onunla çalışacak hiçbir şeyim yok, ama bunu bir formalite olarak görüyorum: 3-counter otomatların Turing-complete olduğu iyi bilinir ve bunlardan birinin herhangi bir hesaplanabilir fonksiyonunu oluşturabilir başlangıç ​​değerleri.

// Check that v3 and v5 are both zero.
                JZ v3, check5
                GOTO reject
check5:         JZ v5, init3
                GOTO reject
// Decrement v2 until it is zero, constructing 2^n in the process.  If 2^n
// was even, we will then pass to even2 with 2^n in v3; If 2^n was odd, we
// will pass to odd2 with 2^n in v5.
init3:          INC v3          // Set v3 to 1 = 2^0 to start with.
even1:          // We have decremented v2 an even number of times so far.
                // 2^decremented amount is in v3.
                JZ v2, odd2
                DEC v2
dup3to5:        JZ v3, odd1
                DEC v3
                INC v5
                INC v5
                GOTO dup3to5
odd1:           // We have decremented v2 an odd number of times so far.
                // 2^decremented amount is in v5.
                JZ v2, even2
                DEC v2
dup5to3:        JZ v5, even1
                DEC v5
                INC v3
                INC v3
                GOTO dup5to3
// The second part checks the ternary length of 2^n, which starts out in v3
// or v5 according to whether the *binary* length of 2^n (i.e. n+1) was odd
// or even.
odd2:           // v3 needs to have odd ternary length to accept.
                // It is simplest to consider 0 to have even length in both
                // binary and ternary.  This works out as long as we're
                // consistent.
                JZ v3, reject
trisect3to5:    DEC v3
                DEC v3
                JZ v3, even2
                DEC v3
                INC v5
                GOTO trisect3to5
even2:          // v5 needs to have even ternary length to accept
                JZ v5, accept
trisect5to3:    DEC v5
                DEC v5
                JZ v5, odd2
                DEC v5
                INC v3
                GOTO trisect5to3
accept:         HALT Accept
reject:         HALT Reject

Daha sonra bir sonraki adım, tek değişkenli otomatın üsleri üzerinde yukarıdakilerin yeniden kodlanmasıdır. Sonuç oldukça uzun olduğundan, sadece genel yöntemi açıklayacağım, ancak web sitemde tam sürüm (spotlarda biraz "optimize edilmiş").

                JZ vp, label
                DEC vp
next:           ...

olur (temelde p'ye bölün ve bölünme düzgün değilse geri almak için temizleme yapın):

                DIV p, next, ..., newlabel.fp-1
newlabel.f1:    MUL p
                GOTO newlabel.i1
...
newlabel.fp-1:  MUL p
                INC
newlabel.ip-2:  INC
...
newlabel.i1:    INC
                GOTO label
next:           ...

INC vpolur MUL p. Bireysel JZve DECönce kombine forma dönüştürülebilir. GOTO labelve HALT Rejectdeğişmez.

HALT AcceptBiz sayısında asal faktör vardır emin olmanız gerekir: yani bizim durumumuzda hâlâ yapacak son bir kontrol var haricinde, değişmemiş olacaktı diğer bizim özellikle 3-sayaç otomat sıfır yana 2,3 ve 5. sayaçları bunun daha kabul ettiğinde kullanır, bu basit: sadece son değişkenin 1 olup olmadığını test edin, bu da koda atlayarak yapılabilir

                DEC     // BTW it cannot be zero before this.
                JZ accept
                HALT Reject
accept:         HALT Accept

Web sitemdeki kod da sayının sıfır olmadığına dair bir ilk kontrole sahip.

Bahsettiğim gibi, yukarıdaki yöntem basitleştirilmiş problem için işe yarıyor, ancak genel olan için gerçekten çalışma şansı yok , çünkü: Genel problemde, her bir başbakanın üssünün kesin değeri , genel büyüklüğüne karar vermek için önemlidir ve bu nedenle çeşitli temellerde vardır. Bunun anlamı şudur ki:

  • Sayaçlar için kullanılacak "ücretsiz" asal sayılarımız yok.
  • Biz bile yaptığımız sayaçlar için ücretsiz asal var, biz gerçekten tüm üs değerleri sonsuz birçok başka asal gerekli bilgileri elde etmek için bir yol yoktur yapmak olsun.

Yani genel yöntemin ana fikrinin bir açıklama ile bitiş izin bağlantılı yukarıda Ibarra ve tran tarafından kağıt ( serbestçe indirilebilir versiyonu bazı sorunlar olduğunu kanıtlamak için nasıl) olmayan bir 2CA tarafından çözülebilir ve bu rahatsız edici içinde yıkar nasıl bizim durum.

Birincisi, her 2CA'yı, iki sayacın sadece biri artan diğeri sıfıra ulaşana kadar azalan arasında "fazlar" a geçtiği bir "normal form" olarak değiştirirler. Devletlerin sayısı bu normalize otomat tahminlerinde önemli bir rol oynar arasında.s

Daha sonra, davranışı bağlantılı olan belirli aritmetik sayı dizilerini oluşturabilecekleri sonucuna varmak için bu otomatı analiz ederler. Kesin olmak gerekirse (Bunlardan bazıları teorem olarak ifade edilmez, ancak iki ana örneğinin her ikisinin de ispatında örtüktür):

  1. Bir sayı x Tipi olmadan, otomat tarafından kabul edilirse bir fazın başlangıcında sıfırdan farklı sayacının hiç gidiş , o zaman var olan bir tamsayı öyle ki bütün sayılar , kabul edilir. i s D > 0 x + n D n 0vixi sD>0x+nDn0
  2. Bir dizi halinde en azından aşağıdakileri içerir kabul numaraları öyle ki her numara için bir faz vardır öyle ki , o zaman bulabilirsiniz ve tamsayılar öyle kisXs2+1xXivixsp,rXK1,K2

    • Her tamsayısı için , ve ikisi de otomasyon tarafından kabul edilir veya her ikisi de reddedilir.n0p+nK1r+nK2

(Düşünceler:

  • için gerektirirler ancak bunun aslında gereksiz olduğunu düşünüyorum. Aslında kabul ediliyorlar.x>sxX
  • Bunların çoğu, reddedilmekten ziyade açık bir şekilde durma yoluyla olduğu sürece reddedilen sayılar için de geçerli olmalıdır .)

Kendi örnekleri için sıklıkla asal çarpanları yok . İmkansızlığı kanıtlamak için, bu tür aritmetik dizilerin var olamayacağını göstererek çelişkiler doğururlar.D,K1,K2>s

Bizim sorunumuzda, bundan bir çelişki almak ikinci dava ile yıkılıyor. Elimizdeki ise , bu yeterince büyük olan bir arasında sayı ve , ya bölünemeyen ya da , daha sonra da arasında 2 yetkileri veya 3 olacak ve , bu nedenle ikisi de kabul edilir veya reddedilir. k p r 2 k 3 k p + 6 k n q + 6 k nK1=K2=6kkpr2k3kp+6knq+6kn

Nokta 1'in hala imkansız olduğu gösterilebilir, çünkü 2 ve 3'ün güçleri daha da artar. Ve sanırım (@MarzioDeBiasi'ye argümanı e-postayla gönderdim) ikinci vakayı imkansız gösterebilirim . Belki de birisi bu bilgiyi, otomatın şeklini daha da kısıtlamak için kullanabilir ve son olarak bundan bir çelişki çıkarabilir.K1K2


1
Çok iyi ve net bir cevap!
Marzio De Biasi
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.