|
News:
|
| 2 |
Klingt irgendwie danach, als ob du einen Zyklus in deinem Graphen hast, oder es muß wirklich verdammt tief gehen.
– Charon 24.09.2009
|
|
|
Wie viele Knoten hat der Graph etwa, 100'000?
– knivil 24.09.2009
|
||
|
Viele... ;-)
– oldtimer 24.09.2009
|
|
|
| 1 |
Wie soll ein Graph sonst gespeichert werden außer dass die Knoten in einer "Liste" gehalten werden und jeder Knoten eine "Liste" mit Kanten hält?
Ich hab deshalb die Liste in "" gesetzt da ich meist anstatt einer List<T> ein Dictionary<K,V> verwendet. Dadurch ist der direkte Zugriff auf einen Knoten ein ~O(1)-Vorgang. – gfoidl 24.09.2009
|
|
| 1 |
Es gibt viele Wege Graphen zu implementieren. Man braucht z.B. das Konzept Knoten und Graph nicht trennen, da ein Wurzelknoten als Repreasentant fuer einen Graphen ausreicht. Das scheint hier der Fall zu sein, da die Frage sonst unsinnig waere.
– knivil 24.09.2009
|
|
| 1 |
Hier einige Beispiele (C,C++):
http://www.macs.hw.ac.uk/~rjp/Coursewww/Cwww/tree.html http://www.codeproject.com/KB/architecture/treedata_class.aspx – knivil 24.09.2009
|
|
| 1 |
Kann es sein dass du Graph mit Baum verwechselst? Bzw. dass uns der Fragensteller durch seine Frage+Problem in die Irre getrieben hat?
Ein Baum ist ein Sonderfall eines Graphen. Eine "Liste" kann auch zu einem Element entarten. Daher wäre die Bezeichnung Menge meinerseits korrekter gewesen ;) – gfoidl 24.09.2009
|
|
| 1 | ||
| 1 |
Ich kann die gleiche Strategie vom Baum auf allgemeine Graphen uebertragen. Es geht einzig und allen um den Repreasentanten. Dieser muss nicht mal besonders ausgezeichnet sein, wie der Wurzelknoten bei einem Baum.
– knivil 24.09.2009
|
|
| 1 |
Es ist wirklich ein Graph. Ich will eine Liste aller Knoten mit einem HashSet<Node> erstellen.
– oldtimer 24.09.2009
|
|
| 1 |
Graph = Obermenge zu der auch ein Baum gehört (schon oben erwähnt). Die Strategie eines Baums kann eben nicht auf allgemeine Graphen übertragen werden - umgekehrt sehr wohl.
ZB ein allgemeiner Graph wie eine Strassenkarte lässt sich nicht durch die Strategie Binärbaum darstellen (bzw. würde das ganz was anderes ergeben). – gfoidl 24.09.2009
|
|
| 1 |
Du begreifst nicht: Und jetzt bist du schon bei Binaerbaeumen! Mir geht es einzig und allein darum, das ein einzelner Knoten als Repraesentant fuer einen gesamten Graphen ausreicht und nicht alle Knoten in einer Liste vorgehalten werden muessen. Als Beispiel habe ich einen Baum verlinkt, da ich keine Lust hatte, mir selbst jetzt was auszudenken. Gewiss gilt das nur fuer ungerichtete, zusammenhaengende Graphen. Davon bin ich aber ausgegangen, da oldtimer von Netzwerk gesprochen hat.
– knivil 24.09.2009
|
|
| 1 |
Ich begreife nicht und du hast arge Probleme mit den Begriffen ;)
Ein Knoten ist Bestandteil eines Graphen und somit kann ein Knoten keinen Graphen repräsentieren! Das geht rein mathematisch gar nicht. Eine Menge kann nicht durch ein Element beschrieben werden (Grundsätze der Mengenlehre). Wie das im Programm dargestellt wird ist eine andere Sache die ich nur im 1. Kommentar erwähnt habe. In meinem 2. Kommentar hab ich dann auch erwähnt was die "Liste" bedeutet. Du musst schon lesen was ich schreibe. Wenn du mir das nicht glaubst lerne mal was über Graphentheorie und melde dich dann wieder. – gfoidl 24.09.2009
|
|
| 1 |
Ich will hier keine Diskussion über Graphentheorie führen denn deine Ansicht ist schlichtweg falsch - auch wenn es sich programmtechnisch umsetzen lässt.
– gfoidl 24.09.2009
|
|
|
Naja, jeder Knoten eines zusammenhaengenden ungerichteten Graphen kann mit der "Kind-Operation" den gesammten Graphen erzeugen. Er ist also ein "erzeugendes Element", Repraesentant, lineare Huelle ... what ever you want. Mein Physikprof. meinte mal zu mir: "Wenn etwas nicht geht, dann hat man meist zu engstirnig gedacht". Falls du dich an dem Begriff Graph stoerts, dann nenne es wegen mir Netzwerk. Mir geht es auch eher um die Ideen hinter den Worten als um die exakte mathematische Beschreibung.
– knivil 06.10.2009
|
||
|
Ob engstirnig gedacht oder nicht - was hätte dein Prof. gesagt wenn du die Begriffe bei der Prüfung durcheinander bringst? Da zählt nicht mehr die Idee sondern die allgemein gültigen Definitionen. Wozu gibt es denn eine mathematische Beschreibung die in diesem Fall sogar ziemlich eindeutig ist?
An deiner Idee dahinter hab ich ja nichts ausgesetzt, nur an den falschen Begriffen. Was jetzt allerdings eine lineare Hülle (ist übrigens ein Begriff aus der linearen Algebra) damit zu tun hat weiß ich nicht. Allzu oft kannst du deinen Prof. nicht gesehen haben ;) – gfoidl 06.10.2009
|
||
void Rekursiv(parameter1) {
//...
if (bedingung)
Rekursiv(p1);
else
return;
}void Iterativ() {
Stack.Push(p1);
while (Stack.Count > 0) {
//...
if (bedingung)
Stack.Push(p1);
else
p1 = Stack.Pop();
//...
}
end function|
|