„Echo-Algorithmus“ – Versionsunterschied
[ungesichtete Version] | [gesichtete Version] |
Langec (Diskussion | Beiträge) K →Weblinks: kat verteilte systeme |
Aka (Diskussion | Beiträge) K Tippfehler entfernt, deutsch |
||
(23 dazwischenliegende Versionen von 14 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[Bild:Echo.gif|mini|Echo-Algorithmus]] |
|||
== Anwendung == |
== Anwendung == |
||
Der Echo-Algorithmus ist für folgende Anwendungen in einem [[Verteiltes System|Verteilten System]] geeignet: |
Der Echo-Algorithmus ist für folgende Anwendungen in einem [[Verteiltes System|Verteilten System]] geeignet: |
||
* Informationsverteilung mit |
* Informationsverteilung mit [[Terminierung]]serkennung |
||
* Erzeugung eines |
* Erzeugung eines [[Spannbaum]]es |
||
* Auswählen eines Knotens |
* Auswählen eines Knotens |
||
Zeile 9: | Zeile 10: | ||
== Idee == |
== Idee == |
||
Es gibt zwei Nachrichtentypen: Explorernachrichten, die die Knoten rot färben und Echo-Nachrichten, die die Knoten grün färben. Vor der Ausführung des Algorithmus sind alle Knoten weiß. |
Es gibt zwei Nachrichtentypen: Explorernachrichten, die die Knoten rot färben und Echo-Nachrichten, die die Knoten grün färben. Vor der Ausführung des Algorithmus sind alle Knoten weiß. |
||
* Ein Initiator wird rot und schickt an alle seine Nachbarn einen Explorer. |
* Ein Initiator wird rot und schickt an alle seine Nachbarn einen Explorer. |
||
* Ein weißer Knoten, der einen Explorer erhält wird rot |
* Ein weißer Knoten, der einen Explorer erhält wird rot |
||
* Ein Knoten, der über all seine Kanten einen Explorer oder ein Echo erhalten hat, wird grün |
|||
* Treffen sich zwei Explorer auf einer Kante, so werden sie verschluckt |
|||
* Ein |
* Ein Nicht-Initiator Knoten, der über all seine Kanten einen Explorer oder ein Echo erhalten hat, sendet einen Echo über die Kante, über die er den ersten Explorer erhalten hatte |
||
⚫ | |||
* Ein Knoten, der einen Echo erhält, wird grün und sendet einen Echo über die Kante, über die er den Explorer erhalten hatte |
|||
⚫ | |||
<br> |
|||
Die Kanten über die die Echo-Nachrichten gelaufen sind ergeben einen Spannbaum. |
Die Kanten über die die Echo-Nachrichten gelaufen sind ergeben einen Spannbaum. |
||
Zeile 23: | Zeile 24: | ||
'''Initiator''' |
'''Initiator''' |
||
sende <explorer> an alle Nachbarn; |
sende <explorer> an alle Nachbarn; |
||
Zeile 30: | Zeile 31: | ||
'''Ein Knoten K empfängt <nachricht> von einem Nachbarn N''' |
'''Ein Knoten K empfängt <nachricht> von einem Nachbarn N''' |
||
Anzahl += 1;<br> |
|||
wenn K weiß ist und <nachricht> == <explorer> |
|||
wenn K weiß ist |
|||
K wird rot; |
K wird rot; |
||
sende <explorer> an alle Nachbarn |
sende <explorer> an alle Nachbarn außer N; |
||
ErsterNachbar := N; |
ErsterNachbar := N; |
||
wenn Anzahl == AnzahlNachbarn |
|||
wenn Anzahl == AnzahlNachbarn oder Nachricht == <echo> |
|||
K wird grün; |
K wird grün; |
||
wenn K der Initiator ist |
wenn K der Initiator ist |
||
Zeile 42: | Zeile 43: | ||
sende <echo> an ErsterNachbar |
sende <echo> an ErsterNachbar |
||
==Nachrichtenkomplexität== |
== Nachrichtenkomplexität == |
||
Über jede Kante e läuft entweder ein Explorer und ein Echo oder zwei Explorer |
Über jede Kante e läuft entweder ein Explorer und ein Echo oder zwei Explorer. Demnach ist die Nachrichtenkomplexität 2*e. |
||
⚫ | |||
⚫ | |||
⚫ | Wenn in einer Topologie eindeutige IDs vergeben sind und jeder Knoten die Identität seiner Nachbarn kennt, so ist es möglich mit dem Explorer seinem Nachbarn mitzuteilen welchen Knoten er außerdem noch einen Explorer gesendet hat. So können in manchen Fällen Explorer eingespart werden. Der Nachteil dabei ist allerdings, dass die Nachrichtenlänge dabei auf O(n) ansteigt. |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | Wenn in einer Topologie eindeutige IDs vergeben sind und jeder Knoten die Identität seiner Nachbarn kennt, so ist es möglich mit dem Explorer seinem Nachbarn mitzuteilen welchen Knoten er außerdem noch einen Explorer gesendet hat. So können in manchen Fällen Explorer eingespart werden. Der Nachteil dabei ist allerdings, dass die Nachrichtenlänge dabei auf O(n) ansteigt. |
||
⚫ | Jeder Knoten startet irgendwann einen Echo-Algorithmus, wobei sowohl die Echos, als auch die Explorer die ID ihres Initiators mitführen. Knoten ignorieren alle Nachrichten, deren Initiator eine kleinere ID hat als sie selbst. Wenn ein Initiator von allen seinen Nachbarn ein Echo mit seiner eigenen ID erhält, weiß er, dass er gewonnen hat. Alle anderen Knoten wissen, dass sie verloren haben, wenn sie einen Explorer mit einer höheren ID als sie selbst empfangen haben. |
||
⚫ | |||
⚫ | |||
⚫ | Jeder Knoten startet irgendwann einen Echo-Algorithmus, wobei sowohl die Echos, als auch die Explorer die ID ihres |
||
==Weblinks== |
== Weblinks == |
||
* {{Webarchiv | url=http://pi3.informatik.uni-mannheim.de/~schiele/distsys/ | wayback=20070915211000 | text=Vorlesung "Verteilte Systeme"}} an der [[Universität Mannheim]] |
|||
[[ |
[[Kategorie:Algorithmus]] |
||
[[Kategorie: |
[[Kategorie:Verteiltes System]] |
Aktuelle Version vom 27. Mai 2020, 18:19 Uhr

Anwendung
[Bearbeiten | Quelltext bearbeiten]Der Echo-Algorithmus ist für folgende Anwendungen in einem Verteilten System geeignet:
- Informationsverteilung mit Terminierungserkennung
- Erzeugung eines Spannbaumes
- Auswählen eines Knotens
Voraussetzungen
[Bearbeiten | Quelltext bearbeiten]Der Echo-Algorithmus ist auf jeder zusammenhängenden Topologie möglich.
Idee
[Bearbeiten | Quelltext bearbeiten]Es gibt zwei Nachrichtentypen: Explorernachrichten, die die Knoten rot färben und Echo-Nachrichten, die die Knoten grün färben. Vor der Ausführung des Algorithmus sind alle Knoten weiß.
- Ein Initiator wird rot und schickt an alle seine Nachbarn einen Explorer.
- Ein weißer Knoten, der einen Explorer erhält wird rot
- Ein Knoten, der über all seine Kanten einen Explorer oder ein Echo erhalten hat, wird grün
- Ein Nicht-Initiator Knoten, der über all seine Kanten einen Explorer oder ein Echo erhalten hat, sendet einen Echo über die Kante, über die er den ersten Explorer erhalten hatte
- Der Algorithmus terminiert, wenn der Initiator grün wird
Die Kanten über die die Echo-Nachrichten gelaufen sind ergeben einen Spannbaum.
Pseudocode
[Bearbeiten | Quelltext bearbeiten]Anm: Alle Knoten sind am Anfang weiß, Anzahl ist 0 und ErsterNachbar ist leer
Initiator
sende <explorer> an alle Nachbarn;
Ein Knoten K empfängt <nachricht> von einem Nachbarn N
Anzahl += 1;
wenn K weiß ist K wird rot; sende <explorer> an alle Nachbarn außer N; ErsterNachbar := N; wenn Anzahl == AnzahlNachbarn K wird grün; wenn K der Initiator ist EXIT; sonst sende <echo> an ErsterNachbar
Nachrichtenkomplexität
[Bearbeiten | Quelltext bearbeiten]Über jede Kante e läuft entweder ein Explorer und ein Echo oder zwei Explorer. Demnach ist die Nachrichtenkomplexität 2*e.
Verbesserungen
[Bearbeiten | Quelltext bearbeiten]Verbesserung der Nachrichtenkomplexität
[Bearbeiten | Quelltext bearbeiten]Wenn in einer Topologie eindeutige IDs vergeben sind und jeder Knoten die Identität seiner Nachbarn kennt, so ist es möglich mit dem Explorer seinem Nachbarn mitzuteilen welchen Knoten er außerdem noch einen Explorer gesendet hat. So können in manchen Fällen Explorer eingespart werden. Der Nachteil dabei ist allerdings, dass die Nachrichtenlänge dabei auf O(n) ansteigt.
Der Echo-Algorithmus als Auswahlalgorithmus
[Bearbeiten | Quelltext bearbeiten]Um den Echo-Algorithmus als Auswahlalgorithmus benutzen zu können, muss jeder Knoten eine eigene ID haben.
Jeder Knoten startet irgendwann einen Echo-Algorithmus, wobei sowohl die Echos, als auch die Explorer die ID ihres Initiators mitführen. Knoten ignorieren alle Nachrichten, deren Initiator eine kleinere ID hat als sie selbst. Wenn ein Initiator von allen seinen Nachbarn ein Echo mit seiner eigenen ID erhält, weiß er, dass er gewonnen hat. Alle anderen Knoten wissen, dass sie verloren haben, wenn sie einen Explorer mit einer höheren ID als sie selbst empfangen haben.
Weblinks
[Bearbeiten | Quelltext bearbeiten]- Vorlesung "Verteilte Systeme" ( vom 15. September 2007 im Internet Archive) an der Universität Mannheim