|
|
|
Potenzieren einer sehr großen Matrix |
|
| MatlabANNE |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.01.2012, 02:24
Titel: Potenzieren einer sehr großen Matrix
|
 |
| |
 |
|
Hallo liebe Matlab-Freunde,
Ich habe folgendes Problem und brauche dringend Rat:
Ich möchte die Erreichbarkeitsmatrix ("reachability matrix") eines Graphen berechnen. Der zugrundeliegende Graph hat >100000 Knoten und ist gerichtet und azyklisch. Für so einen Graph lässt sich die reachability matrix R "sehr leicht" berechnen in dem man einfach die Adjazenzmatrix A n-mal mit sich selbst "boolean" multipliziert . Da ich die maximale Länge des Graphen abschätzen kann muss ich die Adjazenzmatrix nicht n-mal mit sich selbst multiplizieren sondern bedeutend weniger. Wenn ich nun in Matlab die operation A^10 ~=Z (wobei Z eine empty sparse ist und die als boolean Operand dient) durchführe bekomme ich einen Memory Error, was auch zu erwarten war denn mit jeder Multiplikation wird die Matrix "voller". Für meine weiteren Berechnungen brauch ich aber nur die Knoten in Reichweite für ca 6000 Knoten sprich ich brauche später nur einen Teil von R. Meine jetzige Alternative den Memory Error zu umgehen ist für jeden der 6000 Knoten über die Matlabfunktion "graphtraverse" die erreichbaren Nachfolger zu finden. Dies dauert ziemlich lang (ca 3 stunden) aber funktioniert. Nun wollte ich fragen ob jemand vielleicht noch einen weiteren Vorschlag hat wie ich schneller zu R oder den gesuchten Teil von R kommen könnte. Ich hatte daran gedacht die Operationen in Pakete zu teilen und zwischen zu speichern aber ich glaube, dass diese Methode noch mehr Zeit verschlingen verschlingen wird. Meine ganzen Matrizen sind übrigens schon sparse und logical um platz zu sparen.
Es wäre toll wenn ihr mir ein paar Tipps geben könntet (wenn es überhaupt eine Lösung zu diesem Problem gibt) wie ich vielleicht die Rechenzeit verringern könnte.
Schon mal vielen vielen Dank
Anne
|
|
|
|
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|