tamamlayıcısı için bir PDA oluşturun


16

Bunun mümkün olup olmadığını merak ediyorum, çünkü . Bu nedenle 'ın geri kalanından ayırabilecek bir PDA da kabul edebilir bu bana çelişkili geliyor.{anbncnn0}CFLw{anbncnn0}{abc}

Sanırım PDA'ların deterministik olmayan doğasından faydalanmalıyım ama fikirlerim bitti. Bazı tavsiyeler sunabilirseniz çok takdir ediyorum.


Bu konuda ilginç bir nokta çelişkili görünüyor. Gerçekten de, bağlam-içermeyen diller tamamlayıcı göz önüne alındığında kapatılmaz ... dolayısıyla bağlamsız dillerden bahsettiğiniz anlamda "kabul edilebilecek" birçok örnek vardır. Ben bir teorisyen değilim ve bu yüzden bunu gerçekten uzlaştırmak mümkün değil, ama belki de başka biri bunun neden endişelenecek bir şey olmadığını söyleyebilir.
Patrick87

Bunun genelleştiğine dikkat edin: nin tamamlayıcısı bir CFG'dir. {anbncndnen}
sdcvvc

Yanıtlar:


15

Hayır, bu bağlam içermez. kabul etmek için üç sayının eşit olduğundan emin olmanız gerekir. b c a n b n c n'yi kabul etmek için , aşağıdaki üç durumdan birinde olduğunuzdan emin olmanız gerekir:anbncnabcanbncn

  1. Sayısı s sayısından farklı olan b s; veyaab
  2. Sayısı s sayısından farklı olan C ler; veyaac
  3. Sayısı s sayısından farklı olan C s.bc

Bu vakaların her biri için bir PDA yazın, ardından başlangıç ​​durumundan her birine belirsiz olmayan bir şekilde atlayarak bunları birleştirin.


Bu davaları iyi yazmıştım, ama onları bağlama fikrini kaçırmıştım. Teşekkür ederim!
hauptbenutzer

4
Aslında sadece iki davaya ihtiyacınız var.
sdcvvc

@sdcvvc İyi bir nokta. :)
Patrick87

Farklı sayıda karakter için bunu ilham olarak düşünün: . Bunun soluna a + veya sağa c + yapıştırmak ve bunu bir PDA'ya dönüştürmek basit olmalıdır . Zor durum için (ihtiyacınız olmayan) S a S c | A | C ; A a B |SxSy|X|Y;Xx|xX;Yy|yYa+c+ . SaSc|A|C;AaB|aA;CBc|Cc;Bε|bB
Jonas Kölker
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.