Was ist ein optimaler Graph

Inhalte, Aktuelles, Relevantes, lokale Gruppen und Stadtgebiete, Entwicklungen, Ankündigungen, Erfahrungen, Diskussionen, Teilhabe, Freifunk Halle Blog, Freifunk Blog
Antworten
Benutzeravatar
tox
Beiträge: 1417
Registriert: 11.08.2007 16:33
Wohnort: Halle
Kontaktdaten:

Was ist ein optimaler Graph

Beitrag von tox »

So, da wir uns letztes Treffen darauf geeinigt haben, dass unser primäres Ziel die Optimierung des Topologiegraphs ist, möchte ich mal mein fachkundiges Wissen zur Graphentheorie beitragen. Alle die dazu keinen Bock hamm, jetzt auf das lustige kleine x in der Ecke oben klicken ;)

Für die meisten ist klar, gut wird der Graph, wenn er mehr Verbindungen hat. Gut wird er, wenn es von einem Knoten zu einem anderen mehr Verbindungen gibt.

Davon abgrenzen sollte man die Vorstellung, dass wir den Grpah vollständig bekommen wollen oder können. Dies ist technisch gar nicht möglich. Umso wichtiger ist es, genau zu definieren, wo man mit dem "Vollständigmachen" des Graphs aufhören soll... oder kann.

Ein gutes Kriterium für einen störunanfälligen Graphen ist die minimale Kantenzahl, die jeder Knoten besitzt. Gegenwärtig liegt die für unseren Graphen bei 1. Das heißt, es gibt mindestens einen Knoten, der bei Wegfall einer seiner Verbindungen keine mehr hat. Wir sollten versuchen die minimale Kantenzahl im gesamten Graphen auf 2 zu bekommen, was hieße, das jeder Node über mindestens 2 Verbindungen verfügt. Auch sollten wir aufgrund der Zentralität der HNAs deren minimale Kantenzahl auf 3 erhöhen.

Aufpassen sollte man aber dabei, dass man das Netz nicht zu stark heterogenisiert. Es nützt nichts, wenn 80% der Nodes 2 Kanten und weniger haben und der Rest bis zu 8 oder dergleichen. Da dabei garantiert wieder einige Nodes zu Nadelöhren werden.

Ein weiteres Kriterium ist die Anzahl von Kreisen. Kreise sind, wie man es sich auch vorstellt, ringförmige Anordnungen von Nodes. Dabei ist nicht der räumliche Aspekt gemeint, sondern die Verbindungen. Je mehr Kreise, desto besser. Bei gleicher Anzahl sind größere Kreise besser als kleine. Dies ist eine lokale Ausprägung des Graphs und kann kleinräumiger organsiert werden

Ein drittes Kriterium is die Anzahl so genannter Cliquen. Eine Clique ist ein vollständiger Teilgraph, also ein Graph, in dem jeder Knoten eine Verbindung zu einem anderen hat. Kleine Cliquen sind gut, größere (ab 5 Nodes) sprechen für eine zunehmende Übervollständigung des Graphen. Dann sollte man lieber in die Erreichbarkeit weiter entfernter Nodes investieren. Auch läuft man bei Cliquen Gefahr, Nodes quasi "auszugrenzen" (daher der Name).

Als letztes Kriterium möchte ich die Partitionierbarkeit des Graphen anmerken. Bipartit nennt man beispielsweise einen Graphen, deren Nodes derart in 2 Mengen aufgeteilt werden können, dass Verbindungen nur zwischen diesen beiden Mengen existieren und nicht innerhalb einer Menge. Das ist natürlich schlecht. Bei einem meiner ersten Besuche des Geotracks viel mir sofort ins Auge, dass es einigermaßen viele Verbindungen zwischen Neustadt und Altstadt gibt, aber weniger innerhalb von Neustadt selbst. Das ist zwar noch nicht bipartit, könnte es aber mit der Zeit werden, wenn man nicht aufmerksam dagegensteuert. Ganz schlecht sind natürlich noch größere Partitionierungen, tripartit etc. Partitinierungen sprechen ebenfalls für eine Wichtung des Netzes, was letztendlich in Nadelöhren endet.

HF
みんなはばかだ。
Mein öffentlicher Schlüssel (OpenPGP)
Mein öffentlicher Schlüssel (SSH2, kommerzielles Format)
Verwalter von 7.42, 7.43, 7.44, 9.42, 10.42, 10.43, 15.42 und 28.1.
Anschluss: T-Com Call & Surf Comfort Plus inkl. HotSpot-Flat 16/1 Mbit
Modem, Router, TK-Anlage: Speedport W 700V
FF-Router: Buffalo WHR-HP-G54, FFF-Leipzig 1.6.10-core-1-halle-3, Doppel-Biquad-Antenne
Benutzeravatar
se
Beiträge: 939
Registriert: 17.08.2005 22:45

Beitrag von se »

danke für diese ausführungen.

gibt es vielleicht tools die einem optimierungsmöglichkeiten im graph aufzeigen? d.h. alle von dir aufgezählten kriterien sollten berücksichtigt werden in einer art "benchmark" und dann soll man leicht sehen können wie man kritische stellen durch neue zwischenstationen lösen kann.
Benutzeravatar
tox
Beiträge: 1417
Registriert: 11.08.2007 16:33
Wohnort: Halle
Kontaktdaten:

Beitrag von tox »

oh, das wird leider nicht einfach. ich finde allenthalben Visualisierungstools, aber leider nichts um einen Graphen auszuwerten in dem Sinne.
Da gibt es auch zwei Probleme: Einerseits ist die Komplexität mancher Algorithmen nicht zu vernachlässigen (manche gehen sogar nur durch Ausprobieren) und andererseits ist die Bewertung ja mehr eine Schätzung. Ich hab beispielsweise noch kein computerprogramm gefunden, dass dir eine nahezue Bipartition anzeigt. Obendrein muss man berücksichtigen, dass in unserem Graphen die Kanten gewichtet sind, was die Problematik noch mal verkompliziert.
Ich werd mich weiter umschaun und umhörn.
Da fällt mir ein, is SAW eigentlich hier angemeldet? Bin mir sicher, dass er jetzt Rat wüsste...
みんなはばかだ。
Mein öffentlicher Schlüssel (OpenPGP)
Mein öffentlicher Schlüssel (SSH2, kommerzielles Format)
Verwalter von 7.42, 7.43, 7.44, 9.42, 10.42, 10.43, 15.42 und 28.1.
Anschluss: T-Com Call & Surf Comfort Plus inkl. HotSpot-Flat 16/1 Mbit
Modem, Router, TK-Anlage: Speedport W 700V
FF-Router: Buffalo WHR-HP-G54, FFF-Leipzig 1.6.10-core-1-halle-3, Doppel-Biquad-Antenne
Benutzeravatar
Cyrus
Beiträge: 635
Registriert: 19.08.2006 16:51

Beitrag von Cyrus »

Wenn die Algorithmen irgendwie schon da wären (was ich mal vermute), könnte man diese Betrachtungen ja vielleicht irgendwie in die Topologie, Topographie o.ä. einbauen oder was meint ihr?
Benutzeravatar
se
Beiträge: 939
Registriert: 17.08.2005 22:45

Beitrag von se »

ja, find ich gut.

man könnte zum beispiel relativ einfach nodes, die nur einen nachbarn haben, anders darstellen (z.b. etwas dunkler oder so), wohl eher was für die topologie.

dass die kanten gewichtet sind, könnte man umgehen, wenn man nur kanten wertet, die einen guten ETX haben. die restlichen zählen dann als "keine kante"

dann zum graph-benchmarking: wie komplex sind die probleme anzahl und größe von cliquen bestimen, kreise finden, etc. wenn sie nicht allzu komplex sind, könnte man da ein paar werte zusammenzählen. (so nach dem motto "50 kreise auf 10 nodes, das macht 50 punkte, plus 30 punkte für die cliquen, plus durchschnittliche anzahl der nachbarn mal 10, sind 30. macht 110 punkte") dann hat man quasi die güte eines graphen in einer zahl zusammengefasst und kann bei 2 graphen vergleichen welcher besser ist.

zum optimieren des graphen könnte man einen genetischen algorithmus nehmen der dann diesen benchmark als evaluationsfunktion benutzt.
Benutzeravatar
tox
Beiträge: 1417
Registriert: 11.08.2007 16:33
Wohnort: Halle
Kontaktdaten:

Beitrag von tox »

Also für das erste Problem (das einfachste ;)), also die Kantenanzahl pro Knoten würde ich nen Algo schreiben.

Ich würd neben der absoluten Anzahl an Kanten für einen Knoten auch das Verhältnis untereinander miteinbeziehen, also einen Graph mit 5 Knoten à 3 Kanten besser bewerten als einen Graph mit 5 Knoten mit Kanten zwischen 1 und 5.

Meine Lieblingssprache ist VB.Net :P ich würde mich allerdings auch zu C# überreden lassen (was aber am Resultat nichts ändert) und unter den allergröbsten Umständen vllt auch C++, wobei sich meine Praxiserfahrung da stark in Grenzen hält. Was meint ihr?

Über die genaue Architektur könnte man sich noch detailierter absprechen. Man könnte z.B. die Funktionen als XML-Web-Dienst implementieren, um den Clienten von der Rechenlast tz befreien.
みんなはばかだ。
Mein öffentlicher Schlüssel (OpenPGP)
Mein öffentlicher Schlüssel (SSH2, kommerzielles Format)
Verwalter von 7.42, 7.43, 7.44, 9.42, 10.42, 10.43, 15.42 und 28.1.
Anschluss: T-Com Call & Surf Comfort Plus inkl. HotSpot-Flat 16/1 Mbit
Modem, Router, TK-Anlage: Speedport W 700V
FF-Router: Buffalo WHR-HP-G54, FFF-Leipzig 1.6.10-core-1-halle-3, Doppel-Biquad-Antenne
Benutzeravatar
Cyrus
Beiträge: 635
Registriert: 19.08.2006 16:51

Beitrag von Cyrus »

wir müssen aber auf jedenfall irgendwie das problem betrachten, dass die netzauslastung nicht überall gleich verteilt sondern vor allem auf den routen zu den hnas lastet
Benutzeravatar
tox
Beiträge: 1417
Registriert: 11.08.2007 16:33
Wohnort: Halle
Kontaktdaten:

Beitrag von tox »

das heißt auf den punkt gebracht:
1) wichtigkeit von grünen knoten ist größer als die von gelben knoten,
2) pfade von gelben zu grünen knoten sind wichtiger als pfade von gelben knoten zu gelben knoten.

vom standpunkt des entwicklers, sind diese beiden aussagen eigentlich in unserem fall immer gleichwertig?

zuerst will ich mal klarmachen, welche daten genau der algorithmus benötigt.

1) die knotenliste (mit einem attribut, ob er hna ist)
2) die kantenliste
3) die unterschiedliche "wichtigkeit" von knoten, die als hna gekennzeichnet sind und die es nicht sind

zu klären sind noch:

4) sollen tatsächlich alle kanten gleichwertig sein ab einem bestimmten etx und die anderen verworfen werden oder sollte man doch zumindest ein paar stufen einführen?
5) kann man den unterschied zwischen der wichtigkeit von verbindungen gelb-gelb und gelb-grün implizit aus der wichtigkeit der beteiligten knoten ableiten oder sollte man diesen unterschied extra angeben können?

sollte die ausgabe eine einzige zahl sein, die die qualität des netzes angibt, oder soll das mehr so eine art ausgabe sein, aus der erkennbar wird, welche knoten und kanten "gut" bzw. "schlecht" sind?
みんなはばかだ。
Mein öffentlicher Schlüssel (OpenPGP)
Mein öffentlicher Schlüssel (SSH2, kommerzielles Format)
Verwalter von 7.42, 7.43, 7.44, 9.42, 10.42, 10.43, 15.42 und 28.1.
Anschluss: T-Com Call & Surf Comfort Plus inkl. HotSpot-Flat 16/1 Mbit
Modem, Router, TK-Anlage: Speedport W 700V
FF-Router: Buffalo WHR-HP-G54, FFF-Leipzig 1.6.10-core-1-halle-3, Doppel-Biquad-Antenne
Benutzeravatar
se
Beiträge: 939
Registriert: 17.08.2005 22:45

Beitrag von se »

die liste der knoten und kanten kriegt man im dot-format wenn man bei seinem olsrd das dot_draw plugin installiert. dann mit telnet auf port 2004 und man kriegt das dot-file ausgegeben. ansonsten gibts hier auch noch die informationen in xml: http://www.freifunk-halle.de/~se/olsr_t ... pology.xml
Benutzeravatar
Cyrus
Beiträge: 635
Registriert: 19.08.2006 16:51

Beitrag von Cyrus »

wir bräuchten eine art traffic bzw. auslastungsstatistik für die einzelnen kanten. nach dieser zu wichten oder dies zumindest in die betrachtung neben dem etx einfließen zu lassen, würde die HNA situation denk ich mal auch gut einbeziehen
matze-pwi
Beiträge: 85
Registriert: 17.07.2007 09:45
Wohnort: Paulusviertel Schiller

Beitrag von matze-pwi »

Hallo Allerseits,

zum Thema, wie kann man unter den schon beschribenen Restrikionen einen optimalen (wohl eher suboptimal) Graphen erzeugen, können uns Algorithmen des Operation Research helfen. Da ich am Montag bei einem meiner Dozenten für OR bin, kann ich ihn mal fragen vielleicht solche Tools existieren. Ich denka da so in der Richtung kürzestes Wege Problem (wofür es schon Algorithmen (Bsp Dijkstra) gibt). Ich schau mal am WE in meine Vorlesungsskripte und Bücher die ich zu dem Thema habe...

Viele Grüße
Matze
Antworten