Nun, wenn Sie sich nur um die Speichereffizienz kümmern, ist eine komprimierte Datenstruktur am besten - aber dies ist natürlich nicht sehr effizient für den Zugriff oder die Aktualisierung .....
Wenn Ihr Diagramm eine relativ kleine Anzahl von Knoten hat und ziemlich dicht ist (sagen wir, dass mindestens 5% aller möglichen Verbindungen vorhanden sind), ist es möglicherweise platzsparender, eine Adjazenzmatrix zu erstellen, als Kantenlisten zu verwenden. Dies würde nur ein Bit pro möglicher (gerichteter) Verbindung erfordern und insgesamt n * n Bits, wenn Sie n Knoten haben.
Andernfalls, wenn Sie Nachbarlinks verwenden müssen, können Sie nicht einfach mehr als eine Referenz pro Link erstellen, da dies der minimale Informationsinhalt ist, den Sie speichern müssen. Wenn Sie Backlinks benötigen, benötigen Sie doppelt so viele Links.
Darüber hinaus gibt es einige Tricks, die Sie ausprobieren können. Sie können beispielsweise versuchen, Teilmengen von Links gemeinsam zu nutzen (wenn sich A und B auf C, D, E beziehen, wird die Liste der Links C, D, E nur einmal gespeichert .....). Dies wird jedoch ziemlich schnell komplex und ich bezweifle, dass es sich in den meisten Fällen lohnen wird.
Ein weiterer Trick: Vorausgesetzt, Ihr Diagramm verfügt über eine angemessene Anzahl von Knoten, können Sie durch die Indizierung Platz sparen - z. B. mit einer 16-Bit-Knotenindexnummer anstelle eines vollständigen Zeigers / einer vollständigen Referenz.