EDITADO PARA ADICIONAR : Esta questão agora está essencialmente respondida; consulte esta entrada do blog para obter mais detalhes. Obrigado a todos que postaram comentários e respostas aqui.
PERGUNTA ORIGINAL
Esta é uma versão esperançosamente mais inteligente e bem informada de uma pergunta que fiz no MathOverflow. Quando fiz essa pergunta, eu nem sabia o nome da área da matemática em que estava o meu problema. Agora, tenho certeza de que está na Combinatória Algorítmica de Palavras Parciais. (Livro recente sobre o assunto aqui .)
Quero fazer uma lista de palavras em letras. Cada palavra tem comprimento exatamente . O negócio é, se está na lista, onde é um símbolo wildcard /-cuidado não tem, então, pode nunca aparecem novamente na lista. (O mesmo vale se , ou se e, portanto, a subpalavra proibida é .)
Exemplo onde e :
<- proibida por causa apareceu na linha acima
<- proibida porque apareceu na primeira linha
A literatura sobre "palavras parciais evitáveis" que encontrei foi infinita - eventualmente algum padrão de palavras é inevitável se o tamanho da palavra for grande o suficiente. Eu gostaria de encontrar versões financeiras de tais teoremas. Então, pergunta:
Dada uma palavra parcial da forma em um alfabeto de l letras, quantas palavras de comprimento k a evitam e podem ser explicitamente produzidas em tempo polinomial?
Não espero que a pergunta acima seja difícil e, a menos que exista uma sutileza, posso calcular ela mesma. A verdadeira razão pela qual estou postando neste site é porque preciso saber muito mais sobre as propriedades dessas listas de palavras para o meu aplicativo, por isso espero que alguém possa responder à pergunta a seguir:
Isso foi estudado em geral? Quais são alguns artigos que consideram, não apenas se uma palavra parcial é inevitável, mas "quanto tempo leva" antes de se tornar inevitável?
Obrigado.
fonte
Respostas:
Aqui é um caso especial: o número de palavras binárias de comprimento de tal modo que não há dois uns aparecem consecutivamente é F ( k + 3 ) , em que M ( N ) é o n t h número de Fibonacci (começando com F ( 1 ) = 1 , F ( 2 ) = 1 ). A prova é através da representação Zeckendorf .k F(k+3) F(n) nth F(1)=1,F(2)=1
EDIT: Podemos estender esse caso especial inicial para o caso especial um pouco maior de . Considere cadeias de comprimento k sobre um alfabeto de tamanho l + 1 , para que a letra a não apareça duas vezes consecutivas. Seja f ( k ) o número de tais strings (que chamaremos de "válidos"). Afirmamos que: f ( k ) = l ∗ f ( k - 1 ) + l ∗ f ( k - 2 )a◊0a k l+1 a f(k)
Você pode verificar se o seguinte é um formulário fechado para a recorrência acima: onde entendemos quando .
EDIÇÃO # 2: Vamos eliminar mais um caso - a . Chamaremos as strings sobre um alfabeto de elemento que não contém a subcadeia , "valid" e deixaremos denotar o conjunto de strings válidas de comprimento . Além disso, vamos definir ser o subconjunto de consistindo de cordas começando com e a ser aqueles que não comece por . Finalmente, deixe,,.◊0b,a≠b l ab Sk k Tk Sk b Uk b f(k)=|Sk| g(k)=|Tk| h(k)=|Uk|
Observa-se que e . Em seguida, inferimos as seguintes recorrências: O primeiro vem do fato de que adicionar ao início de qualquer elemento de produz um elemento de . O segundo vem da observação de que podemos construir um elemento de adicionando qualquer caractere, mas à frente de qualquer elemento de ou adicionando qualquer caractere, mas ou à frente de qualquer elemento em .g(0)=0,h(0)=1,f(0)=1 g(1)=1,h(1)=l−1,f(1)=l
Em seguida, reorganizamos as equações de recorrência para obter:
Podemos obter uma solução de forma fechada bastante opaca para essa recorrência, mexendo um pouco com a geração de coisas funcionais ou, se tivermos preguiça, indo direto para o Wolfram Alpha . No entanto, com um pouco de pesquisa e pesquisa no OEIS , descobrimos que realmente temos: onde é o polinômio Chebyshev do segundo tipo (!) .
fonte
Uma abordagem completamente diferente para a primeira pergunta reutiliza as respostas da pergunta recente sobre a geração de palavras em uma linguagem regular : basta aplicar esses algoritmos para o comprimento na linguagem regular , onde é o alfabeto.k Σ∗aΣjbΣ∗ Σ
fonte
Atualizado: esta resposta está incorreta :
assumindo que é fixo, podemos contar o número de maneiras que um padrão pode ser correspondido: o primeiro que símbolo pode ser correspondido em alguma posição , e temos possibilidades antes desse ponto, entre e , e para o restante da corda, assim, um total de casos. Conforme observado por Tsuyoshi Ito nos comentários, essa contagem não é o número de palavras diferentes correspondentesj a◊jb a 1≤i≤k−j−1 li−1 lj a b lk−j−i−1
Para a primeira pergunta, entendendo que não é fixo, ou seja, queremos evitar a incorporação da palavra :j ab
Para a segunda pergunta, não tenho muito o que sugerir; existe uma relação com a incorporação de palavras, mas os resultados que conheço sobre más sequências para o lema de Higman não se aplicam imediatamente.
fonte