NFA'ya neden belirleyici olmayan denir?


14

Bu [komik] soruyu aklımda tutuyorum. Biz girdiler için geçişleri tanımlarken deterministik olmayan sonlu otomatiye neden deterministik olmayan denir . Peki, çoklu ve epsilon geçişleri olmasına rağmen , bunlar tanımlanır , bu da makinenin bu geçişler için belirleyici olduğu anlamına gelir. Yani belirleyici.


12
Teorik bilgisayar bilimlerinde kullanıldığı gibi belirsiz olmayanlar rastgele farklıdır.
adrianN

10
Bu var seçim deterministik olmayan bir geçişleri arasında.
reinierpost

NFA nedir? (Aramızdaki aydınlanmamışlar için)
DarcyThomas

@DarcyThomas, ilk tanıtımım swtch.com/~rsc/regexp/regexp1.html idi . İyi bir okuma - makalenin amacı NFA'ları tanıtmak değil, ancak düzenli ifadeleri tartışırken bunu yapmak iyi bir iş çıkarıyor.
Wildcard

Yanıtlar:


23

"Deterministik", "sistemi aynı duruma iki kez koyarsanız, aynı seçimi iki kez yapmanız garanti edilir" anlamına gelir.

"Deterministik olmayan", "deterministik olmayan" veya başka bir deyişle, sistemi aynı duruma iki kez koyarsanız, iki kez de aynı seçimi yapabilir veya yapmayabilir "anlamına gelir.

Deterministik olmayan bir sonlu otomat (NFA) bir durumdan çoklu geçişlere sahip olabilir. Bu, bu durumda yapabilecekleri için birden fazla seçenek olduğu anlamına gelir. Her zaman aynı olanı seçmek zorunda değildir; bir girişte ilk geçişi seçebilir ve başka bir girişte aynı geçişi seçebilir.

Burada "durum" u "girdiden sonra hangi sembolün okunduğuyla birlikte NFA'nın içinde bulunduğu durum" olarak düşünebilirsiniz. Her ikisi de aynı olsa bile, bir NFA hala bu durumdan çıkarılabilen birden fazla eşleşen geçişe sahip olabilir ve hangisinin alınacağını keyfi olarak seçebilir. Buna karşılık, bir DFA'nın bu durumda alınabilecek yalnızca bir eşleşen geçişi vardır, bu yüzden başka seçeneği yoktur - bu durumda her zaman aynı geçişi takip edecektir.


"keyfi olarak hangisini alacağınızı seçebilir." Yani temelde olasılıklı bir doğası var mı?
Trilarion

@Trilarion, hayır, kabul etme durumuna yol açıp açmadığına bağlıdır. Aslında olasılıksal FA NFA için bir genellemedir.
rus9384

"Deterministik olmayan", "deterministik olmayan" veya başka bir deyişle, sistemi aynı duruma iki kez koyarsanız, iki kez de aynı seçimi yapabilir veya yapmayabilir "anlamına gelir. bu, makinenin aynı dizeyi iki farklı durumda kabul edebileceğini ve reddedebileceğini kastediyorsunuz.
Madhusoodan P

3
@MadhusoodanP Sezginiz burada yazılanlardan doğrudur ve bu bizi bu cevapta eksik olana götürür: NFA'ları analiz ederken her zaman olası tüm yürütme yollarını göz önünde bulundururuz . Bu makinedeki herhangi bir yol kabul edilebilir bir duruma yol açtığı sürece , girdiyi kabul edilmiş olarak kabul ederiz. Yani bu hiç olasılıkla ilgili değil, sadece kabul eden bir duruma ulaşılıp ulaşılamayacağı ile ilgili. Bu sezgi, NFA'ların DFA'lara nasıl düşürüldüğünü düşünürken daha açık hale gelir: NFA'nın tüm olası uygulamalarını simüle etmeliyiz, bu da inşaatta üstel patlamaya yol açar.
ComicSansMS

3
Bunu görselleştirmenin bir yolu, birden fazla geçişin seçilebildiği yerlerde NFA'nın tüm geçişleri aldığını varsaymaktır . Bir giriş dizesi tarafından erişilen tüm durumların ağaç benzeri bir yapısını oluşturursunuz ve dallardan herhangi biri kabul etme durumunda sona ererse, dize kabul edilir. Başka bir deyişle, bir DFA ile, soruyorsun "dır devlet benim girişi ile ulaşılabilen bir devlet? Kabul" bir NFA, oysa siz soruyorsunuz "dir, herhangi bir devlet benim girişi ile ulaşılabilen bir devlet kabul edilebilir?".
Harrison Paine

9

011010

Örnek otomat, kaynak: /cs/61159/what-is-the-difference-between-following-two-finite-automata/61208

Bunu görmek için sadece kabul etme durumuna ulaşıp ulaşmadığını kontrol etmemiz gerekiyor.

q01q00q11q20

1q0q001010

Bir NFA oluşturmak, bir DFA oluşturmaktan daha kolaydır, iyi olan şey, her ikisinin de eşdeğer olmasıdır .


Evet, NFA'nın teori kısmını biliyorum. Ama sorduğum şey, tek bir giriş karakteri için birden fazla geçiş olmasına rağmen, makine tüm durumlara ne ulaşabileceği konusunda belirleyici (iş parçacıkları oluşturarak). Dolayısıyla kelimenin tam anlamıyla DFA. [Yoksa sence determinizmin anlamını yanlış yorumladığımı mı düşünüyorsun ]
Madhusoodan P

1
Aynı amaç için bir DFA, NFA'nızla aynı sayıda durumu kullanacağından ve özellikle karmaşık olmayacağından, örnek biraz daha karmaşık bir NFA ile geliştirilebilir. Buna karşılık, daha karmaşık bir düzenli ifadeyi eşleştirmek karmaşık ve dağınık bir DFA gerektirebilir, ancak bir NFA'da önemsiz olabilir.
supercat

ε

1
@Aristu En sevdiğiniz programlama dilinde bir NFA uyguluyorsanız, iş parçacıkları korkunç bir seçimdir. Daha ziyade, girişin her karakteri okunduktan sonra otomatın "içinde olabileceği" durum kümesini izlemelisiniz. Ortaya çıkan kod, neredeyse bir DFA uygulaması kadar hızlı olacaktır.
David Richerby

1
ϵ

5

Bir NFA'nın geçiş işlevi, herhangi bir zamanda izin verilen geçişleri belirtir. Birden fazla seçenek olabilir ve NFA , nihai olarak kabul eden bir duruma ulaşma hedefi ile belirsiz bir şekilde bir geçiş seçer .

Belirsiz Turing makineleri hakkında bilgi edinene kadar beklemelisiniz. Belirsizlik, her iki durumda da aynı anlama gelir.


"belirsiz bir geçiş" olduğunu vurgulayabilir misiniz? Ve ayrıca lütfen cevabımı gözden
geçir

Bence sezgileriniz sağlam olsa da her iki cevabımız da çok iyi değil.
Yuval Filmus

3

Bir Sonlu Otomat ile başlayın. Durumları ve kabul durumları ve geçişleri vardır.

Şimdi, her durum için birden fazla aktarım kuralı verin ve kabul dizisine bir giriş dizesi verildiğinden sonra alınan bir dizi geçiş kuralı olup olmadığını kabul ettiğini söyleyin .

Giriş dizenizi aldıktan sonra, sabit bir somut geçişler kümesi vardır ve bu dizeyi kabul etmek için (her seferinde bir tane) geçer. Ancak hangi geçişleri seçtiği yalnızca dizenin sonunda seçilir . Dize okunurken alınacak yol belirlenmez.

Deterministik değildir. Girdiyi okurken değil, tüm sorunu verdikten sonra grafik boyunca yolunu seçer.


Şimdi, bunu bu düşünce denemesinden farklı bir şekilde resmileştiriyoruz, ama bu size neden bu ismi aldığı konusunda motivasyon veriyor.

Bu, ilk etapta adı nasıl aldığını açıklıyor. Evet, NDFA'yı tamamen belirleyici bir şekilde modelleyebilirsiniz, ancak adlar yapışkandır . Bob'u bir şey çağırdıktan sonra, başka bir şeye yeniden adlandırmanın bir iletişim maliyeti vardır, çünkü kimse ona Alice dediğinde ne hakkında konuştuğunu bilmiyor.


Evet! NFA hakkındaki açıklamanıza katılıyorum. Ama sorum, devletler kümesi tek bir girdi için tanımlanmış olmasına rağmen neden belirleyici değil?
Madhusoodan P

@MadhusoodanP Nasıl icat edildiği / tasarlandığı için deterministik değil denir . Ve isimler, onu biçimlendirmek için çok aşamalı tam olarak belirleyici yollar tanımladıktan sonra bile yapışkan.
Yakk

1

Gönderen wikipedia , bu konuda düşünmek için en iyi yolu deterministik sonlu durum makinelerinin (DFA) ile başlamaktır. Bir DFA için, her geçiş, geçerli durum ve işlenecek giriş sembolü tarafından benzersiz bir şekilde belirlenir. Belirsiz sonlu durum makineleri (NFA), geçişlerin benzersiz bir şekilde tanımlanmasına izin vermemek için bu determinizm kuralını gevşettiğinizde elde ettiğiniz şeydir. DFA'lardan determinisim kuralını kaldırdığınızda elde edeceğiniz şey budur.


Belirsizcilik de belirli bir kabul şartı olduğundan, biraz daha karmaşıktır.
Yuval Filmus

1

NFA ve DFA (diğer şeylerin yanı sıra) belirli dizeleri tanımak için kullanılır.

Deterministik olmayan sonlu otomat kararları üzerinde bir etkisi varmış gibi çalışır - bir yolu takip etmeyi "seçebilir ya da seçemez".

NFA örneği

Yukarıdaki resimde, "00111" dizesiyle uğraşırken, ilk "1" ile karşılaştığınızda, izlemenin iki olası yolu olduğunu unutmayın. Biri "p" de kalabilir veya "q" ya gidebilir. Otomata "q" ya geçecek olsaydı, dizeyi kabul etmezdi ("q" dan çıkan kenar olmadığından). Ancak dize, diğer her şey için "p" de kalırken, yalnızca son 1 ile "q" a giderek bu otomata tarafından kabul edilebilir (ve olan budur).

NFA, otomatın ileride ne olduğunu "bildiği" gibi görünmesini sağlar ve buna göre seçim yapar.

Tabii ki değil. DFA ve NFA güç açısından eşdeğerdir (NFA'yı DFA'ya indirebilir ve DFA'yı (muhtemelen) NFA kullanımıyla daha basit hale getirebilirsiniz), ancak NFA yararlıdır, çünkü grafikleri çok tutarken DFA ile aynı dilleri tanımlamaya izin verir daha kısa ve daha okunabilir.

Orada rastgele bir şey yok. Deterministik olmayan kısım, alınması gereken bir “seçim” olduğu gerçeğine vurgu yapar, ancak gerçek şu ki, otomata herhangi bir karar almaz.


0

İşte [Peter Linz 4E'nin Biçimsel Dillere ve Otomatlara Giriş] kitabından bazı içerikler ve benim anlayışım.

Makinenin bir sonraki hamleye karar vermesi gereken bir oyun oynama programını düşünün [tic-tac-toe deyin]. Mümkün olan birden fazla hareket olduğundan, her hareketi belirli bir şekilde seçer ve hareketi değerlendirir ve en iyisini seçeriz. Seçim süreci belirleyici olmasına ve birçok olası hamle olmasına rağmen, son hamle tek bir hamleydi ve rakipten denenen tüm hamle hesaplamalarını gizlerken en iyi hamle seçildi. [Burada olası her hareketin değerlendirme sürecinin rakipten gizlendiğini varsayıyoruz].

Bu nedenle, sadece bir seçim yapıldı ve rakibe, hareketin deterministik olmadığı bir yanılsama verildi.

Henüz en iyi hareketin bazı deterministik hesaplamaların ürünü olduğunu sorarak ikna değilseniz, o zaman mükemmel rasgele hareketler yapan makineyi düşünmelisiniz (makine kaybedebilir, ancak bu bir NFA).


1
Bunu söylemenin başka bir yolu: rakibe , seçiminiz belirsizdi. Sistemi rakibin görüşüne göre modellerken, rakibin arkasındaki deterministik süreci anlamadığı sürece hamleniz belirsiz bir seçimdir.
reinierpost

@reinierpost tam olarak söylemek istediklerim
Madhusoodan P

Daha ilginç bir örnek, sınırlı bilgi içeren hareketli parçalar oyunu (örneğin, "polisler ve soyguncular" tarzı) olabilir. Bir oyuncu soyguncuyu labirent etrafında hareket ettirirken, diğer oyuncu polisleri hareket ettirir. Bir polisin bir soyguncuyu görebildiği herhangi bir zamanda, soyguncunun durumu onun yeri olacaktır, ancak polislerin hiçbiri soyguncuyu görmediğinde, soyguncu pozisyonuna bitişik olan karelere geçebilir ve polisler o anda görmüyorum.
supercat

@supercat Güzel bir, ama yapılan geçiş her zaman tek bir durumdur ve en iyi hareketin hesaplamasını gizlerseniz, deterministik
görünmüyor
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.