Aufgabe 10.2


Hallo, hab mal eine Frage, was genau vergleicht die
int vergleichePrioritaetMit(Schlangeneintrag s) mit was und wo soll diese implementiert werden?


Das vergleicht einen Schlangeneintrag mit einem anderen.


Ja, gut, und wo soll ich es implementieren? Stern?


In EinStern sollst du ne Klasse Knoten schreiben, die implementiert das…

Und ich würde es eher so formullieren: Sie vergleicht die Priorität zweier Schlangeneinträge miteinander.


111111111111111111111111111111
111111111222222444533111281111
11122222222221111153411   1111
1112222244444223113334335 1111
1111111111111111111111111     
55555555555555555551111111111 
111111111111111112321111      
111111118881111111511111 11111
1111111188888888888881   11111
                     1 1111111
 1111111111111111188 7   71111
 11111111111111111   111 11111
          66611111 88111 11111
111111111    11111    11      
111111111667 27461111 1111111 
11222        11129347  221111 
11    1116666111111111    34  
11 2221111661111111187325    1
11   2111111111111111111111111
111111111111111111111111111111
Kosten: 252.0

naja… ich uebe noch ne runde :wink: :wand:

edit: die Halde war falsch rum sortiert, hatte die Knoten mit hoechstem f-wert oben… hmpf


111111111111111111111111111111
111111111222222444533111281111
11122222222221111153411 771111
11122222444442231133343 531111
11111111111111111111111 111111
55555555555555555551111 111111
11111111111111111232111 666666
11111111888111111151111    111
11111111888888888888811111 111
11111111888888888888811111 111
11111111111111111188877777 111
111111111111111111888      111
111166666666611111888 11111111
111111111666611111888 11777777
111111111667627461111 11111111
112222111566711129347 92211111
1122221116666         94883497
112222111166  1111118732584391
1122         11111111111111111
111111111111111111111111111111
Kosten: 45.0

ein bisschen anders, aber auch optimal was die kosten angeht. bei mir umgeht er die 7er-wand und investiert dafuer 7…


Servus,
wie habt das Problem mit dem Schlangeneintrag und der Priorität gelöst. Ausschließlich in Knoten bei Stern? Oder muss ich bei der Halde auch was berücksichtigen.
(Brauch ich villeicht ne extra Klasse in der ich den Wert und die Priorität übergebe???)

MFG
Jörg


Nicht so kompliziert denken!
Der A*-Algorithmus soll doch bei jedem Schleifendurchlauf den Knoten mit den geringsten f-Kosten aus der offenen Halde auswählen. Also gilt für jeden Knoten: je geringer die f-Kosten, desto höher die Priorität.
Das lässt sich also alles in der Klasse [m]Knoten[/m] lösen.

Ein Artikel von Patrick Lester über den Binary Heap
http://www.policyalmanac.org/games/binaryHeaps.htm
In diesem Artikel beschreibt Partick Lester die Halde genauer.
Ich finde es sehr schön erklärt - vll. hilft es ja noch wem.

:heart:


Also hier läuft endlich alles super spitze und super schnell :smiley:
Macht echt spass mit dem A* rumzuspielen! Super algorithmus!


Ich bin grad am Überlegen, wie ich die “Suche” am besten einbauen.
Momentan hab ich dieses “nimm den besten aus der offenen Liste und bearbeite seine Nachbarn” in einer Rekursion. D.h. wenn die Funktion endlich fertig ist, ist das Programm auch fertig.
Das hat mir jetzt aber einen StackOverflow gebracht.
Im Grunde brauch ich ja keine Rekursion, da mir die offene Halde egal wie und wann immer das beste Element liefert.

Drum: Wir habt’s ihr das gemacht?
Rekursion oder Schleife while(!open.isEmpty())


Ich finde, mit einer Schleife geht das wesentlich handlicher und übersichtlicher als mit Rekursion. Ich persönlich verwende deswegen eine Schleife.


hi, Leute! Wie habt ihr eigentlich den class Kmoten implementiert? z.B. bei
public int vergleichePrioritaetMit(Schlangeneintrag s) hab ich keine Ahnung, wie ich auf die Priorität von s zugreifen kann, denn das Interface hat keine Funktion, die die Priorität zurückliefert


Ne, musst halt casten… so hab ichs zumindest gemacht…


stimmt, klappt wirklcih… cool, wusste nicht, dass sowas geht :smiley:


Für alle die noch etwas mehr wissen wollen!

http://theory.stanford.edu/~amitp/GameProgramming/


frage zur teilaufgabe a):
es ist doch nur verlangt, dass man nach dem einfügen der neuen elemente wieder haldeneingenschaft herstellt. also ist es doch egal wenn ich einen knoten hab, ob das linke blatt oder das rechte blatt der beiden folgeblätter größer ist (es war ja nicht von einem binärem suchbaum die rede)
stimmt meiner überlegung so halbwegs ?

EDIT
sollen übrigens F auf 20 und C auf 0 gleichzeitig gesetzt werden? oder in seperaten schritten?


Ja, deine Überlegung stimmt.

Mach es in separaten Schritten.


kann den weg vom TheChip bestätigen:

..............................
..............................
.......................#......
.......................#......
.....................###......
.....................#........
.....................#........
.....................#........
.....................#........
.....................#........
.....................#........
.....................#........
.....................#........
.....................#........
.....................#........
.....................#........
.............#########........
............##................
....#########.................
..............................

Werd mal probieren ob ich target’s weg auch herkriege … atm sortiert meine halde erstmal in den rechten childnode, dann den linken … ma gucken … zumindest läuft es.

habs auch mit manhattan heuristik probiert:
Gleiche Kosten, aba anderer Weg:

..............................
..............................
.......................#......
.......................#......
.......................#......
.......................#......
.......................#......
.......................#......
.......................#......
.......................#......
.......................#......
.......................#......
.......................#......
.......................#......
.....................###......
.....................#........
...................###........
...................#..........
....################..........
..............................

HTH


tut mir leider, aber ich steh ein bisschen auf dem schlauch. es gibt mehrere funktionen, die sollen etwas mit einem objekt vom typ schlangeneintrag machen. woher kommt denn ein solches objekt? dazu braucht man doch eine klasse schlangeneintrag von welcher man so ein objekt erzeugen kann ? kann mir das jemand mal skizzieren ? danke !