Definições
Definição 1 : Seja S um conjunto de palavras. Dizemos que S é praticamente livre de prefixos infinitos (nome inventado para o propósito desta resposta) se houver as palavras você0 0, ... , un, … e v1, … , Vn, … tais que:
Para cada n ≥ 1 , vocên e vn não estão vazios e começam com letras distintas;
S={u0v1,…,u0…unvn+1,…} .
A intuição é que você pode colocar todas essas palavras em uma árvore com raízes infinitas (a ■
é a raiz, as ▲
são as folhas e •
os restantes nós internos) da seguinte forma, de forma que as palavras em S sejam exatamente os rótulos dos caminhos da raiz para uma folha:
u₀ u₁ u₂
■-----•-----•-----•⋅⋅⋅
| | |
| v₁ | v₂ | v₃
| | |
▲ ▲ ▲
Proposição 1.1 : Um conjunto bastante livre de prefixos é infinito.
Prova de proposição 1.1 : Suponha que u0…unvn+1 é um prefixo estrito de u0…umvm+1 . Existem dois casos:
Se n<m então vn+1 é um prefixo de un+1…umvm+1 . Isso é impossível porque un+1 e vn+1 têm primeiras letras distintas.
Se n>m então um+1…unvn+1 é um prefixo de vm+1 . Esta é impossível, porque um+1 e vm+1 têm distintas primeiras letras.
Proposição 1.2 : Um conjunto livre de prefixos bem infinito é infinito.
Prova de proposição 1,2 : 1,1 Na prova, mostrou-se que se n≠m seguida, u0…unvn+1 e u0…umvm+1 não são comparáveis para o fim prefixo. Portanto, eles não são iguais.
Prova principal
Proposição 2 : Qualquer conjunto sem prefixos infinito contém um bom conjunto sem prefixos.
Proposição 3 : Um idioma contém um conjunto livre de prefixos infinito se e somente se ele contém um conjunto livre de prefixos bem infinito.
Prova abaixo.
Prova da proposição 3 : ⇒ pela proposição 2. ⇐ pelas proposições 1.1 e 1.2.
Proposição 4 : O conjunto de subconjuntos bem livres de prefixos de um idioma regular (codificado como uma palavra infinita u0¯¯¯¯¯v1ˆu1¯¯¯¯¯v2ˆu2¯¯¯¯¯… ) é ω regular (e o tamanho do Büchi autômato reconhecendo que é polinomial no tamanho da NFA reconhecendo a linguagem regular).
Prova abaixo.
Teorema 5 : Decidindo se um idioma regular descrito por um NFA contém um subconjunto infinito livre de prefixos pode ser feito em tempo polinomial no tamanho do NFA.
Prova do teorema 5 : Pela proposição 3, é suficiente testar se ele contém um subconjunto livre de prefixos bastante infinito, o que pode ser feito em tempo polinomial construindo o autômato Büchi fornecido pela proposição 4 e testando o não vazio de seu idioma (que pode ser feito em tempo linear no tamanho do autômato Büchi).
Prova da proposição 2
Lema 2.1 : Se S é um conjunto sem prefixo, o mesmo ocorre w−1S (para qualquer palavra w ).
Prova 2.1 : Por definição.
Lema 2.2 : Seja S um conjunto infinito de palavras. Deixe w:=lcp(Sn) ser a mais longa prefixo comum a todas as palavras em S . S e w−1S têm o mesmo cardeal.
Prova 2.2 : Defina f:w−1S→S por f(x)=wx . É bem definido por definição de w−1S , injetivo por definição de f e surjetivo por definição de w .
Prova da proposição 2 : Construímos un e vn por indução em n , com a hipótese de indução Hn composta pelas seguintes partes:
(P1) Para todosk∈{1,…,n} ,u0…uk−1vk∈S ;
(P2) Para todos osk∈{1,…,n} ,uk evk não estão vazios e começam com letras distintas;
(P3) Sn:=(u0…un)−1S é infinito;
(P4) Não existe um prefixo não vazio comum a todas as palavras emSn . Em outras palavras: Não existea letra a tal queSn⊆aΣ∗ .
Observação 2.3 : Se tivermos sequências que verificam Hn sem (P4) , podemos modificar un para torná-las também satisfatórias (P4) . De fato, basta substituir un por unlcp(Sn) . (P1) não é afetado. (P2) é trivial. (P4) é por construção. (P3) é pelo lema 3.
Agora construímos as seqüências por indução em n :
Inicialização: H0 é verdadeiro usando u0:=lcp(S) (isto é, usando u0:=ε e aplicando a observação 3.1).
Etapa de indução: suponha que tenhamos as palavras u1,…,un e v1,…,vn modo que Hn para alguns n . Vamos construir un+1 e vn+1 modo que Hn+1 .
Como Sn é infinito e sem prefixo (pelo lema 1), ele não contém ε modo que Sn=⨆a∈Σ(Sn∩aΣ∗) . Como Sn é infinito, existe uma letra a tal que Sn∩aΣ∗ é infinito. Por (P4) , existe uma letra b distinta de a tal que Sn∩bΣ∗não está vazio. Escolha vn+1∈Sn∩bΣ∗ . Tomando un+1 para ser a satisfaria (P1) , (P2) e (P3) , aplicamos a observação 3.1 para obter (P4) : un+1:=alcp(a−1Sn).
(P1) u1…unvn+1∈u1…un(Sn∩bΣ∗)⊆S .
(P2) Por definição deun+1 evn+1 .
(P3) a−1Sn é infinito por definição dea , eSn+1 é, portanto, infinito pelo lema 3.
(P4) Por definição deun+1 .
Prova de proposição 4
Prova da proposição 4 : Seja A=(Q,→,Δ,q0,F) ser um NFA.
A idéia é a seguinte: lemos u0 , lembramos onde estamos, lemos v1 , voltamos para onde estávamos depois de ler u0 , lemos u1 , lembro onde estamos, ... Lembramos também a primeira letra que foi leia cada vn para garantir que un comece com outra letra.
Foi-me dito que isso poderia ser mais fácil com os autômatos com várias cabeças, mas eu não estou muito familiarizado com o formalismo, então vou descrevê-lo usando um autômato Büchi (com apenas uma cabeça).
Nós estabelecemos Σ′:=Σ¯¯¯¯⊔Σˆ , onde os símbolos sobrelinhadas vai ser usado para o descreve uk s e os símbolos com chapéus para o vk s.
Definimos Q′:=Q×({⊥}⊔(Q×Σ)) , onde:
(q,⊥) significa que você está lendo algumun ;
(q,(p,a)) significa que você terminou de ler algunsun no estadop , que agora está lendovn+1 que começa coma e que, assim que terminar, voltará parap para ler umun+1 que não começar coma .
Definimos q′0:=(q0,⊥) porque começamos lendo u0 .
Definimos F′ como F×Q×Σ .
O conjunto de transições →′ é definido da seguinte forma:
" un " Para cada transição q→aq′ , adicione (q,⊥)→′a¯¯¯(q′,⊥) ;
" un a vn+1 " Para cada transição q→aq′ , add (q,⊥)→′aˆ(q′,(q,a)) ;
" vn " Para cada transição q→aq′ , adicionar (q,(p,a))→′aˆ(q′,(p,a)) ;
" vn to un " Para cada transição p→ap′ onde p é final e a letra b distinta de a , adicione (q,(p,b))→′a¯¯¯(p′,⊥) ;
Lema 4.1 : u0¯¯¯¯¯v1ˆu1¯¯¯¯¯v2ˆ…un¯¯¯¯¯vn+1ˆ é aceito por A′ se se para cada n≥1 , un e vn não estiverem vazios e começarem com letras distintas , e para cada n≥0 , u0…unvn+1∈L(A) .
Prova do lema 4.1 : deixada para o leitor.