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?
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?
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.
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".
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».n
Si vous distribuez la tâche à (où est une constante) processeurs.p
La complexité peut alors être où .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 e
Mais AUCUN changement de complexité.
"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:
Ce modèle semble intuitivement beaucoup plus puissant que le modèle à bande unique, mais toute machine à bandes multiples, quelle que soit la taille du k, peut être simulée par une machine à bande unique en utilisant seulement quatre fois plus de temps de calcul (Papadimitriou 1994, Thrm 2.1)
É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:
Le principal résultat de cet article montre que, étant donné une machine de Turing avec plusieurs têtes de lecture-écriture par bande et qui a l'opération de décalage supplémentaire d'un mouvement "déplacer une tête donnée à la position d'une autre tête donnée", on peut effectivement construire un machine de Turing multitape avec une seule tête de lecture-écriture par bande qui la simule en temps linéaire; c'est-à-dire que si la machine d'origine fonctionne au temps T (n), alors la machine de simulation fonctionnera au temps cT (n), pour une constante c.
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.