EDITADO PARA AGREGAR : Esta pregunta ahora se responde esencialmente; por favor vea esta entrada de blog para más detalles. Gracias a todos los que publicaron comentarios y respuestas aquí.
PREGUNTA ORIGINAL
Espero que sea una versión más inteligente y mejor informada de una pregunta que hice en MathOverflow. Cuando hice esa pregunta, ni siquiera sabía el nombre del área de matemáticas en la que estaba mi problema. Ahora estoy bastante seguro de que se encuentra en la combinatoria algorítmica en palabras parciales. (Libro reciente sobre el tema aquí .)
Quiero hacer una lista de palabras en letras. Cada palabra tiene longitud exactamente . El trato es, si está en la lista, donde es un símbolo comodín / no importa, entonces nunca puede volver a aparecer en la lista. (Lo mismo es cierto si , o si y, por lo tanto, la subparte prohibida es .)
Ejemplo donde y :
<- prohibido porque apareció en la línea sobre <- prohibido porque apareció en la primera línea
La literatura sobre "palabras parciales evitables" que he encontrado ha sido infinita; eventualmente, algún patrón de palabras es inevitable si el tamaño de la palabra es lo suficientemente grande. Me gustaría encontrar versiones finitarias de tales teoremas. Entonces, pregunta:
Dada una palabra parcial de forma en un alfabeto de letras, ¿cuántas palabras de longitud evitan, y se pueden producir explícitamente en tiempo polinomial?l k
No espero que la pregunta anterior sea difícil y, a menos que me falte una sutileza, podría calcularla yo mismo. La verdadera razón por la que estoy publicando en este sitio es porque necesito saber mucho más sobre las propiedades de tales listas de palabras para mi aplicación, por lo que espero que alguien pueda responder la siguiente pregunta:
¿Se ha estudiado esto en general? ¿Cuáles son algunos documentos que consideran, no solo si una palabra parcial es inevitable, sino "cuánto tiempo toma" antes de que sea inevitable?
Gracias.
fuente
Respuestas:
Aquí hay un caso especial: el número de palabras binarias de longitud modo que no aparezcan dos consecutivas es , donde es el número de Fibonacci (comenzando con ). La prueba es a través de la representación de Zeckendorf .F ( k + 3 ) F ( n ) n t h F ( 1 ) = 1 , F ( 2 ) = 1k F(k+3) F(n) nth F(1)=1,F(2)=1
EDITAR: Podemos extender este caso especial inicial al caso especial ligeramente más grande de . Considere cadenas de longitud sobre un alfabeto de tamaño modo que la letra no aparezca dos veces consecutivas. Sea el número de tales cadenas (que llamaremos "válidas"). Afirmamos que: La intuición es que podemos construir un válido cadena de longitud : a) junto a cualquiera de las letras que no son a una cadena válida de longitud , o b) junto a la letrak l + 1 a f ( k ) f ( k ) = l ∗ f ( k - 1 ) + l ∗ f ( k - 2 ) f ( 0 ) = 1 , f ( 1 ) = l + 1 k l a k - 1 a a k - 2a◊0a k l+1 a f(k)
Puede verificar que la siguiente es una forma cerrada para la recurrencia anterior: donde entendemos cuando .
EDITAR # 2: eliminemos un caso más: a . Llamaremos cadenas sobre un alfabeto de elemento que no contiene la subcadena , "válido" y dejaremos que denote el conjunto de cadenas válidas de longitud . Además, definamos que es el subconjunto de consiste en cadenas que comienzan con y para ser aquellas que no comienzan con . Finalmente, dejemos que,,.◊0b,a≠b l ab Sk k Tk Sk b Uk b f(k)=|Sk| g(k)=|Tk| h(k)=|Uk|
Observamos que y . A continuación, inferimos las siguientes recurrencias: El primero proviene del hecho de que agregar una al comienzo de cualquier elemento de produce un elemento de . La segunda proviene de la observación de que se puede construir un elemento de mediante la adición de cualquier carácter pero a la parte frontal de cualquier elemento de o mediante la adición de cualquier carácter, pero o a la parte frontal de cualquier elemento en .g(0)=0,h(0)=1,f(0)=1 g(1)=1,h(1)=l−1,f(1)=l
A continuación, reorganizamos las ecuaciones de recurrencia para obtener:
Podemos obtener una solución de forma cerrada bastante opaca para esta recurrencia al manipular un poco las cosas generadoras de funciones o, si somos flojos, dirigiéndonos directamente a Wolfram Alpha . Sin embargo, con un poco de búsqueda en Google y hurgando en OEIS , encontramos que en realidad tenemos: donde es el polinomio Chebyshev del segundo tipo (!) .
fuente
Un enfoque completamente diferente para la primera pregunta reutiliza las respuestas a la pregunta reciente sobre la generación de palabras en un lenguaje regular : es suficiente aplicar estos algoritmos para la longitud en el lenguaje regular donde es el alfabeto.k Σ∗aΣjbΣ∗ Σ
fuente
Actualizado: esta respuesta es incorrecta :
asumiendo que es fijo, podemos contar la cantidad de formas en que un patrón puede coincidir: el primero puede emparejarse con símbolo en alguna posición , y tenemos posibilidades antes de ese punto, entre y , y para el resto de la cadena, por lo tanto, un total de casos. Como señaló Tsuyoshi Ito en los comentarios, este recuento no es el número de palabras diferentes que coinciden conj a◊jb a 1≤i≤k−j−1 li−1 lj a b lk−j−i−1
Para la primera pregunta, entendiendo que no es fijo, es decir, que queremos evitar incrustar la palabra :j ab
Para la segunda pregunta, no tengo mucho que sugerir; existe una relación con las incrustaciones de palabras, pero los resultados que conozco sobre secuencias malas para el Lema de Higman no se aplican de inmediato.
fuente