Sehr große Adjazenzmatrizen

Hallo zusammen,

im Rahmen einer sozialen Netzwerkanalyse suche ich gerade eine Möglichkeit, große Adjazenzmatrizen zu erstellen und in einer Datei zu speichern, mit der ich dann Statistikprogramme wie R oder Pajek füttern kann, die mir daraus eine schöne grafische Darstellung zaubern.

Zu diesem Zweck hole ich das (bereits vorhandene) Datenmaterial aus einer MySQL-Datenbank und möchte dieses in Adjazenzmatrizen umwandeln. Jetzt das eigentliche Problem: Das soziale Netzwerk besteht aus etwa 100.000 Personen und dementsprechend groß (also 100.000 x 100.000) kann dann auch eine Matrix werden. Der Speicherbedarf für ein entsprechendes zweidimensionales Array wäre z.B. in Java schonmal 100.000 x 100.000 x 2 Byte = ca. 18 GB, wenn ich als Datentyp „short“ mit 2 Byte verwende („byte“ würde nicht reichen, da auch Werte >128 vorkommen).
Ich hätte natürlich auch die Möglichkeit, eine Adjazenzliste zu generieren und daraus dann die Datei zu erstellen. Das hätte den Vorteil, dass für 0-Werte in der Matrix kein Speicher draufgeht.

Bevor ich das aber so implementiere, würde mich mal interessieren, ob ihr andere Vorschläge habt. Gibt es eine Programmiersprache, die mit so riesigen zweidimensionalen Arrays effektiv umgehen kann? Was gibt es noch für Möglichkeiten? Würde es z.B. mehr Sinn machen, eine Adjazenzmatrix zuerst in MySQL zu speichern und dann daraus die Datei zu basteln?

Ich bin gespannt auf Eure Antworten.
Viele Grüße,
Chris

Moien

Zuerst solltest du die Daten sichten. Ist die Matrix dünn besetzt? Wie dünn? Welche Daten muss man rausziehen können?

Je nach dem wie dünn das ganze ausfällt und welche Algos drauf laufen sollen sind unterschiedliche Sparse Matrix Ansätze zu benutzen.

cu