İki hesaplama modelinin eşdeğer olduğunu nasıl gösteririm?


21

Biri iki hesaplama modelinin eşdeğer olduğunu nasıl kanıtlayabileceğine dair açıklama arıyorum. Bu konuda denklik kanıtı çıkarılmaması dışında kitap okuyorum. İki hesaplama modelinin eşdeğer olmasının ne anlama geldiğine dair temel bir fikrim var (otomata görünümü: aynı dilleri kabul ederse). Eşdeğerliği düşünmenin başka yolları var mı? Turing-makine modelinin lambda hesabına eşdeğer olduğunu nasıl kanıtlayacağımı anlamama yardımcı olursanız, bu yeterli olacaktır.


Sanırım yanlış kitapları seçtiniz.
Raphael

@Raphael Konuyla ilgili iyi bir kitap nedir?
saadtaame

"Otomata hakkında herhangi bir kitap" demek istiyorum ama görünüşe göre bu artık doğru. Maalesef, elimde uygun İngilizce kitabım yok, üzgünüm.
Raphael

1
Sadece otomata hakkında bir kitap yeterli olmaz.
reinierpost

Hangi kitapları kullanıyorsun?
saadtaame

Yanıtlar:


20

Her iki modelin diğerini simüle edebileceğini , yani A modelinde bir makine verildiğini, B modelinde aynı işlevi hesaplayan bir makine olduğunu gösterirsiniz. Bu simülasyonun hesaplanabilir olması gerekmediğini (ancak genellikle) olduğunu unutmayın.

Örneğin, iki yığınlı (2-PDA) otomatik aşağı itme düşünün. Başka bir soruda , her iki yöndeki simülasyonlar özetlenmiştir. Bunu resmi olarak yapsaydınız, genel bir Turing makinesi (bir demet) alırdınız ve açıkça ilgili 2-PDA'nın ne olacağını açık bir şekilde inşa edersiniz ya da tam tersi.


Resmi olarak, böyle bir simülasyon böyle görünebilir. İzin Vermek

M=(Q,ΣI,ΣO,δ,q0,QF)

bir Turing makinesi (bir bantla). Sonra,

AM=(Q{q1,q2},ΣI,ΣO,δ,q1,QF)

ile ΣO=ΣO.{$} ve δ tarafından verildi

(q1,a,hl,hr)δ(q1,ahl,hr) tümaΣI vehr,hlΣO ,
(q1,ε,hl,hr)δ(q2,hl,hr) tümhr,hlΣO ,
(q2,ε,hl,hr)δ(q2,ε,hlhr) tümhr,hlΣO vehl$ ,
(q2,ε,$,hr)δ(q0,$,hr) TümhrΣO ,
(q,ε,hl,hr)δ(q,ε,hla)(q,hr)δ(q,a,L) tümqQ vehlΣO ,
(q,ε,$,hr)δ(q,$,a)(q,hr)δ(q,a,L) tümqQ için δ ( q , a , L ) ,
(q,ε,hl,hr)δ(q,ahl,ε)(q,hr)δ(q,a,R) tümqQ,hlΣO ,
(q,ε,hl,$)δ(q,hl,$) tümqQ vehlΣO için δ ( q , h l , $ ) ve
(q,ε,hl,hr)δ(q,hl,a)(q,hr)δ(q,a,N) için tümqQ,hlΣO

eşdeğeri bir 2-PDA'dır. Burada, Turing makinesinin boş sembol olarak ΣO kullandığını varsayıyoruz , her iki yığın da $ΣO (asla çıkarılmamış) bir işaretleyici ile başlar ve (q,a,hl,hr)δ(q,l1li,r1rj) bu araçlar AM girdi tüketen a gelen durumları anahtarlarıq -q ve yığınları şu şekilde günceller:

stack update
[ kaynak ]

AMxΣI ve yalnızca M bunu yaparsa , nihai duruma girdiğini göstermek için kalır . Bu inşaat ile oldukça açıktır; resmen sen kabul eden ishal çevirmek zorunda M kabul eden ishal içine AM ve tersi.


@frabala Haklıydınız, başlangıç ​​durumlarını yanlış şekilde yaptım. Şimdi düzeltildi, teşekkürler!
Raphael

4

İletişim ve Mobil Sistemlerin başlangıcında : Robin Milner'ın Pi-Calculus'u , otomatlar ve birbirlerini nasıl simüle edebilecekleri konusunda ayırt edemeyecekleri bir giriş var : Bisimülasyon . ( wfipedia'da Bisimülasyon )

İyi hatırlamıyorum, bölümü tekrar okumalıyım, ancak simülasyon ve bisimülasyon ile hesaplama denklikleri için yeterli olmayan bir sorun vardı.

Böylece Robin Milner Pi-Calculus'u tanıtır ve kitabın geri kalanında sunar.

Nihayetinde son kitabı İletişim Ajanslarının Mekanı ve Hareketi'nde Robin Milner'ın Bigraflarına bir göz atabilirsiniz. Automata, Petri ağları, Pi-Calculus ve diğer hesaplama yöntemlerini modelleyebilirler.


2

Bildiğim kadarıyla bunu yapmanın tek (veya en azından en yaygın) yolu, makinelerin / modellerin kabul ettiği dilleri karşılaştırmaktır. Automata teorisinin bütün mesele budur: bir problemin veya algoritmanın belirsiz kavramını alır ve onu aklımızda tutabileceğimiz somut bir matematiksel kümeye (yani bir dile) dönüştürür.

Bunu yapmanın en kolay yolu, bir modelden rastgele bir makine / işlev verildiğinde, aynı dili hesaplayan ikinci modelden bir makine oluşturmaktır. Oranlar, ifadenin uzunluğu, makinedeki durumlar, dilbilgisi kuralları vb.

Bunun Lambda ve TM'lerle yapıldığını görmedim (bunun% 99 mümkün olduğundan eminim), ancak kesinlikle NFA'ların ve Düzenli ifadelerin denkliğini kanıtlamak için bu tür bir şey gördüm. Önce herhangi bir atomu kabul edebilen bir NFA gösterir, daha sonra indüksiyon kullanarak, daha küçük NFA'ların birleşimini / birleştirmesini / Kleene yıldızını kabul eden NFA'lar yaparsınız.

Sonra herhangi bir NFA için bir RE bulmak için, bunun tersini yapın.

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.