Est-il possible (barre oblique pouvez-vous fournir un exemple) de réduire la complexité de calcul d'un problème en utilisant un algorithme parallèle qui ne nécessite pas un certain nombre de processeurs par rapport à la taille d'entrée?
cc.complexity-theory
dc.parallel-comp
Nick Larsen
la source
la source
Réponses:
Si vous parlez de processeurs O (1), alors non, la complexité de calcul ne peut pas être réduite.
Alignez simplement le travail effectué par chaque processeur et faites-le sur un seul. Si vous êtes préoccupé par la synchronisation, alors un processeur peut facilement émuler cela.
la source
Il existe un domaine émergent d'algorithmes parallèles à gros grains, où le temps d'exécution (et d'autres consommations de ressources de calcul) est considéré comme une fonction de paramètres indépendants n (taille d'entrée) et p (nombre de processeurs), souvent sous l'hypothèse naturelle n >> p .
Un bon point de départ est de google pour "parallélisme synchrone en vrac".
la source
Vous pourriez être intéressé par cet article:
Performances super-linéaires dans le calcul parallèle en temps réel par Selim Akl.
Il fournit des exemples de problèmes de calcul dans lesquels "la solution séquentielle est plus de fois plus lente qu'une solution parallèle à processeurs"; cela se fait en interprétant de manière créative le concept de «problème de calcul».nn n
la source
Si vous distribuez la tâche à (où est une constante) processeurs.pp p
La complexité peut alors être où .c = 1 / pO(f(n)/p)→O((1/p)f(n))→O(cf(n))→O(f(n)) c=1/p
Ce que nous utilisons le parallélisme est de réduire le temps d'exécution de la tâche, c'est-à-dire que si une tâche prend secondes, alors avec le parallélisme, cela peut prendre .T / p + S o m e M o r e T i m eT T/p+SomeMoreTime
Mais AUCUN changement de complexité.
la source
"vous ne pouvez pas le calculer avec 1 processeur, mais vous pouvez calculer avec 2".
Ce n'est pas possible, en supposant que les deux processeurs sont des MT ou un modèle moins puissant. De wikipedia, pour les machines multi-bandes:
Également pour les machines multi-têtes, de "Simulation linéaire du temps des machines multi-têtes avec sauts tête-à-tête" par Walter J. Savitch et Paul MB Vitányi:
la source
Peut-être que "parallèle ou" (étant donné deux fonctions renvoyant un booléen, dites si l'une d'elles retourne vrai, étant donné que l'une d'entre elles, mais pas les deux, pourrait ne pas se terminer) pourrait être ce dont vous parlez: vous ne pouvez pas calculer avec 1 processeur, mais peut calculer avec 2.
Cependant, cela dépend beaucoup du modèle de calcul que vous utiliserez, si les processus vous sont donnés sous forme de boîtes noires ou de leur description que vous pouvez interpréter vous-même, etc.
la source