Trouver la factorisation maximale des langues régulières

13

Que language soit régulier.LΣ

Une factorisation de est une paire maximale d'ensembles de mots avecL(X,Y)

  • XYL
  • XY ,

où | .XY={xyxX,yY}

(X,Y) est maximal si pour chaque paire avec soit ou Y \ pas \ subseteq Y ' .(X,Y)(X,Y)XYLXXYY

Existe-t-il une procédure simple pour savoir quelles paires sont maximales?

Exemple:

Soit L=ΣabΣ . L'ensemble F={u,v,w} est calculé:

  • u=(Σ,ΣabΣ)

  • v=(ΣaΣ,ΣbΣ)

  • w=(ΣabΣ,Σ)

Σ={a,b} .

Un autre exemple:

Σ={a,b} et L=ΣaΣ Ensemble de factorisation Sigma F={q,r,s,t} avec

  • q=(Σ,L)

  • r=(Σa,Σ+L)

  • s=(Σaa,ϵ+Σ+L)

  • t=(L,ϵ+L)

Laura
la source
4
Je recommande la lecture de l'article suivant (en particulier la sous-section 4.1) de Jacques Sakarovitch
Cornelius Brand
1
Je me demande si vous souhaitez être plus précis sur le problème, c'est-à-dire la dernière phrase de votre question? On nous donne et nous voulons tester si est maximal? Notre tâche est-elle d'énumérer tous qui sont maximaux? Dans ce dernier cas, est-il clair que cette liste est finie ou de taille polynomiale? Il n'est probablement pas logique de demander un algorithme pour énumérer toutes les possibilités s'il y en a de manière exponentielle. De plus, voulez-vous spécifier comment le langage est représenté lorsqu'il nous est présenté, et comment sont représentés? (par exemple, DFA, NFA, regexp)X,Y(X,Y)(X,Y)LX,Y
DW
2
Je ne comprends pas vos exemples. Est-ce que censés être toutes les paires maximales? ne semble pas être valide ...u,v,wv
Raphael
1
L'exemple est tiré de l'article mentionné ci-dessus. sont supposés être des paires maximales. Je ne comprends pas non plus comment est calculé car il ne semble pas nécessairement être dans . Je posterai un autre exemple. u,v,wvL
Laura
1
@Raphael, il me semble que est valide. Soit X = Σ a Σ , Y = Σ b Σ , ( X , Y ) est une factorisation, puisque X Y = L (considérons toute chaîne contenant un a , puis toute séquence de a et / / ou b , puis finalement un b : cette chaîne doit avoir un point où le premier b apparaît, donc c'est un point où elle contient unvX=ΣaΣY=ΣbΣ(X,Y)XY=Laabbb ). Je n'ai paspreuve qu'il est maximale, mais je ne peux pas trouver plus ensembles X ' , Y ' qui sont une factorisation de L . abX,YL
DW

Réponses:

8

Comme suggéré dans les commentaires à la question, je vais essayer de donner une réponse (malheureusement partielle) à la question, au moins dans la mesure où j'ai compris le problème moi-même (cela implique que vous pourriez bien trouver des erreurs, et si vous trouvez un moyen d'expliquer plus brièvement ou clairement l'un des points ci-dessous, n'hésitez pas à modifier la réponse en conséquence):

Tout d'abord, il convient de noter que nous n'avons pas réellement à calculer l'automate universel d'une langue si nous voulons calculer les factorisations d'une langue.

D'après l'article mentionné dans mon commentaire ¹, il existe une correspondance 1-1 entre les facteurs gauche et droit d'une langue régulière, c'est-à-dire, étant donné un facteur gauche de la langue, le facteur droit correspondant est uniquement déterminé et vice versa. Plus précisément, nous avons les éléments suivants:

Let est une factorisation de L . Alors Y = x X x - 1 L , X = y Y L y - 1 , c'est-à-dire que tout facteur gauche est une intersection de quotients droits, et tout facteur droit est une intersection de quotients gauches. A l' inverse, une intersection de quotients gauche de L est un facteur droit de L , et toute intersection de droite quotients de L est un facteur gauche de L .(X,Y)L

Y=xXx1L,X=yYLy1,
LLLL

Notez que pour une langue régulière, il n'y a qu'un ensemble fini de quotients gauche et droit, et donc ou le problème se réduit à calculer les quotients gauche et droit d'une langue, puis à calculer leur fermeture stable , c'est-à-dire un minimum surensemble des quotients qui est fermé sous l'intersection. Ceux - ci sont alors précisément les bons facteurs et les facteurs à gauche, et il est généralement facile de voir quelles paires sont des sous - ensembles de L .L

Exemple

Afin d'illustrer les points ci-dessus, considérons le premier exemple de la question (dont je pense également qu'il est incorrect dans le document):

Soit . Maintenant, les quotients de gauche L sont les ensembles x - 1 L pour x Σ * , qui est, ces mots u dans Σ * qui peut être préfixé par x , soit x u L . Quand y - 1 L = x - 1 L pour x , y distincts ? C'est le cas si et seulement si xL=ΣabΣLx1LxΣuΣxxuLy1L=x1Lx,yxet peut être augmenté de mots en L avec exactement les mêmes suffixes. Cela signifie, pour le dire en termes plus familiers, qu'ils sont équivalents à Nérode, et les suffixes nécessaires pour ajouter des mots dans une classe Nérode sont précisément les quotients de gauche respectifs.yL

Pour , nous voyons que nos classes d'équivalence Nerode sontL

  • , l'ensemble de mots ne contenant pas a b comme facteur et se terminant par a , N1aba
  • , l'ensemble de mots se terminant par b et ne contenant pas a b comme facteur, et N2bab
  • , l'ensemble de mots contenant a b comme facteur, c'est-à-dire N 3 = LN3abN3=L

Ils peuvent être augmentés avec les ensembles suivants (c'est-à-dire que ce sont les quotients de gauche des mots dans les classes respectives):

  • pour x dans N 1 se compose de tous les mots dans L (tout mot peut être augmenté d'un mot contenant a b comme facteur et devient ainsi un mot dans L ) et b Σ , c'est-à-dire S 1 = L b Σ S1=x1LxN1LabLbΣS1=LbΣ
  • pour x dans N 2 est la langue elle-même, c'est-à-dire S 2 = L etS2=x1LxN2S2=L
  • pour x dans N 3 est évidemment Σ . Autrement dit, nous avons trouvé trois bons facteurs de L . Comme S 2S 1S 3 , leur fermeture -stable est trivialement S 1 , S 2 , S 3 , et ce sont alors précisément les facteurs appropriés.S3=x1LxN3ΣLS2S1S3S1,S2,S3

Par conséquent, notre ensemble de factorisation est de la forme ( P 1 , S 1 ) , ( P 2 , S 2 ) , ( P 3 , S 3 ) .FL(P1,S1),(P2,S2),(P3,S3)

Maintenant, pour les facteurs de gauche , nous utilisons les équations du début de cette réponse:Pi

.

Pi=xSiLx1

Pour , on obtient L Σ * a , pour P 2 nous obtenons Σ * et P 3 , on obtient L . Vous pouvez le voir par inspection (l'excuse la plus populaire pour être trop paresseux pour énoncer une preuve formelle) ou en calculant explicitement les bons quotients (ce qui est assez analogue, mais pas complètement, au calcul des quotients de gauche). Nos factorisations sont donc données par F L = u , v , wP1LΣaP2ΣP3LFL=u,v,w

  • u=(P1,S1)=(ΣabΣΣa,ΣabΣbΣ)
  • etv=(P2,S2)=(Σ,ΣabΣ)
  • w=(P3,S3)=(ΣabΣ,Σ)

Sommaire

Pour résumer (comme vous demandiez une procédure simple):

  • Pour le calcul des décompositions d'une langue , on calcule d' abord les quotients gauche de L .LL
  • Vous pouvez le faire, dans le langage de l'article, en construisant un DFA minimal pour L puis pour chaque état q dans A (correspondant, en tant que classe d'équivalence de Nérode, à un quotient de gauche) calculer l'avenir de q dans A , obtenant ainsi un quotient gauche de la langue pour chaque état.ALqAqA
  • La collection de quotients de gauche ainsi obtenue donne, en général, un sous-ensemble des facteurs de droite.SR
  • Calculer ensuite la Fermeture -stable de S R , qui peut être fait dans la pratique , en formant l'intersection de tout sous - ensemble de S R et l' ajout d' un sous - ensemble ainsi obtenu à S R .SRSRSR
  • L'ensemble en même temps que toutes les intersections de l'étape précédente est alors l'ensemble des facteurs de droite L .SRL
  • Afin d'obtenir les facteurs de gauche, on peut calculer les quotients de droite .L
  • Ce sont des ensembles de la forme , pour y Σ . Maintenant, ce ne sont encore qu'un nombre fini, et pour x y , nous avons L y - 1 = L x - 1 si et seulement si pour tout u Σ , u x L u y L , c'est-à-dire peut être préfixé aux mots de la langue avec exactement le même ensemble de chaînes.Ly1yΣxyLy1=Lx1uΣuxLuyL
  • Pour calculer , considérons ces états q dans A tels que x soit contenu dans l'avenir de q . L'union du passé de ces États constitue un bon quotient. Retrouvez tous ces quotients.Lx1qAxq
  • Vous savez que vous avez terminé lorsque vous avez trouvé autant de facteurs de gauche que de bons facteurs.
  • Trouvez les paires de facteurs à gauche et à droite tels que X Y L . Ceci est F L .X,YXYLFL

  1. The Universal Automaton de Lombardy et Sakarovitch (dans Texts in Logic and Games, Vol 2: Logic and Automata: History and Perspectives , 2007)
Cornelius Brand
la source
3
ABXY