Sparse Matrix?
-
Hallo,
hat jemand vielleicht ein Beispiel zur Anwendung und zum Aufbau einer Sparse Matrix in C++?
Danke,
mikael
-
Eine gute Implementierung ist davon abhängig wie die Matrix besetzt ist. Ich könnte mir z.B. eine Implementierung mittels einer Hashtable gut vorstellen, wenn die Matrix relativ verstreut besetzt ist. Hat man aber eine Anwendung in der man z.B. nur die Haupt- und die beiden Nebendiagonalen besetzt hat, dann bietet sich eine Implementierung via std::vector an. boost bietet in uBlas fertige Klassen für dünnbesetzte Matrizen. Schau es dir einfach mal an.
Zu den Anwendungen: Was genau willst du denn machen? Dünnbesetzte Matrizen kommen z.B. in der numerischen Lösung partieller Differentialgleichungen zum Einsatz.
-
Ich will die Sparse Matrix als ADT integrieren. Ich hab hier eine textdatei mit 30.000 Zeilen Koordinaten von Sternbeobachtungen, unterteilt nach Ländern. Also wieviele Leute zum Zeipunkt X an einer bestimmten Koordinate etwas gesehen haben. Was sie gesehen haben ist im moment egal.(Der Einfacheit wegen sagen wir, der Himmel ist aufgeteilt in Koordinaten und zwar 100.000 * 100.000 (eigentlich sind es mehr). Nun hab ich natuerlich sehr viele Koordinaten wo einfach nichts gesehen wurde , also 0.
Und ich glaub ein int himmel[100000][100000] würde da nicht so gut kommen oder?
-
mikael schrieb:
hat jemand vielleicht ein Beispiel zur Anwendung und zum Aufbau einer Sparse Matrix in C++?
siehe buchempfehlung in der sig.
der hatte werte auf ner landkarte verteilt als matrix dargestellt, wo viele felder leer waren.
-
mikael schrieb:
Und ich glaub ein int himmel[100000][100000] würde da nicht so gut kommen oder?
nicht extrem gut. aber ints lassen sich wunderfein verrechnen. hasttable wie von Walli vorgeschlagen, wird's werden.
-
mikael schrieb:
Und ich glaub ein int himmel[100000][100000] würde da nicht so gut kommen oder?
Ne, sicher nicht
. Hier wäre eine Implementierung mit einer Hashtable vorzuziehen denke ich.