Belirsiz bir aşağı itmeli otomat tarafından kabul edilen en çok uzunluğunda bir kelime bulmanın sertliği


10

Sorun bildirimi :

Let bir (potansiyel olarak nondeterministic) aşağı açılan da olmalıdır ve izin olması, giriş alfabe. kelimesi var mı st tarafından kabul edilen ?MAwA|w|kM

Bu problem NP-tamamlanmış mı? Çalışıldı mı? Böyle bir kelimeyi bulmaya izin veren bir algoritma var mı?


Djikstra'nın algoritması hile yapmamalı mı? (Muhtemelen burada bir şeyleri yanlış
anlıyorum

"en fazla uzunluğu "? k
Alpöge

Bir şey değil, Kaveh. Evet, "en fazla" unuttum, tekrar düzenledim.
Lamine

1
Cevap kolay - bu bir ödev sorusu mu?
Sariel Har-Peled

Otomatların açıklamasına erişimimiz var mı yoksa sadece kara kutu olarak mı var?
Raphael

Yanıtlar:


9

Normal dil ile CFG dilinizin kesişimini hesaplayın i=0kAk (bu, devlet sayısının kve "çıkmaz sokak" durumunun eklenmesi). Şimdi sonucun boş olup olmadığını kontrol edin: bir dilbilgisine dönüştürün (sonucun polinom boyutuna sahip olacağını düşünüyorum) ve epsilon yapımlarından "backtrack".

Edit: Kaveh bu polinom olduğunu söyledi k, öyleyse k girdi olarak verilir, algoritma üsteldir |k|. Ancak Kaveh bunu düzeltmenin bir yolunu buldu. Orijinal otomatı bir CFG'ye dönüştürün ve tüm terminalleri sabit bir terminalle değiştirin. Şimdi, her terminal olmayan tarafından oluşturulan bir sözcüğün minimum boyutunu aşağıdaki gibi bulmak için yinelemeli bir algoritma kullanın.

Tüm uzunlukları şununla başlat ve daha sonra tüm uzunlukları açık bir şekilde tekrarlayın: bir üretim verildi AatBi (sipariş önemli değil), koy f(A)=min(f(A),t+f(Bi)). İstem: bu, yinelemelerinde birleşir , burada , terminal olmayanların sayısıdır. Bunun nedeni, en az uzunluktaki kelimeyi üreten bir ağaçta iki uçlu terminalin kullanılmamasıdır; her "kenar" işlemek için en fazla bir yineleme gerektirir (bazı kenarlar paralel olarak "güncellenebilir").O(n)n


Ben de PDA CFG dönüşüm polinom olduğunu düşünüyorum . Teşekkürler! Yani sorun olduğunu . P
Lamine

Tamam, doğrudan en düşük uzunluğu hesaplamak için bir yol olduğundan,bir girdi değil. Ama neden tüm terminalleri sabit bir terminal ile değiştirdiğimi anlamıyorum. Algoritma orijinal terminallerle doğru şekilde çalışmalıdır. |k|
Lamine

Haklısın, aslında önemli değil.
Yuval Filmus

5

Tüm alfabe karakterlerini belirli bir karakterle değiştirin. Şimdi, PDA tek bir karakter üzerinden tanımlanmıştır. Dili bağlamsız bir gramerdir. Ancak, tek bir karakter üzerinde bağlamdan bağımsız gramer normaldir. Bu nedenle, CFG'yi normal bir dile dönüştürün ve ardından k uzunluğunda bir kelime içerip içermediğini kontrol edin.

Şimdi, tüm bu dönüşümler üstel zaman gerektiriyor, ancak sorunun NP'nin tamamlanmış olması pek olası görünmüyor. Özellikle de polinom zamanına izin veriyorsanızk.

Yanılıyor olabilirim ve ilk snippy cevabım için özür dilerim ...

BTW, tek bir harf üzerindeki bir CFG'nin düzenli olması Parikh'in teoreminden kaynaklanmaktadır. Doğrudan bir kanıt çok zor olmasa da. Parikh teoremi hakkında daha fazla bilgi için bağlantıya bakın - bu güzel bir sonuçtur ... http://www8.cs.umu.se/kurser/TDBC92/VT06/final/3.pdf


Hayır, ben öğrenci değilim. Bahsettiğim sorun başlangıçta bir otomasyon sorunu olarak modellenen bir ağ sorunudur. Sadece bir polinom çözümü aramaya değip değmeyeceğini bilirdim.
Lamine

5
Bu cevap bir yorum olmamalı mı?
Oleksandr Bondarenko

2
Evet olmalı. Sariel, bunu bir yoruma aktarabilir misin ya da cevap verebilir misin?
Suresh Venkat

@Suresh: Bunun farkında olabilirsiniz, ancak şimdi moderatörler bir cevabı yoruma dönüştürebilir .
Tsuyoshi Ito

Orijinal cevabı bir yoruma taşıdım. Bu yeni bir cevap.
Suresh Venkat

0

Muhtemelen yetersiz bir yöntem: Djikstra algoritmasını çalıştırın. Ardından, her bir son durum için mesafelerik. Varsak, kabul etmek. Reddet.

EDIT: Yukarıdaki sadece NFA'lar için çalışıyor! Bunun için üzgünüm.


(ama kesinlikle poli-zaman!)
01'de alpoge

Dijkstra'nın algoritmasının sorunu çözebileceğinden emin değilim. İlk durum ve son durum arasındaki en kısa yolu bulabilir. Elbette, bu yollardan kabul edilebilecek bir kelime üretilebilir. Ancak bu yollar temeldir ve kelimeler temel olmayan yollar yoluyla kabul edilebilir; aksi halde bağlamdan bağımsız bir dilbilgisinin herhangi bir sözcük üretip üretemeyeceğini belirleme sorunu karar verilebilir, ancak değildir.
Lamine

CFL'ler için boşaltma testi karar verilebilir, değil mi?
alpoge

(Yanlış
anlıyorsam

Eh, bunu yapmak için bir 'işaretleme' algoritması (CFG verildiğinde) - terminalleri işaretleme, sonra terminalleri üreten şeyleri işaretleme, sonra işlem sona erene kadar işaretlenen şeyleri türeyen şeyleri işaretleme ve sonra kontrol etme başlangıç ​​değişkeni işaretliyse. Ayrıca, cevabımı görmezden gelin - bir NFA için yapmanız gereken budur (kesinlikle bir PDA için değil!).
alpoge
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.