Reducción de la complejidad con paralelismo

10

¿Es posible (barra oblicua puede proporcionar un ejemplo) para reducir la complejidad computacional de un problema mediante el uso de un algoritmo paralelo que no requiere una serie de procesadores en relación con el tamaño de entrada?

Nick Larsen
fuente
¿Podría aclarar un poco su pregunta? Número trivialmente constante de procesadores: en el mejor de los casos, puede mejorar el tiempo de ejecución en un factor constante. Supongo que esto no es lo que quieres decir?
Jukka Suomela
"No relativo al tamaño de entrada". ¿Qué quieres decir exactamente con eso? O (1)?
Aryabhata
Me refiero a los procesadores O (1). @ Jukka: a eso me refiero, ¿puede reducirse la complejidad computacional solo agregando varios procesadores en relación con el tamaño de entrada?
Nick Larsen el

Respuestas:

12

Si te refieres a los procesadores O (1), entonces no, la complejidad del cálculo no se puede reducir.

Simplemente alinee el trabajo realizado por cada procesador y hágalo en uno solo. Si le preocupa la sincronización, entonces un procesador puede emularlo fácilmente.

Aryabhata
fuente
Gracias por la respuesta rápida. Sin crear otra pregunta para algo tan estrechamente relacionado, ¿es posible reducir la complejidad computacional usando varios procesadores en relación con algo distinto del tamaño de entrada?
Nick Larsen el
2
@Nick: Algo más que el tamaño de entrada es O (1) :-)
Aryabhata
Gracias, estaba teniendo problemas para pensar en otra cosa, pero quería estar seguro.
Nick Larsen el
WRT si puede lograr una aceleración con una serie de procesadores que crece con una cantidad distinta al tamaño de entrada, no estoy seguro de que la respuesta sea 'no'. Hay problemas cuya complejidad crece con algún parámetro que es diferente (aunque obviamente no independiente del) tamaño de entrada. ¿Qué pasaría si, por algún problema con el gráfico, le permitiera varios procesadores relacionados con el ancho del árbol del gráfico, por ejemplo?
Aaron Roth
@ Aaron: Si el número de procesadores permitidos está relacionado con la entrada de alguna manera, entonces sí, no podemos decir "no" con seguridad. Por supuesto, a menos que seamos específicos, es una pregunta sin sentido.
Aryabhata
6

Hay un campo emergente de algoritmos paralelos de grano grueso, donde el tiempo de ejecución (y otros consumos de recursos computacionales) se considera como una función de parámetros independientes n (tamaño de entrada) yp (número de procesadores), a menudo bajo un supuesto natural n >> p .

Un buen punto de partida es buscar en Google "paralelismo masivo sincrónico".

Alexander Tiskin
fuente
¿Puede cambiar la clase de complejidad si permite que el hardware se escale con los datos de entrada? Tengo problemas para buscar en Google eso como un laico: /
Gerenuk
3

Quizás te interese este artículo:

Rendimiento superlineal en computación paralela en tiempo real por Selim Akl.

Proporciona ejemplos de problemas computacionales en los que "la solución secuencial es más de veces más lenta que una solución paralela n- procesador"; Esto se hace interpretando creativamente el concepto de un "problema computacional".nortenorte

Mikhail Glushenkov
fuente
1

pagpag

O(F(norte)/ /pag)O((1/ /pag)F(norte))O(CF(norte))O(F(norte))C=1/ /pag

TT/ /pag+SometromiMETROormiTyometromi

Pero NO hay cambio de complejidad.

Pratik Deoghare
fuente
1

"No se puede calcular con 1 procesador, pero se puede calcular con 2".

Esto no es posible, suponiendo que ambos procesadores sean TM o un modelo menos potente. De wikipedia, para máquinas de cintas múltiples:

Este modelo intuitivamente parece mucho más poderoso que el modelo de una sola cinta, pero cualquier máquina de cintas múltiples, sin importar cuán grande sea la k, puede ser simulada por una máquina de una sola cinta usando solo cuadráticamente más tiempo de cálculo (Papadimitriou 1994, Thrm 2.1)

También para máquinas de múltiples cabezales, desde "Simulación de tiempo lineal de máquinas de turing de múltiples cabezas con saltos cabeza a cabeza" por Walter J. Savitch y Paul MB Vitányi:

El resultado principal de este documento muestra que, dada una máquina Turing con varios cabezales de lectura-escritura por cinta y que tiene la operación de cambio de un movimiento adicional "cambiar un cabezal dado a la posición de otro cabezal dado", se puede construir efectivamente un Máquina de Turing multitapa con un solo cabezal de lectura-escritura por cinta que lo simula en tiempo lineal; es decir, si la máquina original funciona en el tiempo T (n), entonces la máquina de simulación funcionará en el tiempo cT (n), para alguna constante c.

chazisop
fuente
Aquí tenemos un gran ejemplo para el costo de la abstracción. Las computadoras reales (como implementaciones de RM) se pueden paralelizar mejor que las TM.
Raphael
¿Qué significa RM? Si eso fue un error tipográfico y te refieres a TM, no estoy de acuerdo. Las TM multitape / multihead no tienen que preocuparse por la comunicación del procesador y la ley de Amdahl. Además, no veo cómo una computadora puede funcionar mejor que un TM de acceso aleatorio y viceversa, es decir, creo que son equivalentes.
chazisop
0

Quizás "paralelo o" (dadas dos funciones que devuelven un valor booleano, diga si una de ellas devuelve verdadero, dado que cualquiera de ellas, pero no ambas, podría no terminar) podría ser de lo que está hablando: no puede calcular con 1 procesador, pero puede calcular con 2.

Sin embargo, esto depende mucho del modelo computacional que utilizará, ya sea que le den los procesos como cuadros negros o como su descripción, que puede interpretar usted mismo, etc.

jkff
fuente
2
Esto parece falso, a menos que esté trabajando en un modelo muy limitado. Un solo procesador podría simplemente intercalar las instrucciones que, de lo contrario, se ejecutarían en 2, causando como máximo una ralentización de 2x + O (1). Supongo que por `` caja negra '' quieres decir que el intercalado es imposible. Incluso entonces, si puede terminar los cálculos de recuadro negro que toman demasiado tiempo, aún puede simular dos procesadores adivinando y duplicando repetidamente la longitud de cálculo requerida para cada proceso.
Aaron Roth
Pero eso, a su vez, requiere que podamos terminar los cálculos. Quiero decir que no puedes hacer paralelo o en 1 procesador en un modelo donde lo único que puedes hacer es ejecutar un cálculo hasta que termine.
jkff
Ahora entiendo lo que quisiste decir, pero creo que no está completo. No se puede calcular con 2 tampoco. Si una máquina sigue funcionando y la otra responde SÍ, la respuesta es SÍ. Pero, ¿y si devuelve NO? No puede responder de manera determinista, porque no sabe si la máquina que todavía está funcionando o está atascada (es decir, el problema de HALTING).
chazisop