So, nachdem ich mich heute nachmittag auch endlich mal an die Aufgabe gesetzt hab, hab ich auch ein schönes Ergebnis…
Das Bild zur Vorgabe-Karte schaut zwar ein bisschen anders aus, aber es entstehen die gleichen Wegkosten von 45. Vermutlich steckt also irgendwo beim Prioritätsvergleich ein [m]<[/m] statt einem [m]<=[/m] oder andersrum…
Wurscht, jedenfalls hätten wir dann mittlerweile (vorausgesetzt meine stimmt…) zwei Lösungen in der Sammlung:
@liwo
leider kann ich deine beiden test-dateien nicht kompilieren
beim haldeTest bekomm ich ganze 41 fehler. und bei dem anderen einen: IntSchlangenEintrag.java:45: operator > cannot be applied to java.lang.Integer,java.lang.Integer
Wegkosten sind ebenfalls 45, und in meiner geschlossenen Liste befinden sich 440 Einträge.
Und wenn ich statt des Euklidischen Abstands die h-Kosten einfach so berechne:
h = |Δx| + |Δy|
dann komme ich auf noch ein anderes Ergebnis (aber auch mit Kosten 45), für das ich nur 379 Einträge in der geschlossenen Halde habe.
Geschlossene Halde? Es steht doch nirgends, dass die geschlossene Liste eine Halde sein muss, oder?
Und auch wenn der “Manhatten-Abstand” in dem Fall effizienter zu sein scheint, so steht doch in der Aufgabe, dass sich die Verwendung des Euklidischen Abstands “empfiehlt”, also bleibe ich lieber bei dem… auch wenn er nach der Formulierung nicht zwingend vorgeschrieben ist…
Ich muss sagen ich fänds mit “Manhatten-Abstand” auch besser, schon von der Laufzeit her gesehen.
Aber wenn halt euklid dasteht. Und das ist halt:
h = √(Δx² + Δy²)
(ich denke daher rührt auch, dass wir vorgegebenerweise mit “double” arbeiten…)
Und die geschlossene Liste ist bei mir ein Array.
Unterschiede entstehen halt, je nachdem wie man zwei gleich priorisierte Elemente in der Halde behandelt, wie man da seinen Umsortieralgorithmus einbaut.
Ich finds aber witzig, dass es scheinbar echt mehrere gleich gute Wege gibt.
Gut… Ich bin da grad am Anfang - ich weiß im Moment auch noch gar nicht um was es in diesem A* genau geht. Daher war ich mir auch nicht sicher, ob etwas mit “fester” Größe reicht, oder ob ich lieber doch was mit “flexibler” Größe machen sollte.
Bei der Theorie, hab ich für den zweiten Punkt die Halde genommen, die ich aus Punkt 1 gewonnen habe. Aber kann gut sein, dass die das von der Ursprungshalde wollen.
Ich frag mich eh, wie ich das als PDF-Abgeben will.
Ich hab für die Theorie Dia genommen, als Grafik exportiert und die kann ich dann wieder in meine LaTeX-Datei einbauen… ok, allzu toll ausschauen tuts net, aber das ist ja auch nicht verlangt
Zum HaldeTester.java> THX erstmal.
Kann es sein dass der Tester ein Fehler beim Auslesen der Elemente hat? Bei mir throwed er naemlich immer NullPointerExceptions.
Darauf hin hab ich mir erlaubt aus den Teser die try & catch-Bloecke rauszuloeschen. Gut, Kompiliert und ausgefuehrt> Resultat:
“Pruefe auslesen von Elementen… Exception in thread “main” java.lang.NullPointerException at HaldeTest.main(HaldeTest.java:90)”
D. h. schliess ich draus dass meine Halde in Ordnung ist, da ich ja keinen Querverweis auf die NullPointerException in meinen Code bekommen hab. Lieg ich da richtig? :#:
servus zusammen. mal ne ganz blöde Frage. Bei der Halde hab ich nen Wert und ne Priorität. Soll ich die in ner extra Klasse implementieren. (Beim Testcase vom Leidensgenossen ist das alles in ner extra Klasse) Das Interface Schlangeneintrag ist ja nur für die Mehtoden. Irgenwie steh ich da ufm Schlauch. :wand: