Autor |
Iteration über Graphen |
|
georgeboy
Junior  Dabei seit: 28.01.2021 Mitteilungen: 5
 |
Hallo zusammen, ich habe einen gerichteten Graphen mit mehr als
106 Knoten, jeder Knoten ist mit einer Ganzzahl >= 0 versehen, und jeder Knoten hat ca 15 Kanten. Am Anfang haben alle Knoten den Wert 0, nur einer den Wert 1. Nun möchte ich folgenden Schritt mehrfach ausführen, etwa 100 Mal: Berechne den neuen Wert für alle Knoten, aus der Summe der Werte seiner Nachbarn. Da dies sehr ineffizient ist, suche ich nach einer Verbesserung. Vielleicht kann mir jemand helfen ...
|
Notiz Profil
Quote
Link |
georgeboy
Junior  Dabei seit: 28.01.2021 Mitteilungen: 5
 |     Beitrag No.1, vom Themenstarter, eingetragen 2021-01-28
|
Ich nochmals, nicht 106, sondern 1000000 Knoten !
|
Notiz Profil
Quote
Link |
StrgAltEntf
Senior  Dabei seit: 19.01.2013 Mitteilungen: 6673
Herkunft: Milchstraße
 |     Beitrag No.2, eingetragen 2021-01-28
|
Hallo georgeboy,
in welcher Form ist denn der Graph gegeben? Als Adjazenzmatrix, als Adjazenzliste oder anders?
Wenn du sagst, dass es ineffizient und zu verbessern ist, wie hast du es denn bisher gemacht?
|
Notiz Profil
Quote
Link |
georgeboy
Junior  Dabei seit: 28.01.2021 Mitteilungen: 5
 |     Beitrag No.3, vom Themenstarter, eingetragen 2021-01-28
|
Das Vorhaben habe ich noch nicht realisiert, aufgrund der kleinen Anzahl von Kanten, eher als Adjazenz-Liste.
|
Notiz Profil
Quote
Link |
georgeboy
Junior  Dabei seit: 28.01.2021 Mitteilungen: 5
 |     Beitrag No.4, vom Themenstarter, eingetragen 2021-01-28
|
Bisher habe ich es als Brut-Force Methode gedacht: Alle Knoten und Kanten durchlaufen und die Summe bilden.
|
Notiz Profil
Quote
Link |
StrgAltEntf
Senior  Dabei seit: 19.01.2013 Mitteilungen: 6673
Herkunft: Milchstraße
 |     Beitrag No.5, eingetragen 2021-01-28
|
2021-01-28 13:50 - georgeboy in Beitrag No. 4 schreibt:
Bisher habe ich es als Brut-Force Methode gedacht: Alle Knoten und Kanten durchlaufen und die Summe bilden.
So würde ich es ja auch machen. 100 Mal 15 Mio Additionen sollten doch möglich sein. Ich wüsste nicht, wie man das großartig abkürzen könnte, solange man nicht eine bestimmte Struktur des Graphen ausnutzen kann.
|
Notiz Profil
Quote
Link |
georgeboy
Junior  Dabei seit: 28.01.2021 Mitteilungen: 5
 |     Beitrag No.6, vom Themenstarter, eingetragen 2021-01-28
|
100 * 15 Mio sind 1.5 Mrd. In einer Sekunde macht ein PC 300 Mio Maschinenbefehle. Das braucht viel Zeit. Es kommt wohl auf die Besonderheiten der Grapherstellung an. Einen allgemeinen effizienten Algorithmus gibt es dafür wohl nicht. Trotzdem Danke !
|
Notiz Profil
Quote
Link |
Folgende Antworten hat der Fragesteller vermutlich noch nicht gesehen. Er/sie war noch nicht wieder auf dem Matheplaneten |
StrgAltEntf
Senior  Dabei seit: 19.01.2013 Mitteilungen: 6673
Herkunft: Milchstraße
 |     Beitrag No.7, eingetragen 2021-01-28
|
2021-01-28 16:03 - georgeboy in Beitrag No. 6 schreibt:
100 * 15 Mio sind 1.5 Mrd. In einer Sekunde macht ein PC 300 Mio Maschinenbefehle. Das braucht viel Zeit. Es kommt wohl auf die Besonderheiten der Grapherstellung an. Einen allgemeinen effizienten Algorithmus gibt es dafür wohl nicht. Trotzdem Danke !
Kommt drauf an, was du unter effizient verstehst. Hier ist die Laufzeit wohl weniger als eine Minute.
Bei Brute-Force denke ich immer an exponentielle Laufzeit. Hier ist die Laufzeit aber linear.
|
Notiz Profil
Quote
Link |