Définitions
Définition 1 : Soit SS un ensemble de mots. On dit que SS est joliment infini sans préfixe (nom composé aux fins de cette réponse) s'il y a les mots u 0 , … , u n , …u0,…,un,… et v 1 , … , v n , …v1,…,vn,… tels que:
Pour chaque n ≥ 1n≥1 , u nun et v n nevn sont pas vides et commencent par des lettres distinctes;
S = { u 0 v 1 , … , u 0 … u n v n + 1 , … }S={u0v1,…,u0…unvn+1,…} .
L'intuition est que vous pouvez mettre tous ces mots sur un arbre enraciné à l'infini (le ■
est la racine, les ▲
feuilles et les •
nœuds intérieurs restants) de la forme suivante de telle sorte que les mots en SS sont exactement les étiquettes des chemins de la racine à la feuille:
u₀ u₁ u₂
■-----•-----•-----•⋅⋅⋅
| | |
| v₁ | v₂ | v₃
| | |
▲ ▲ ▲
Proposition 1.1 : Un ensemble sans préfixe bien infini est sans préfixe.
Preuve de la proposition 1.1 : Supposons que u 0 … u n v n + 1u0…unvn+1 est un préfixe strict de u 0 … u m v m + 1u0…umvm+1 . Il y a deux cas:
Si n < m,n<m alors v n + 1vn+1 est un préfixe de u n + 1 … u m v m + 1un+1…umvm+1 . Ceci est impossible car u n + 1un+1 et v n + 1vn+1 ont des premières lettres distinctes.
Si n > m,n>m alors u m + 1 … u n v n + 1um+1…unvn+1 est un préfixe de v m + 1vm+1 . Cela est impossible car u m + 1um+1 et v m + 1vm+1 ont des premières lettres distinctes.
Proposition 1.2 : Un ensemble sans préfixe bien infini est infini.
Preuve de la proposition 1.2 : Dans la preuve 1.1, nous avons montré que si n ≠ mn≠m alors u 0 … u n v n + 1u0…unvn+1 et u 0 … u m v m + 1u0…umvm+1 ne sont pas comparables pour l'ordre des préfixes. Ils ne sont donc pas égaux.
Preuve principale
Proposition 2 : Tout ensemble sans préfixe infini contient un bel ensemble sans préfixe infini.
Proposition 3 : Un langage contient un ensemble sans préfixe infini si et seulement s'il contient un ensemble sans préfixe bien infini.
Preuve ci-dessous.
Preuve de la proposition 3 : ⇒⇒ par la proposition 2. ⇐⇐ par les propositions 1.1 et 1.2.
Proposition 4 : L'ensemble des sous-ensembles sans préfixe d'une langue régulière (codés comme un mot infini ¯ u 0 ^ v 1 ¯ u 1 ^ v 2 ¯ u 2 …u0¯¯¯¯¯v1ˆu1¯¯¯¯¯v2ˆu2¯¯¯¯¯… ) est ω-ω régulier (et la taille des Büchi automate le reconnaissant est polynomial dans la taille du NFA reconnaissant le langage régulier).
Preuve ci-dessous.
Théorème 5 : décider si un langage régulier décrit par un NFA contient un sous-ensemble infini sans préfixe peut être fait en polynôme temporel de la taille du NFA.
Preuve du théorème 5 : Par la proposition 3, il suffit de tester s'il contient un sous-ensemble sans préfixe bien infini, ce qui peut être fait en temps polynomial en construisant l'automate Büchi donné par la proposition 4 et en testant la non-vacuité de son langue (ce qui peut être fait en temps linéaire de la taille de l'automate Büchi).
Preuve de la proposition 2
Lemme 2.1 : Si SS est un ensemble sans préfixe, il en est de même de w - 1 Sw−1S (pour tout mot ww ).
Preuve 2.1 : Par définition.
Lemme 2.2 : Soit SS un ensemble infini de mots. Laissez w : = lcp ( S n )w:=lcp(Sn) soit le plus long préfixe commun à tous les mots SS . SS et w - 1 Sw−1S ont le même cardinal.
Preuve 2.2 : Définissez f : w - 1 S → Sf:w−1S→S par f ( x ) = w xf(x)=wx . Elle est bien définie par la définition de w - 1 Sw−1S , injective par définition de ff et surjective par définition de ww .
Preuve de la proposition 2 : On construit u nun et v nvn par induction sur nn , avec l'hypothèse d'induction H nHn composée des parties suivantes:
( P 1 )(P1) Pour tout k ∈ { 1 , … , n }k∈{1,…,n} , u 0 … u k - 1 v k ∈ Su0…uk−1vk∈S ;
( P 2 )(P2) Pour tout k ∈ { 1 , … , n }k∈{1,…,n} , u kuk et v kvk sont non vides et commencent par des lettres distinctes;
( P 3 ) (P3) S n : = ( u 0 … u n ) - 1 SSn:=(u0…un)−1S est infini;
( P 4 )(P4) Il n'y a pas de préfixe non vide commun à tous les mots dans S nSn . En d'autres termes: il n'y a pas de lettre aa telle que S n ⊆ a Σ ∗Sn⊆aΣ∗ .
Remarque 2.3 : Si nous avons des séquences qui vérifient H nHn sans ( P 4 )(P4) , nous pouvons modifier u nun pour les faire satisfaire également ( P 4 )(P4) . En effet, il suffit de remplacer u nun par u n lcp ( S n )unlcp(Sn) . ( P 1 )(P1) n'est pas affecté. ( P 2 )(P2) est trivial. ( P 4 )(P4) est par construction. ( P 3 )(P3) est par le lemme 3.
Nous construisons maintenant les séquences par induction sur nn :
Initialisation: H 0H0 est vrai en prenant u 0 : = lcp ( S )u0:=lcp(S) (c'est-à-dire en prenant u 0 : = εu0:=ε et en appliquant la remarque 3.1).
Étape d'induction: Supposons que nous ayons les mots u 1 , … , u nu1,…,un et v 1 , … , v nv1,…,vn tels que H nHn pour certains nn . Nous allons construire u n + 1un+1 et v n + 1vn+1 tels que H n + 1Hn+1 .
Puisque S nSn est infini et sans préfixe (par le lemme 1), il ne contient pas ε deε sorte que S n = ⨆ a ∈ Σ ( S n ∩ a Σ ∗ )Sn=⨆a∈Σ(Sn∩aΣ∗) . Puisque S n est infini, il existe une lettre a telle que S n ∩ a Σ ∗ est infinie. Par ( P 4 ) , il y a une lettre b distincte de a telle que S n ∩ b Σ∗ n'est pas vide. Sélectionnez v n + 1 ∈ S n ∩ b Σ ∗ . Prendre u n + 1 pour être un satisferait ( P 1 ) , ( P 2 ) et ( P 3 ) donc on applique la remarque 3.1 pour obtenir ( P 4 ) : u n + 1 : = a lcp ( a - 1 S n) .
( P 1 ) u 1 ... u n v n + 1 ∈ u 1 ... u n ( S n ∩ b Σ * ) ⊆ S .
( P 2 ) Par définition de u n + 1 et v n + 1 .
( P 3 ) a - 1 S n est infini par définition de a , et S n + 1 est donc infini par lemme 3.
( P 4 ) Par définition de u n + 1 .
Preuve de proposition 4
Preuve de la proposition 4 : Soit A = ( Q , → , Δ , q 0 , F ) un NFA.
L'idée est la suivante: on lit u 0 , on se rappelle où on est, on lit v 1 , on revient en arrière où on était après avoir lu u 0 , on lit u 1 , on se rappelle où on est, ... On se souvient aussi de la première lettre qui était lisez chaque v n pour vous assurer que u n commence par une autre lettre.
On m'a dit que cela pourrait être plus facile avec des automates à têtes multiples, mais je ne connais pas vraiment le formalisme, je vais donc le décrire en utilisant un automate Büchi (avec une seule tête).
On pose Σ ′ : = ¯ Σ ⊔ Σ , où les symboles surlignés seront utilisés pour le décrituks et les symboles avecchapeaux pour lesvks.
On pose Q ′ : = Q × ( { ⊥ } ⊔ ( Q × Σ ) ) , où:
( q , ⊥ ) signifie que vous lisez des u n ;
( q , ( p , a ) ) signifie que vous avez fini de lire certains u n dans l'état p , que vous lisez maintenant v n + 1 qui commence par un a , et qu'une fois que vous avez terminé, vous reviendrez à p pour lire un u n + 1 qui ne commence pas par a .
Nous fixons q ′ 0 : = ( q 0 , ⊥ ) car on commence par lire u 0 .
Nous définissons F ′ comme F × Q × Σ .
L'ensemble des transitions → ′ est défini comme suit:
" u n " Pour chaque transition q a → q ′ , ajoutez ( q , ⊥ ) ¯ a → ′ ( q ′ , ⊥ ) ;
" U n à v n + 1 " pour chaque transition q a → q ' , add ( q , ⊥ ) une→'(q',(q,a));
" V n " Pour chaque transition q a → q ' , add ( q , ( p , a ) ) une→'(q',(p,a));
" v n à u n " Pour chaque transition p a → p ′ où p est final et la lettre b distincte de a , ajoutez ( q , ( p , b ) ) ¯ a →′(p′,⊥);
Lemme 4.1 : ¯ u 0 ^ v 1 ¯ u 1 ^ v 2 ... ¯ u n ^ v n + 1 est acceptée par A ' ssi pour chaque n ≥ 1 , u n et v n sont non-vide et de commencer avec des lettres distinctes , et pour chaque n ≥ 0 , u 0 … u n v n + 1 ∈ L ( A) .
Preuve du lemme 4.1 : laissée au lecteur.