Dans la première partie, nous montrons un algorithme exponentiel pour décider de la circularité. Dans la deuxième partie, nous montrons que ce problème est coNP-dur. Dans la troisième partie, nous montrons que tout langage circulaire est une union de langages de la forme r + (ici r pourrait être l'expression rationnelle vide); l'union n'est pas nécessairement disjointe. Dans la quatrième partie, nous présentons un langage circulaire qui ne peut pas s'écrire comme une somme disjointe ∑ r + i .r+r∑r+i
Edit: Incorporé quelques corrections suite aux commentaires de Mark. En particulier, mes affirmations antérieures selon lesquelles la circularité est coNP-complète ou NP-dure sont corrigées.
Edit: forme normale corrigée de ∑ r ∗ i à ∑ r + i . Présentait un langage "intrinsèquement ambigu".∑r∗i∑r+i
Poursuivant le commentaire de Peter Taylor, voici comment décider (de manière extrêmement inefficace) si une langue est circulaire compte tenu de son DFA. Construisez un nouveau DFA dont les états sont n -tuples des anciens états. Ce nouveau DFA exécute n copies de l'ancien DFA en parallèle.nn
Si le langage n'est pas circulaire, alors il y a un mot w tel que si nous le parcourons le DFA à plusieurs reprises, en commençant par l'état initial s 0 , alors nous obtenons les états s 1 , … , s n tels que s 1 accepte mais un des autres n'accepte pas (si tous acceptent alors alors la séquence s 0 , … , s n doit faire un cycle pour que w ∗ soit toujours dans le langage). En d'autres termes, nous avons un chemin de s 0 , … , s nws0s1,…,sns1s0,…,snw∗- 1 à s 1 ,…, s n où s 1 accepte mais que l'un des autres n'accepte pas. Inversement, si la langue est circulaire, cela ne peut pas se produire.s0,…,sn−1s1,…,sns1
Nous avons donc réduit le problème à un simple test d'accessibilité dirigée (il suffit de vérifier tous les "mauvais" n -tuples possibles).n
Le problème de la circularité est difficile à résoudre. Supposons qu'on nous donne une instance 3SAT avec n variables → x et m clauses C 1 , … , C m . Nous pouvons supposer que n = m (ajouter des variables fictives) et que n est premier (sinon trouver un nombre premier entre n et 2 n en utilisant le test de primalité AKS et ajouter des variables et des clauses fictives).nx⃗ mC1,…,Cmn=mnn2n
Considérons le langage suivant: "l'entrée n'est pas de la forme → x 1 ⋯ → x n où → x i est une affectation satisfaisante pour C i ". Il est facile de construire un DFA O ( n 2 ) pour ce langage. Si la langue n'est pas circulaire, alors il y a un mot w dans la langue, dont une puissance n'est pas dans la langue. Puisque les seuls mots qui ne sont pas dans la langue ont une longueur n 2 , w doit être de longueur 1 ou n . S'il est de longueurx⃗ 1⋯x⃗ nx⃗ iCiO(n2)wn2w1n1 , considéronsplutôt w n (il est toujours dans la langue), de sorte que w soit dans la langue et w n ne soit pas dans la langue. Le fait que w n ne soit pas dans la langue signifie que w est une affectation satisfaisante.1wnwwnwnw
Inversement, toute affectation satisfaisante se traduit par un mot prouvant la non-circularité de la langue: l'affectation satisfaisante w appartient à la langue mais pas w n . Ainsi, le langage est circulaire si l'instance 3SAT n'est pas satisfaisante.wwn
Dans cette partie, nous discutons d'une forme normale pour les langues circulaires. Songez à certaines DFA pour une langue circulaire L . Une séquence C = C 0 , … est réelle si C 0 = s (l'état initial), tous les autres états acceptent, et C i = C j implique C i + 1 = C j + 1 . Ainsi, chaque séquence réelle est finalement périodique, et il n'y a qu'un nombre fini de séquences réelles (puisque le DFA a un nombre fini d'états).LC=C0,…C0=sCi=CjCi+1=Cj+1
On dit qu'un mot se comporte selon CC si le mot prend le DFA de l'état c i à l'état c i + 1 , pour tout i . L'ensemble de tous ces mots E ( C ) est régulier (l'argument est similaire à la première partie de cette réponse). On notera que E ( C ) est un sous - ensemble de L .cici+1iE( C)E( C)L
Étant donné une séquence C réelle , définissez C k comme étant la séquence C k ( t ) = C ( k t ) . La séquence C k est également réelle. Puisqu'il n'y a qu'un nombre fini de séquences différentes C k , le langage D ( C ) qui est l'union de tous E ( C k ) est également régulier.CCkCk( t ) = C( k t )CkCkD ( C)E( Ck)
Nous affirmons que D ( C ) a la propriété que si x , y ∈ D ( C ) alors x y ∈ D ( C ) . En effet, supposons que x ∈ C k et y ∈ C l . Alors x y ∈ C k + l . Ainsi D ( C ) = D ( C ) + peut s'écrire sous la forme rD ( C)x , y∈ D ( C)x y∈ D ( C)x ∈ Cky∈ Clx y∈ Ck+lD(C)=D(C)++ pour une expression régulière r .r+r
Chaque mot w dans les correspond linguistiques dans une certaine séquence réelle C , autrement dit , il existe une véritable séquence C que w se comporte selon l' une . Ainsi L est l'union de D ( C ) sur toute la séquence réelle C . Par conséquent, chaque langage circulaire a une représentation de la forme ∑ r + i . Inversement, chacune de ces langues est circulaire (trivialement).wCCwLD(C)C∑r+i
Considérez le langage circulaire L de tous les mots sur a , b qui contiennent soit un nombre pair, soit un ou un nombre pair de b (ou les deux). Nous montrons qu'elle ne peut pas s'écrire comme une somme disjointe ∑ r + i ; par "disjoint", nous voulons dire que r + i ∩ r + j = ∅ .La,bab∑r+ir+i∩r+j=∅
Soit N i la taille de certains DFA pour r + i , et N > max N i un entier impair . Considérons x = a N b N ! . Puisque x ∈ L , x ∈ r + i pour certains i . Par le lemme de pompage, on peut pomper un préfixe de x de longueur au plus N . Ainsi r + i génère z = a N !Nir+iN>maxNix=aNbN!x∈Lx∈r+iixNr+ib N ! . De même, y = a N ! b N est généré par certains r + j , ce qui génère également z . Notez que i ≠ j depuis x y ∉ L . La représentation ne peut donc pas être disjointe.z=aN!bN!y=aN!bNr+jzi≠jxy∉L