Kaba kuvvet arama kullanmadan iki kelime ayıran en küçük DFA bulmak?


23

İki ve x dizeleri verildiğinde, x'i kabul eden ve y'yi reddeden minimum bir boyut DFA oluşturmak istiyorum. Bunu yapmanın bir yolu kaba kuvvet arama. DFA'ları en küçükten başlayarak numaralandırıyorsunuz. Her DFA'yı, x'i kabul eden ve y'yi reddeden birini bulana kadar denersiniz.

X'i kabul eden ve y'yi reddeden minimum boyutta bir DFA bulmak veya inşa etmek için bilinen başka bir yol olup olmadığını bilmek istiyorum. Başka bir deyişle, kaba kuvvet aramayı yenebilir miyiz?

Daha fazla detay:

(1) Gerçekten bir asgari boyut DFA değil, asgari boyut DFA bulmak için bir algoritma istiyorum.

(2) Sadece minimum DFA'nın ne kadar büyük veya küçük olduğunu bilmek istemiyorum.

(3) Tam burada, sadece x ve y iki dizeniz varsa bu davaya odaklanıyorum.


Düzenle :

İlgilenen okuyucu için ek bilgiler:

Diyelim ki ve y , en fazla n olan ikili uzunluk dizeleridir . Bu kabul DFA olduğu bilinen bir sonucudur x ve reddeder y en ile xynxy devletler. Bildirim hakkında olduğununn DFA bir ikili alfabeye sahip ve en fazlann devletler. Bu nedenle, kaba kuvvet yaklaşımın than'dan daha fazla sayılmamızı gerektirmez.n DFA’lar. Sonuç olarak kaba kuvvet yaklaşımın than'dan daha fazla dayanamadı.nn zamanı.nn

Yararlı bulduğum slaytlar: https://cs.uwaterloo.ca/~shallit/Talks/sep2.pdf


2
@ AndrásSalamon Ayırt edilecek kümelerin her biri yalnızca bir dizeden oluşuyorsa, hala NP tamamlanmış mı? Bana makul bir şekilde izlenebilir olması gerektiğini hissettiriyor.
saat

6
Bu iki dizeyi birbirinden ayıran birçok farklı normal dilin olması sorununu çözüyor - DFA minimizasyonu bu dillerden herhangi biri için en iyi otomatiği bulacak, ancak diğer diller için otomat ile karşılaştırmak için hiçbir şey yapmayacak.
David Eppstein

4
Eğer ve y boyunun en büyük farklı Uzunlukları, n , o hızla bir DFA bulmak kolaydır O ( log n ) sadece uzunluk döngüsünü kullanın: o ayırır onları bildiren p , p bölün değil | x | - | yxynO(logn)pp. Uygun p'yi bulana kadar 2 , 3 , 5 , deneyerek p'yi bulun. Eğer x ve y aynı uzunluktaysa, O|x||y|p2,3,5,pxyRobson, 1996 tarihli bir makalede,O(n)boyutunda bir arama ile bulunabilecek basit bir makine vermektedir. Her iki yapının da en küçük DFA olduğu garanti edilmez. O(n)O(n)
Jeffrey,

3
Shallit'in yukarıda bağlantılı notları, ayırma problemi için en kötü durumun alfabe ikili olduğu zamanki faydalı gözlemini içerir: daha büyük alfabeleri her iki giriş sözcüğünü ayıran ve iki karakter kümesini birbirinden ayıran ve ele alan ikili bir otomat arayan iki alt gruba ayırmak mümkündür. bir alt kümedeki harfler 0 olarak ve diğer alt kümedeki harfler 1 olarak belirlenir. Ancak minimum ayırma otomatını aramak için bu yardımcı görünmüyor, çünkü orijinal alfabedeki ekstra bilgileri, ikili bir alfabeye eşlemeyle yapabileceğinizden daha iyi yapmak için kullanabilirsiniz.
David Eppstein,

3
set-out-set-boylarının , kelime-kelime-kelime-verilen-minimum-sonlu otomatlara eşit olduğu, bu son zamanlardaki özel bir durum . Bu cevap bazı sezgisel araştırmaları içeren bazı öğrenme literatürünü listeler.
vzn

Yanıtlar:


9

Bunu pratikte yapmak zorunda olsaydım, bir SAT çözücü kullanırdım.

ile bir DFA olup olmadığı ve x'i kabul eden ve reddeden y olup olmadığı sorusu kolayca SAT örneği olarak ifade edilebilir. Örneğin, bir yol 2 k 2 boole değişkenine sahip olmaktır : z s , b , tkxy2k2zs,b,t DFA geçişler halinde devlet ile ilgili geçerlidir durumu için t giriş biti ile b . Sonra bunun bir DFA olduğunu zorlamak için bazı cümlecikler ekleyin, ve x'i kabul edip y reddetmesini zorlamak için bazı değişkenler ve cümlecikler ekleyin .stbxy

Şimdi bu tür bir DFA'nın bulunabileceği en küçük k'yı bulmak için üzerinde ikili aramayı kullanın . İlgili sorunla ilgili makalelerde okuduklarım temelinde, bunun pratikte oldukça etkili olabileceğini beklerdim.kk


Bunun SAT olarak başka kodlanması da mümkündür. Örneğin, bir izleme kodlaması kullanabiliriz:

  • Eğer uzunluk taşımaktadır m , eklemek olabilir m lg k boolean değişkenler: let s 0 , s 1 , ... , s m girişi üzerinde enine uzanan devletlerin dizisi xxmmlgks0,s1,,smx ve temsil her kullanarak lg k boole değişkenleri.silgk

  • Şimdi her öyle ki x i = xi,j , s i - 1 = s j - 1 gibi kısıtlamalar var.xi=xj .si1=sj1si=sj

  • Daha sonra, işlemek için bu uzanır : izin t 0 , ... , t , n girişi içinden geçtiği durumlarının dizisi olabilir y ve her temsil t j kullanılarak lg k boolean değişkenleri. Her biri için , i , j, öyle ki y i = y jyt0,,tnytjlgki,jyi=yj , t i - 1 = t j - 1 sınırlamasını ekleyin. .ti1=tj1ti=tj

  • Benzer bir şekilde, her biri için öyle ki x i = y j kısıtlama eklemek, s i - 1 = t j - 1i,jxi=yj .si1=tj1si=tj

  • Her iki iz de aynı başlangıç ​​noktasından başlamalıdır, bu nedenle ( s 0 = t 0 = 0 gerekebilir WLOG) gereksinimini ekleyin .s0=t0s0=t0=0

  • DFA'nın yalnızca durumlarını kullanmasını sağlamak için, tüm i , j için 0 s i < k ve 0 t j < k olmasını gerektirir .k0si<k0tj<ki,j

  • Son olarak, bu şartı kodlamak için kabul edilir ve y reddedilir, gerektirmektedir ler mt n .xysmtn

Bu gereksinimlerin tümü SAT yan tümceleri olarak kodlanabilir.

Daha önce olduğu gibi, böyle bir DFA'nın mevcut olduğu en küçük k'yı bulmak için üzerinde ikili aramayı kullanırsınız .kk


3
Problemde belirli simetriler varsa ve çözücüler tarafından tanınırlarsa, bunun kaba kuvvet aramadan daha üstün olacağına dikkat edin, ancak şu anda bunları tanımlamak / izole etmek zor olabilir (insan veya makine için). ayrıca tatmin edilebilirlik modulo teorileri ve bazılarının “yerleşik” grafiği olan veya tanımlarını destekleyebilecek cevap seti programlamanın daha yeni / ilgili “teknolojisi” vardır.
saat
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.