Je suis coincé avec un problème où je dois concevoir un algorithme d'élection de leader pour un hypercube orienté. Cela devrait être fait en utilisant un tournoi avec un nombre de tours égal à la dimension D de l'hypercube. Dans chaque étape d, avec 1 < = d < D deux leaders candidats d'hypercubes voisins d-dimensionnels doivent rivaliser pour devenir le seul candidat leader de l'hypercube (d + 1) -dimensional qui est l'union de leurs hypercubes respectifs.Un algorithme d'élection de leader pour un hypercube orienté
Répondre
Il a été longtemps que j'ai étudié les systèmes distribués, mais j'espère que cela aide un peu :)
Le problème:Leader election dans un réseau avec un hypercube tolopogy. Dans cette topologie, chaque nœud a exactement D voisins (où D est la dimension de l'hypercube). Puisque l'hypercube est orienté, les nœuds savent lequel de leurs liens correspond à chaque dimension. En outre, je suppose que tous les nœuds sont étiquetés avec un identifiant unique, typique de ce type de problèmes.
Si je comprends bien les directives de votre solution, l'algorithme semble être simple: un nœud a exactement les états D. Dans chaque état 1 < = d < = D il communique avec son voisin le long de l'axe d. Cette communication consiste à lui envoyer l'id du meilleur candidat dont il a connaissance (quand d = 1 c'est simplement son propre id), et à le comparer à l'identifiant reçu par le pair. Maintenant, le nœud connaît le meilleur id du sous-cube d'ordre d (défini par les axes 1,2 ..., d) auquel il appartient. De cette façon, à l'étape D, tous les nœuds sont conscients du meilleur global, et l'algorithme se termine par un consensus.
Par exemple, supposons que la topologie suivante (D = 2) et les valeurs id:
(1) (2)
1-----2
| |
| |
4-----3
(4) (3)
Les ids entre parenthèses indiquent les meilleurs ids connus par chaque nœud jusqu'à présent.
La première itération (d = 1) fonctionne le long de l'axe horizontal, et se termine de la manière suivante:
(2) (2)
1-----2
| |
| |
4-----3
(4) (4)
Le deuxième (et dernière) itération (d = 2) fonctionne le long de l'axe vertical et se termine comme suit:
(4) (4)
1-----2
| |
| |
4-----3
(4) (4)
Le numéro de noeud 4 a été choisi, si nécessaire (identifiant le plus élevé).
Le nombre de messages complexité
Pour chaque bord dans l'hypercube, nous avons exactement 2 messages (un sur chaque direction). Puisque la formule pour le nombre d'arêtes dans un hypercube de dimension D est E = D * 2^(D-1), nous avons exactement M = D * 2^D messages. Pour calculer la complexité en fonction de N (le nombre de nœuds), rappelez que N = 2^D, donc M = N * log N.
Oui, c'était très utile et cela m'a beaucoup aidé à comprendre l'idée clé, mais je voulais aussi savoir comment créer un algorithme car il y a plusieurs façons de faire cette élection (que j'ai compris plus tard) .Grâce à votre aide et à un peu de ma propre réflexion, j'ai réussi à développer un algorithme. Je posterai ma solution dans quelques semaines. Merci beaucoup pour le problème et votre temps! – john
- 1. algorithme pour un problème de graphe orienté
- 2. Comment utiliser un graphe orienté BGL comme un graphe non orienté (à utiliser dans un algorithme de mise en page)?
- 3. algorithme pour traveral BFS d'un graphe orienté de acylic
- 4. Comment transformer un graphe très cyclique non orienté en un graphe acyclique orienté?
- 5. algorithme pour trouver le nombre de chemins distincts dans un graphe orienté
- 6. Points entourés d'un hypercube personnalisé
- 7. Transposition sur un graphe orienté
- 8. Suggestions pour KSPA sur un graphe non orienté
- 9. Résoudre un graphe de dépendance pour le composant orienté aspect
- 10. structure de dossier pour un site orienté plugin comme wordpress
- 11. decimal.TryParse() gouttes leader "1"
- 12. Algorithme pour un problème de graphique
- 13. Algorithme pour trouver tous les cycles dans un graphe orienté en C++ à l'aide de la matrice d'adjacence
- 14. Meilleure approche pour concevoir un système orienté service
- 15. algorithme de construction pour déterminer si un graphique est créé avec un algorithme donné
- 16. un scénario orienté objet avec uml
- 17. Un ensemble trouver un algorithme
- 18. Algorithme à usage général pour la triangulation d'un graphe non orienté?
- 19. Algorithme C# pour colorer un certain pourcentage
- 20. Algorithme pour trouver un mot sur Boggle
- 21. algorithme pour trouver un point zéro
- 22. Java Besoin d'aide pour implémenter un algorithme
- 23. algorithme pour générer un gradient radial
- 24. "faux" leader dans le latex
- 25. Problèmes avec un algorithme
- 26. Algorithme pour trouver un trou dans un graphe unidimensionnel infini
- 27. algorithme pour ajouter un nouveau point à un polygone
- 28. Expliquer le motif "Leader/Follower"
- 29. Vérification des cycles impairs dans un graphe non orienté
- 30. Un algorithme efficace pour calculer un digramme de ligne à partir d'un digramme
supposons que nous avons besoin de plus d'informations. Un exemple de cas pourrait aider beaucoup de choses .. – Guru
De quoi auriez-vous besoin de plus? – john
Exemple d'entrée, de sortie attendue, et de quoi vous êtes exactement coincé. –