¿Cuántas palabras de longitud en letras evitan una palabra parcial?

9

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 .)lkajbajba=bj=0ab

Ejemplo donde y :k=4l=5

abcd
bdce
dcba <- prohibido porque apareció en la línea sobre <- prohibido porque apareció en la primera líneadc
aeedad

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 kajblk

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.

Aaron Sterling
fuente
(1) No puedo entender la correspondencia entre su primera pregunta y el ejemplo antes mencionado. ¿Cuál es la entrada en tu ejemplo? (2) En tu primera pregunta, ¿estás usando k para dos propósitos diferentes?
Tsuyoshi Ito
Con respecto a (2), sí, cometí un error, ahora editado, gracias.
Aaron Sterling
Con respecto a (1), me gustaría saber "cuánto espacio me queda" una vez que aparece una palabra parcial. Pero sí, la verdadera pregunta es cómo producir listas como la que aparece en el ejemplo (sin las palabras parciales prohibidas). Entonces, la entrada sería los valores de y , y un número deseado de palabras para producir en una lista, todo lo cual tenía la "evitación de la propiedad de palabras parciales que aparecían previamente". lkl
Aaron Sterling
2
@ Aaron, no sé cuál es su aplicación final, pero las secuencias (y generalizaciones) de Davenport-Schinzel preguntan sobre la longitud máxima de una cadena que no contiene un patrón repetitivo en particular. Es una noción relacionada.
Suresh Venkat
1
Seth Pettie también ha estado estudiando algunas generalizaciones muy ingeniosas de submatrices prohibidas.
Suresh Venkat

Respuestas:

4

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 ) = 1kF(k+3)F(n)nthF(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 - 2a0akl+1af(k)

f(k)=lf(k1)+lf(k2)
f(0)=1,f(1)=l+1
klak1ay luego cualquier otra letra que no sea a una cadena válida de longitud .ak2

Puede verificar que la siguiente es una forma cerrada para la recurrencia anterior: donde entendemos cuando .

f(k)=i=0k(k+1ii)lki
(ni)=0i>n

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,ablabSkkTkSkbUkbf(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)=1g(1)=1,h(1)=l1,f(1)=l

g(k+1)=f(k)h(k+1)=(l1)h(k)+(l2)g(k)
bSkTk+1Uk+1bUkabTk

A continuación, reorganizamos las ecuaciones de recurrencia para obtener:

f(k+1)=g(k+1)+h(k+1)=f(k)+(l1)h(k)+(l2)g(k)=f(k)+(l1)f(k)g(k)=lf(k)f(k1)

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 (!) .

f(k)=Uk(l/2)
Ukkth
mhum
fuente
Eso es muy interesante, gracias.
Aaron Sterling
2

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ΣΣ

Sylvain
fuente
Gracias. Me preguntaba si podría haber una conexión, y su respuesta aquí me dio el empujón que necesitaba para mirar los documentos a los que se hace referencia allí, y uno de ellos definitivamente resuelve una parte de uno de los problemas que estoy considerando.
Aaron Sterling
0

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 conjajba1ikj1li1ljablkji1

i=1kj1li1ljlkji1=(kj1)lk2
ajbya que una sola palabra podría coincidir con el mismo patrón de diferentes maneras. Por ejemplo, se empareja tres veces en , dos veces en y dos veces en . Podemos intentar contar el número de formas de hacer coincidir patrones varias veces y exhibir una expresión de "inclusión-exclusión", pero las formas en que el patrón puede superponerse hacen que esto sea demasiado largo.aaaaaaababababaabb

Para la primera pregunta, entendiendo que no es fijo, es decir, que queremos evitar incrustar la palabra :jab

  • ya sea primer símbolo nunca aparece, que representa posibles palabras,a(l1)k
  • o aparece por primera vez en alguna posición , entonces no podemos utilizar en el resto de la palabra: hay opciones para el factor de hasta , y opciones para el resto, dando en total palabras posibles. Si es irrelevante.a1ikb(l1)i1a(l1)kii=1k(l1)i1(l1)ki=k(l1)k1a=b

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.

Sylvain
fuente
Muchas gracias, Sylvain, aunque no creo que sea del todo correcto. Podemos utilizar más adelante en la palabra si aparece. Simplemente no podemos usar si hay exactamente letras entre y , si apareció antes. Sin embargo, tal vez no entiendo bien tu argumento. babjabajb
Aaron Sterling
Lo siento, no estaba seguro de si estaba arreglado o no. También he editado la respuesta con fijo . jj
Sylvain
1
No creo que el caso de j fijo sea correcto. Por ejemplo, si k = 4 y j = 1, la palabra aabb se resta dos veces. No he leído el caso no fijo-j.
Tsuyoshi Ito
@ Tsuyoshi Ito: tienes razón, no hay una coincidencia única en ese caso.
Sylvain
Por favor marque una respuesta incorrecta como tal.
Tsuyoshi Ito