Ich arbeite derzeit an meiner Masterarbeit und es geht um das Clustering in Grafiken. Ich arbeite mit einer Idee, bei der Ameisen das Problem lösen. Ich arbeite derzeit an der Implementierung und frage mich genau, wie gut die Kanten des Diagramms dargestellt werden sollen.
Jede Kante wird mit bestimmten Informationen wie dem Pheromonwert und der Häufigkeit, mit der eine Ameise diese Kante besucht hat, ergänzt. Ich werde mit ungerichteten Diagrammen arbeiten, die sehr groß sein können (über eine Million Eckpunkte), und ich habe mich gefragt, wie ich die Kanten am effizientesten speichern und nachschlagen kann. Ich dachte daran, mich an eine Konvention zu halten und Endpunkte gemäß der zu speichern, die eine niedrigere Scheitelpunkt-ID für und die höhere für v 2 hat ( v 1 und v 2 sind die Endpunkte der Kante in der Datenstruktur). Aber ich frage mich, wie ich in diesem Fall nachschlagen soll.
Es gibt eine Zuordnung, die ich von der Adjazenzmatrix zum Kantenarray erstellt habe, die jedoch nur funktioniert, wenn das zugrunde liegende Diagramm ein vollständiges Diagramm ist. Deshalb bin ich hierher gekommen, um einige Vorschläge zu machen, wie ich vorgehen soll, da meine Suche effizient sein muss, während ich gleichzeitig den Speicherplatz für die Kanten nicht vergrößern möchte, da die Grafiken sehr groß sein werden.
Antworten:
Wenn Ihr Diagramm spärlich ist, sollten Sie es mithilfe von Adjazenz- "Listen" speichern, obwohl Sie wahrscheinlich etwas Effizienteres als eine Liste wünschen (oder vielleicht auch nicht, je nach Verwendung). Am einfachsten ist es, wenn Sie jede Kante an beiden Endpunkten speichern. Dies kann auf viele Arten implementiert werden, zum Beispiel können Sie alle Daten in einem großen Array speichern und nur Zeiger in den Adjazenz- "Listen" speichern.
quelle