¿Cada algoritmo de tiempo lineal es un algoritmo de transmisión?

14

En esta pregunta sobre el recuento de inversiones , encontré un documento que demuestra un límite inferior en la complejidad del espacio para todos los algoritmos de transmisión (exactos) . He afirmado que este límite se extiende a todos los algoritmos de tiempo lineal. Esto es un poco audaz ya que, en general, un algoritmo de tiempo lineal puede saltar a voluntad (acceso aleatorio) que un algoritmo de transmisión no puede; tiene que investigar los elementos en orden. Puedo realizar múltiples pases, pero solo constantemente muchos (para tiempo de ejecución lineal).

Por lo tanto mi pregunta:

¿Se puede expresar cada algoritmo de tiempo lineal como un algoritmo de transmisión con muchas pasadas constantemente?

El acceso aleatorio parece evitar que una construcción (simple) demuestre una respuesta positiva, pero tampoco he podido encontrar un contraejemplo.

Dependiendo del modelo de máquina, el acceso aleatorio puede incluso no ser un problema, en tiempo de ejecución. Me interesarían las respuestas para estos modelos:

  • Máquina de Turing, entrada plana
  • RAM, entrada como matriz
  • RAM, entrada como lista vinculada
Rafael
fuente
Como puede ver en las respuestas, los "algoritmos de transmisión" a menudo implican pequeño (espacio de polylog). pero dada su motivación, la pregunta que creo que debería ser: ¿puede cada algoritmo de tiempo lineal que usa palabras de espacio de trabajo convertirse en un algoritmo de transmisión que usa espacio de palabras O ( s ) . entonces un contraejemplo sería un problema que puede resolverse con o ( n ) espacio con acceso aleatorio, mientras que cualquier algoritmo de transmisión de paso constante requiere espacio Ω ( n ) . ninguna respuesta ha dado ese ejemplo todavíasO(s)o(norte)Ω(norte)
Sasho Nikolov
@SashoNikolov: En realidad, todo el tema del espacio es tangencial. Mi pregunta es principalmente sobre el tiempo de ejecución. Si la respuesta fuera "sí", los límites inferiores (en la complejidad del espacio) probados en el documento se aplicarían a todos los algoritmos de tiempo lineal. Que el límite inferior esté en el espacio es incidental, pero no es el foco de la pregunta per se.
Raphael
No entiendo. Es trivial hacer que un algoritmo de tiempo lineal sea "transmisión de una pasada" con espacio ilimitado. Su pregunta solo tiene sentido si en la forma "puede un algoritmo de acceso aleatorio de tiempo lineal hacerse una transmisión de paso constante mientras se preserva aproximadamente la medida de complejidad ". Por lo tanto, debe elegir una medida de complejidad, o / w esto no tiene sentido. μ
Sasho Nikolov
@SashoNikolov: No sabía que el "algoritmo de transmisión" tuviera tales problemas de definición. Dado que muestran un límite inferior de espacio lineal para los algoritmos de transmisión, supuse que el espacio no era el núcleo de una definición. Pero supongo que podría traducir eso vinculado a "No hay algoritmo de transmisión ...". Sin embargo, qué pasa con esta definición: "Un algoritmo de transmisión es un algoritmo al que se le da la entrada (lista) un elemento a la vez. Para cada elemento nuevo, puede realizar un cálculo en . Después de constantemente muchos de esos pases , tiene que generar una respuesta después de un tiempo adicional de o ( n ) ". o(norte)o(n)
Rafael
@SashoNikolov: Eso excluiría los algoritmos de "copiar la entrada y hacer cualquier cosa" de la noción, pero limitarlo al tiempo . ¿Se ajusta eso a la clase generalmente denotada? Si no, no creo que la "transmisión" se pueda definir con el tiempo o las complejidades espaciales de una manera útil. Es más bien una estrategia, como Greedy o divide & conquer. o(n2)
Raphael

Respuestas:

15

Para que los algoritmos de transmisión sean significativos, tienen que trabajar con una cantidad de espacio de trabajo significativamente menor que la entrada en sí. Por ejemplo, si permite la misma cantidad de espacio de trabajo que la entrada, puede indicar trivialmente cualquier algoritmo como un "algoritmo de transmisión de un solo paso" que primero copia la entrada al espacio de trabajo en un solo paso y luego solo usa el trabajo espacio.

Creo que es típico restringir el espacio de trabajo a lo más polilogarítmico en el tamaño de entrada cuando se habla de algoritmos de transmisión. Bajo este supuesto, la selección mediana no tiene un algoritmo de transmisión de paso O (1) por el resultado de Munro y Paterson [MP80]: cualquier algoritmo de transmisión de paso P para la selección mediana en N elementos tiene que almacenar Ω ( N 1 / P ) elementos. Por otro lado, la selección mediana tiene un algoritmo determinista de tiempo lineal bien conocido [BFPRT73].

[BFPRT73] Manuel Blum, Robert W. Floyd, Vaughan Pratt, Ronald L. Rivest y Robert E. Tarjan. Límites de tiempo para la selección. Journal of Computer and System Sciences , 7 (4): 448–461, agosto de 1973. DOI: 10.1016 / S0022-0000 (73) 80033-9

[MP80] J. Ian Munro y Mike S. Paterson. Selección y clasificación con almacenamiento limitado. Informática teórica , 12 (3): 315–323, noviembre de 1980. DOI: 10.1016 / 0304-3975 (80) 90061-4

Tsuyoshi Ito
fuente
6

En el modelo de transmisión solo se le permite almacenar datos extra constantes o polilogarítmicos mientras escanea a través de la entrada. Si considera un algoritmo de tiempo lineal
que sigue el paradigma de dividir y conquistar , necesita almacenar más información y / o debe escanear sus datos tantas veces como la profundidad de la recursión.

Un ejemplo es el algoritmo DC3 para construir la matriz de sufijos de un texto T (dado como matriz en el modelo RAM). Para construir una matriz de sufijos, agrupa los caracteres en trillizos, de modo que obtienes un texto con nuevos supercaracteres . Puede hacer esto con un desplazamiento de , que da como resultado tres textos nuevos T 1 , T 2 , T 3 . Curiosamente, puede calcular la matriz de sufijos si tiene la matriz de sufijos de T 1T 2 en tiempo lineal. Por lo tanto, el algoritmo necesita0 0,1,2T1,T2,T3T1T2

t(norte)=t(2/ /3norte)+O(norte)

hora. Esta recursión se resuelve claramente en . No veo cómo esto se puede convertir en un algoritmo de transmisión.t(norte)=O(norte)

Otro ejemplo bien conocido es el clásico algoritmo de selección de tiempo lineal .

A.Schulz
fuente
Aquí hay otro posible ejemplo. La construcción de un montón toma O (n) y usa internamente la subrutina basada en dividir y conquistar heapify ().
Massimo Cafaro
pero esto no es una prueba, ¿verdad? solo estás diciendo que una simulación ingenua no funcionará. pero a veces hay algoritmos sorprendentes
Sasho Nikolov
@SashoNikolov: Lo que digo es que no considero el algoritmo DC3 como algoritmo de transmisión, ya que requiere mucha memoria de trabajo. Tal vez pueda modificar el algoritmo a un algoritmo de transmisión, pero el resultado no sería el DC3. No he discutido si existe un algoritmo de transmisión para la construcción de una matriz de sufijos. Esta sería una pregunta completamente diferente. O(norte)
A.Schulz
"No veo cómo esto puede convertirse en un algoritmo de transmisión" me hizo creer que estás diciendo algo además de "este algoritmo no está transmitiendo sin modificación"
Sasho Nikolov
4

PAG

  • R(PAG)PAG
  • S(PAG)PAG

R(PAG)S(PAG)

En el extremo inferior del espectro, hay una respuesta en el libro de transmisión de Muthu . Mire el rompecabezas 3. El problema es que, dada una matriz de enteros, todos en el rango [ 1 , n - 1 ] , encuentre un entero duplicado. Existe una solución de tiempo lineal de acceso aleatorio con bits O ( log n ) (equivalentemente,norte[1,norte-1]O(Iniciar sesiónnorte)O(1)ω(Iniciar sesiónnorte)

O(1/ /Iniciar sesión2norte)pags=Ω(norte)pagsO(Iniciar sesión2norte)

Sasho Nikolov
fuente
1

Incluso en la definición más simple de "algoritmo de transmisión" (un algoritmo que, después de cada iteración incremental en la fuente, resulta en el conocimiento inmediato de la siguiente pieza incremental del resultado), puedo pensar en algunos algoritmos lineales que no comportarse de esa manera. Los algoritmos de hash son grandes; FNV-1a es lineal al número de bytes en la fuente, pero no conocemos ninguna parte del hash final hasta que se haya procesado la fuente completa.

RadixSort, también conocido como BucketSort, es O (N) (técnicamente O (NlogM) donde M es el valor máximo en los N elementos, que se considera pequeño), y debe ejecutarse en su totalidad para garantizar que cualquier elemento individual esté en su lugar final.

Para ser un algoritmo de "transmisión", en su forma más simple, un algoritmo debe tener las siguientes dos propiedades, ninguna de las cuales está expresamente limitada en el tiempo:

  • Mejor que la complejidad del espacio O (N) (indicado de manera equivalente, no es necesario conocer toda la fuente y no es necesario almacenar el resultado completo)
  • O (N) Relación de E / S (el algoritmo produce varias salidas linealmente proporcionales a sus entradas)

Por lo tanto, la clase principal de algoritmos que se transmiten es la de los algoritmos que realizan "proyecciones" (transformaciones incrementales de una entrada a salidas X> 0).

KeithS
fuente
O(Iniciar sesiónnorte) uso del espacio no estaría bien? Los documentos vinculados en la otra pregunta juegan con muchos algoritmos de transmisión que usanω(1)espacio.
Raphael
logN también está bien; El punto era que el algoritmo no debería necesitar conocimiento de toda la entrada o salida a la vez.
KeithS
Un Ω(norte)El requisito de espacio no implica que necesite toda la entrada a mano (es decir, no es un algoritmo de transmisión). Pero entiendo tu punto.
Raphael