Funktionale Sparse-Matrix mit guter Leistung?

8

Beim Schreiben eines Petri Net-Programms stand ich vor der Wahl der Datenstrukturen zur Darstellung des Diagramms. Adjazenzlisten (dh Listen, in denen die Bögen in und aus einzelnen Orten oder Übergängen aufgelistet sind) sind leicht zu implementieren, aber während ich die Theorie der Petrinetze studierte, war ich von der Schönheit des matrixbasierten Zustandsgleichungsansatzes angetan - der Ich würde vermutlich verlangen, spärliche Matrizen zu verwenden.

Was mich zu der Frage geführt hat: Gibt es Implementierungen von spärlichen Matrizen, die eine schnelle Aufzählung in Zeilen und Spalten ermöglichen? Wenn nicht, gibt es Alternativen, mit denen ich einen zweigliedrigen Graphen in einer funktionalen Sprache wie Erlang erstellen und effizient durchlaufen kann?

FWIW - Mit "effizient" meine ich in diesem Fall schnell die Aufzählung der Bögen , die auf einen bestimmten Übergang oder Ort fallen. Ich würde gerne Raum gegen Zeit tauschen, wenn Kompromisse eingegangen werden müssten. Da das Diagramm nach der Erstellung nicht geändert wird, muss es für Einfügungen oder Aktualisierungen nicht besonders effizient sein.

TIA

Andrew Matthews
quelle

Antworten:

5

Buluç et al. (2009) schlagen ein Speicherformat vor, das als komprimierte Sparse-Blöcke bezeichnet wird und keine Zeilen oder Spalten bevorzugt. EINn×nβ×βn/.βÖ(β)

Marcus Ritt
quelle