Forum: Programmieren allgemein
by DGL-luke,
7. Jan 2006
Sodele, hab das jetzt gemacht: Für die geschlossene Liste nur eine Hashtable, für die offene einen Heap(immer nach F-Kosten sortiert) und eine Hashtable.
Funktioniert wunderbar, super Performance!
Forum: Programmieren allgemein
by DGL-luke,
6. Jan 2006
Man müsste es irgendwie hinkriegen, dass im Hash die Kosten eine große Bedeutung und die Koordinaten eine niedrigere haben, so dass sich irgendwie beides gleichzeitig sortiert... oder hab ich da jetzt einen Wurm drin? Wenn nach Kosten sortiert wird, kann nicht gleich zeitig nach Koords sortiert sein...
Ich könnte auch erstmal eine kostensortierte Liste einfügen und dann eine Hashtable...
Forum: Programmieren allgemein
by DGL-luke,
6. Jan 2006
Hm... kann ich da auch irgendwie "doppelt indizieren", indem ich meine offene Liste sowohl nach Kosten als auch nach Koordinaten-Hash indiziere?
Ist das irgendwie machbar? Es müssen ja dann entweder zwei Listen vorliegen mit Referenzen oder man muss nach Priorität sortieren...
Ich kenn mich mit solchen Datenstrukturen leider überhaupt nicht aus...
Forum: Programmieren allgemein
by DGL-luke,
6. Jan 2006
Hm... ne.. ich habe jetzt ein bool.
Für eine generische A*-Implementation würde ich dir natürlich recht geben udn versuchen, eine effiziente Datenstruktur zu implementieren, aber ich weiss, dass mein grid nie größer als 200|200 wird.
Forum: Programmieren allgemein
by DGL-luke,
6. Jan 2006
jupp.... nachdem ich meine maximalgröße kenne, also einfach ein AStarNode closedLocs = new AstarNode();
Und wenn ich das eh mit den Referenzen kombiniere... mal sehen... schade dass dann die generik verloren geht. aber was solls, ist ja ne implementation und kein sample für die codelib.
Forum: Programmieren allgemein
by DGL-luke,
6. Jan 2006
Hallo,
ich muss hier ne Suche optimieren. Und zwar habe ich eine Klasse NetNode : AStarNode mit einem public Point Coords.
Ich will jetzt in einer Liste suchen, ob es schon ein Objekt gibt, das diese Koordinaten hat, und das so schnell wie möglich.
Wie macht man das?
Ich hätte übrigens auch schon NetNode.IsSameState(NetNode Node), das genau das überprüft.
Bekomme ich das mit irgend einer...