2010-08-01 12 views
5

Was ist der beste Algorithmus für drahtlose Knotenerkennung. Angenommen, Sie haben ein großes Wireless- oder Bluetooth-Netzwerk, in dem jeder Knoten seinen eigenen Erkennungsbereich hat.Wireless Node Discovery

Was ist der beste Algorithmus, der jeden Knoten dazu bringt, die gesamte Graphentopologie zu entdecken, dh jeder Knoten weiß von allen anderen Knoten im Graphen?

Antwort

1

Für den Fall, dass ein Knoten einen neuen Knoten in seinem Bereich entdeckt, sendet er eine Nachricht an jeden anderen Knoten in seinem Bereich über die Anwesenheit dieses Neuankömmlings.

Für den Fall, dass ein Knoten eine dieser Nachrichten empfängt, wenn er die Nachricht zuvor nicht gesehen hat, fügt er seine eigene Kennung an a an die Nachricht an und sendet die neue Nachricht dann an alle anderen Knoten in seiner Reichweite (als ob es sagen würde "Wenn du dem Kerl etwas erzählen musst, sag es mir zuerst, weil ich denke, dass ich ihm näher bin als du"). Er muss auch die ID des Knotens speichern, von dem er die Nachricht erhalten hat, so dass er von der Knoten-ID des Neuankömmlings abgerufen werden kann.

Für den Fall, dass ein Knoten eine Nachricht an einen anderen Knoten senden muss, sucht er in seiner lokalen Liste nach Nachbar-IDs, die die Knoten-ID des Empfängers verwenden. es sendet dann die Nachricht an den besten Nachbarn. Dieser Nachbarknoten ist nun dafür verantwortlich, die Nachricht an den Empfänger zu senden, indem er seine eigene lokale Liste verwendet. Wenn es auf diese Weise keine Nachbarn finden kann, sendet es die Nachricht an jeden Knoten innerhalb seiner Reichweite und hofft auf das Beste.

Die lokale Liste, die jeder Knoten hält, zeigt gute "erste Schritte" an, um eine Nachricht an einen bestimmten Empfänger zu erhalten. Die ersten Schritte sind gut, weil sie vom ersten Nachbarn eines Knotens kamen, um von einem bestimmten Neuling gehört zu haben. Die Liste wird nicht viele schlechte erste Schritte enthalten, da Knoten "Anwesenheit von Newcomer" -Nachrichten nicht erneut senden, wenn sie die Nachricht zuvor gesehen haben, und dies könnte nur passieren, wenn die Nachricht durch eine schnellere Route dorthin gelangt.

Hoffe all das macht Sinn, ich möchte es in Python kodieren, aber ich habe nicht die Zeit. Beachten Sie, dass dieses System möglicherweise Bootstrapping benötigt.