Articulo de referencia

Subsecuencia creciente más larga

En informática , el problema de la subsecuencia creciente más larga tiene como objetivo encontrar una subsecuencia de una secuencia dada en la que los elementos de la subsecuenc...

En informática , el problema de la subsecuencia creciente más larga tiene como objetivo encontrar una subsecuencia de una secuencia dada en la que los elementos de la subsecuencia estén ordenados en orden ascendente y en la que la subsecuencia sea lo más larga posible. Esta subsecuencia no tiene por qué ser contigua ni única. Las subsecuencias crecientes más largas se estudian en el contexto de diversas disciplinas relacionadas con las matemáticas , incluyendo la algoritmia , la teoría de matrices aleatorias , la teoría de la representación y la física . [ 1 ] [ 2 ] El problema de la subsecuencia creciente más larga es resoluble en tiempoO(norteregistronorte),{\displaystyle O(n\log n),}dóndenorte{\displaystyle n}denota la longitud de la secuencia de entrada. [ 3 ]

Ejemplo

En los primeros 16 términos de la secuencia binaria de Van der Corput

0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15

una de las subsecuencias crecientes más largas es

0, 2, 6, 9, 11, 15.

Esta subsecuencia tiene una longitud de seis; la secuencia de entrada no tiene subsecuencias crecientes de siete miembros. La subsecuencia creciente más larga en este ejemplo no es la única solución: por ejemplo,

0, 4, 6, 9, 11, 15
0, 2, 6, 9, 13, 15
0, 4, 6, 9, 13, 15

son otras subsecuencias crecientes de igual longitud en la misma secuencia de entrada.

Relación con otros problemas algorítmicos

El problema de la subsecuencia creciente más larga está estrechamente relacionado con el problema de la subsecuencia común más larga , que tiene una solución de programación dinámica de tiempo cuadrático : la subsecuencia creciente más larga de una secuencia.S{\displaystyle S}es la subsecuencia común más larga deS{\displaystyle S}yT,{\displaystyle T,}dóndeT{\displaystyle T}es el resultado de la clasificaciónS.{\displaystyle S.}Sin embargo, para el caso especial en el que la entrada es una permutación de los enteros1,2,,norte,{\displaystyle 1,2,\ldots ,n,}Este enfoque puede hacerse mucho más eficiente, lo que lleva a límites de tiempo de la formaO(norteregistroregistronorte).{\displaystyle O(n\log \log n).}[ 4 ]

La camarilla más grande en un grafo de permutación corresponde a la subsecuencia decreciente más larga de la permutación que define el grafo (suponiendo que la secuencia original no permutada está ordenada de menor a mayor valor). De manera similar, el conjunto independiente máximo en un grafo de permutación corresponde a la subsecuencia no decreciente más larga. Por lo tanto, los algoritmos de subsecuencia creciente más larga pueden utilizarse para resolver el problema de la camarilla de manera eficiente en grafos de permutación. [ 5 ]

En la correspondencia de Robinson-Schensted entre permutaciones y tablas de Young , la longitud de la primera fila de la tabla correspondiente a una permutación es igual a la longitud de la subsecuencia creciente más larga de la permutación, y la longitud de la primera columna es igual a la longitud de la subsecuencia decreciente más larga. [ 3 ]

Algoritmos eficientes

El algoritmo que se describe a continuación resuelve eficientemente el problema de la subsecuencia creciente más larga con arreglos y búsqueda binaria . Procesa los elementos de la secuencia en orden, manteniendo la subsecuencia creciente más larga encontrada hasta el momento. Denotemos los valores de la secuencia comoincógnita[0],incógnita[1],,{\displaystyle X[0],X[1],\ldots ,}etc. Luego, después del procesamientoincógnita[i],{\displaystyle X[i],}El algoritmo habrá almacenado un número entero.L{\displaystyle L}y valores en dos matrices:

  • L{\displaystyle L}— almacena la longitud de la subsecuencia creciente más larga encontrada hasta el momento.
  • METRO[l]{\displaystyle M[l]}— almacena el índicek{\displaystyle k}del valor más pequeñoincógnita[k]{\displaystyle X[k]}de tal manera que exista una subsecuencia creciente de longitudl{\displaystyle l}terminando enincógnita[k]{\displaystyle X[k]}en el rangoki.{\displaystyle k\leq i.}Explícitamente, supongamos queKi,l{\displaystyle K_{i,l}}denota el conjunto de todos los índicesj{\displaystyle j}de tal manera queji{\displaystyle j\leq i}y existe una subsecuencia creciente de longitudl{\displaystyle l}terminando enincógnita[j].{\displaystyle X[j].}Entoncesk=METRO[l]{\displaystyle k=M[l]}es el índice enKi,l{\displaystyle K_{i,l}}para quéincógnita[METRO[l]]{\displaystyle X[M[l]]}se minimiza; lo que significa queMETRO[l]Ki,l{\displaystyle M[l]\in K_{i,l}}yincógnita[METRO[l]]=minjKi,lincógnita[j]{\displaystyle X[M[l]]=\min _{j\in K_{i,l}}X[j]}(o equivalentemente,METRO[l]Ki,l{\displaystyle M[l]\in K_{i,l}}y por cadajKi,l,{\displaystyle j\in K_{i,l},}incógnita[METRO[l]]incógnita[j]{\displaystyle X[M[l]]\leq X[j]}); si varios índices satisfacen esta condición entoncesMETRO[l]{\displaystyle M[l]}es el más grande.
    • Para aclarar, "existe una subsecuencia creciente de longitudl{\displaystyle l}terminando enincógnita[k]{\displaystyle X[k]}" significa que existenl{\displaystyle l}índicesi1<i2<<il=k{\displaystyle i_{1}<i_{2}<\cdots <i_{l}=k}terminando enk{\displaystyle k}de tal manera queincógnita[i1]<incógnita[i2]<<incógnita[k].{\displaystyle X\left[i_{1}\right]<X\left[i_{2}\right]<\cdots <X[k].}
    • Tenga en cuenta que1li+1,{\displaystyle 1\leq l\leq i+1,}porquel1{\displaystyle l\geq 1}representa la longitud de la subsecuencia creciente, yk0{\displaystyle k\geq 0}representa el índice de su terminación.
    • La longitud deMETRO{\displaystyle M}es1{\displaystyle 1}más que la longitud deincógnita{\displaystyle X}pero es posible que no todos los elementos de este array sean utilizados por el algoritmo (de hecho, si la secuencia creciente más larga tiene longitudL{\displaystyle L}entonces soloMETRO[1],,METRO[L]{\displaystyle M[1],\ldots ,M[L]}son utilizados por el algoritmo). Sin embargo, siMETRO[l]{\displaystyle M[l]}entonces se utiliza/definel1METRO[l]{\displaystyle l-1\leq M[l]}(y además, en cada iteración)i,{\displaystyle i,}METRO[l]i{\displaystyle M[l]\leq i}también se mantendrá).METRO[0]{\displaystyle M[0]}no está definido ya que las secuencias de longitud0{\displaystyle 0}no tienen índice final (METRO[0]{\displaystyle M[0]}puede ser cualquier valor).
  • PAG[k]{\displaystyle P[k]}— almacena el índice del predecesor deincógnita[k]{\displaystyle X[k]}en la subsecuencia creciente más larga que termina enincógnita[k].{\displaystyle X[k].}
    • La longitud dePAG{\displaystyle P}es igual a la deincógnita,{\displaystyle X,}
    • Sik>0{\displaystyle k>0}entoncesPAG[k]<k{\displaystyle P[k]<k}mientrasPAG[0]{\displaystyle P[0]}no está definido desdeincógnita[0]{\displaystyle X[0]}no tiene predecesor (PAG[0]{\displaystyle P[0]}puede ser cualquier valor).

Dado que el algoritmo que se muestra a continuación utiliza numeración basada en cero , para mayor claridadMETRO{\displaystyle M}está acolchado conMETRO[0],{\displaystyle M[0],}que queda sin usar para queMETRO[l]{\displaystyle M[l]}corresponde a una subsecuencia de longitudl.{\displaystyle l.}Una implementación real puede omitirMETRO[0]{\displaystyle M[0]}y ajustar los índices en consecuencia.

Tenga en cuenta que, en cualquier punto del algoritmo, la secuencia incógnita[METRO[1]],incógnita[METRO[2]],,incógnita[METRO[L]]{\displaystyle X[M[1]],X[M[2]],\ldots ,X[M[L]]} es creciente. Porque, si hay una subsecuencia creciente de longitudl2{\displaystyle l\geq 2}terminando enincógnita[METRO[l]],{\displaystyle X[M[l]],}entonces también hay una subsecuencia de longitudl1{\displaystyle l-1}terminando en un valor menor: es decir, el que termina enincógnita[PAG[METRO[l]]].{\displaystyle X[P[M[l]]].}Por lo tanto, podemos realizar búsquedas binarias en esta secuencia en tiempo logarítmico.

El algoritmo procede entonces de la siguiente manera:

Una demostración del código.
P = matriz de longitud N M = matriz de longitud N + 1 M[0] = -1 // indefinido, por lo que se puede establecer en cualquier valor. L = 0 para i en el rango de 0 a N-1: //N-1 incluido // Búsqueda binaria del l ≤ L positivo más pequeño // tal que X[M[l]] >= X[i] lo = 1 hi = L + 1 mientras lo < hi: medio = lo + piso((hi-lo)/2) // lo <= medio < hi si X[M[mid]] >= X[i] alto = medio else : // si X[M[mid]] < X[i] lo = medio + 1 // Después de buscar, lo == hi es 1 mayor que el // longitud del prefijo más largo de X[i] nuevoL = lo // El predecesor de X[i] es el último índice de // la subsecuencia de longitud newL-1 P[i] = M[newL-1] M[newL] = i Si newL > L: // Si encontramos una subsecuencia más larga que cualquiera que hayamos encontrado // encontrado todavía, actualizar L L = nuevoL // Reconstruir la subsecuencia creciente más larga // Consiste en los valores de X en los índices L: // ..., P[P[M[L]]], P[M[L]], M[L] S = matriz de longitud L k = M[L] para j en el rango L-1 a 0: //0 incluido S[j] = X[k] k = P[k] devolver S

Debido a que el algoritmo realiza una única búsqueda binaria por elemento de la secuencia, su tiempo total se puede expresar utilizando la notación Big O comoO(norteregistronorte).{\displaystyle O(n\log n).}Fredman (1975) analiza una variante de este algoritmo, que atribuye a Donald Knuth ; en la variante que estudia, el algoritmo comprueba si cada valorincógnita[i]{\displaystyle X[i]}puede utilizarse para extender la secuencia creciente más larga actual, en tiempo constante, antes de realizar la búsqueda binaria. Con esta modificación, el algoritmo utiliza como máximonorteregistro2nortenorteregistro2registro2norte+O(norte){\displaystyle n\log _{2}n-n\log _{2}\log _{2}n+O(n)}comparaciones en el peor de los casos, que es óptimo para un algoritmo basado en comparaciones hasta el factor constante en elO(norte){\displaystyle O(n)}término. [ 6 ]

Ejemplo de ejecución

límites de longitud

Según el teorema de Erdős-Szekeres , cualquier secuencia denorte2+1{\displaystyle n^{2}+1}distintos enteros tienen una subsecuencia creciente o decreciente de longitudnorte+1.{\displaystyle n+1.}[ 7 ] [ 8 ] Para entradas en las que cada permutación de la entrada es igualmente probable, la longitud esperada de la subsecuencia creciente más larga es aproximadamente2norte.{\displaystyle 2{\sqrt {n}}.}[ 9 ] [ 2 ]

En el límite comonorte{\displaystyle n}El teorema de Baik-Deift-Johansson dice que la longitud de la subsecuencia creciente más larga de una secuencia aleatoriamente permutada denorte{\displaystyle n}Los elementos tienen una distribución que se aproxima a la distribución de Tracy-Widom , la distribución del mayor valor propio de una matriz aleatoria en el conjunto unitario gaussiano . [ 10 ]

Algoritmos en línea

La subsecuencia creciente más larga también se ha estudiado en el contexto de algoritmos en línea , en los que los elementos de una secuencia de variables aleatorias independientes con distribución continuaF{\displaystyle F}– o alternativamente los elementos de una permutación aleatoria – se presentan uno a la vez a un algoritmo que debe decidir si incluir o excluir cada elemento, sin conocimiento de los elementos posteriores. En esta variante del problema, que permite aplicaciones interesantes en varios contextos, es posible diseñar un procedimiento de selección óptimo que, dada una muestra aleatoria de tamañonorte{\displaystyle n}como entrada, generará una secuencia creciente con una longitud máxima esperada de tamaño aproximado2norte.{\displaystyle {\sqrt {2n}}.}[ 11 ] La longitud de la subsecuencia creciente seleccionada por este procedimiento óptimo tiene una varianza aproximadamente igual a2norte/3,{\displaystyle {\sqrt {2n}}/3,}y su distribución límite es asintóticamente normal después del centrado y escalado habituales. [ 12 ] Los mismos resultados asintóticos se mantienen con límites más precisos para el problema correspondiente en el contexto de un proceso de llegada de Poisson . [ 13 ] Un refinamiento adicional en el contexto del proceso de Poisson se da a través de la demostración de un teorema del límite central para el proceso de selección óptimo que se cumple, con una normalización adecuada, en un sentido más completo de lo que cabría esperar. La demostración produce no solo el teorema del límite funcional "correcto", sino también la matriz de covarianza (singular) del proceso tridimensional que resume todos los procesos interactuantes. [ 14 ]

Véase también

Referencias

  1. Aldous, David ; Diaconis, Persi (1999), "Subsecuencias crecientes más largas: de la clasificación por paciencia al teorema de Baik–Deift–Johansson", Bulletin of the American Mathematical Society , 36 (4): 413–432 , doi : 10.1090/S0273-0979-99-00796-X.
  2. 1 2 Romik, Dan (2015). Las sorprendentes matemáticas de las subsecuencias crecientes más largas . doi : 10.1017/CBO9781139872003 . ISBN 9781107075832.
  3. 1 2 Schensted, C. (1961), "Subsecuencias crecientes y decrecientes más largas", Canadian Journal of Mathematics , 13 : 179–191 , doi : 10.4153/CJM-1961-015-3 , MR 0121305 .
  4. Hunt, J.; Szymanski, T. (1977), "Un algoritmo rápido para calcular las subsecuencias comunes más largas", Communications of the ACM , 20 (5): 350– 353, doi : 10.1145/359581.359603 , S2CID 3226080 . 
  5. Golumbic, MC (1980), Teoría algorítmica de grafos y grafos perfectos , Ciencias de la Computación y Matemáticas Aplicadas, Academic Press, pág. 159 .
  6. Fredman, Michael L. (1975), "Sobre el cálculo de la longitud de las subsecuencias crecientes más largas", Matemáticas Discretas , 11 (1): 29– 35, doi : 10.1016/0012-365X(75)90103-X.
  7. Erdős, Paul ; Szekeres, George (1935), "Un problema combinatorio en geometría" , Compositio Mathematica , 2 : 463– 470.
  8. Steele, J. Michael (1995), "Variaciones sobre el tema de la subsecuencia monótona de Erdős y Szekeres", en Aldous, David ; Diaconis, Persi ; Spencer, Joel ; et al. (eds.), Discrete Probability and Algorithms (PDF) , IMA Volumes in Mathematics and its Applications, vol. 72, Springer-Verlag, pp . 111–131   .
  9. Vershik, AM ; Kerov, CV ( 1977), "Asintótica de la medida plancheral del grupo simétrico y una forma límite para los diagramas de Young", Dokl. Akad. Nauk SSSR , 233 : 1024–1027.
  10. Baik, Jinho; Deift, Percy; Johansson, Kurt (1999), "Sobre la distribución de la longitud de la subsecuencia creciente más larga de permutaciones aleatorias", Journal of the American Mathematical Society , 12 (4): 1119– 1178, arXiv : math/9810105 , doi : 10.1090/S0894-0347-99-00307-0.
  11. Samuels, Stephen M.; Steele, J. Michael (1981), "Selección secuencial óptima de una secuencia monótona a partir de una muestra aleatoria" (PDF) , Annals of Probability , 9 (6): 937–947 , doi : 10.1214/aop/1176994265 , archivado (PDF) del original el 30 de julio de 2018
  12. Arlotto, Alessandro; Nguyen, Vinh V.; Steele, J. Michael (2015), "Selección óptima en línea de una subsecuencia monótona: un teorema del límite central", Stochastic Processes and Their Applications , 125 (9): 3596–3622 , arXiv : 1408.6750 , doi : 10.1016/j.spa.2015.03.009 , S2CID 15900488 
  13. Bruss, F. Thomas ; Delbaen, Freddy (2001), "Reglas óptimas para la selección secuencial de subsecuencias monótonas de máxima longitud esperada", Stochastic Processes and Their Applications , 96 (2): 313–342 , doi : 10.1016/S0304-4149(01)00122-3.
  14. Bruss, F. Thomas ; Delbaen, Freddy (2004), "Un teorema del límite central para el proceso de selección óptimo para subsecuencias monótonas de longitud máxima esperada", Stochastic Processes and Their Applications , 114 (2): 287–311 , doi : 10.1016/j.spa.2004.09.002.
  15. Romik, Dan (2015). Las sorprendentes matemáticas de las subsecuencias crecientes más largas . Libros de texto del Instituto de Estadística Matemática. Nueva York: Cambridge University Press. ISBN 978-1-107-42882-9.
  • Subsecuencia creciente más larga del algoritmo
  • Subsecuencia creciente más larga simplificada
  • Encontrar el número de subsecuencias incrementadas más largas