sorry, dass ich mich so dumm anstelle - es liegt nur ein verständnisproblem vor. ich möchte doch erstmal eine funktionierende halde implementieren, welche offensichtlich aus diesen ominösen schlangeneintrags-objekten besteht.
d.h. ich brauche doch eine klasse halde die prioritätswarteschlage und schlangeneintrag als schnittstellen bereitstellt und dann will ich den mist doch irgendwie testen. sprich ich brauch (wenn auch nur testweise) doch objekte vom typ schlangeneintrag. woher kommen die?
Jetzt hab ich nochmal ne Kurze Verständnisfrage zum Heap.
Die Definition besagt ja eigentlich nur, dass alle Ebenen bis auf die unterste komplett gefuellt sein muessen, die unterste von links beginnend gefuellt sein muss, und die beiden Nachfolger eines Elements kleiner sind als das Element selbst (so stehts zumindest bei wiki und co).
Das stellt ja aber keine eindeutige Definition dar, es waeren doch beispielsweise diese beiden Anordnungen gueltige Heaps mit den gleichen Elementen:
[code]
125
/
3 80
/\ /
1 2 30 15
125
/
15 80
/\ /
1 2 30 3[/code]
Oder ist es schon so, dass auch die einzelnen Unterbaeume untereinander verglichen werden muessen?
richtig, das sind 2 moeglichkeiten, wie deine Halde aussehen darf und auch kann. Wie die unteren Elemente geordnet sind, interessiert dich nicht, solange die Haldeneigenschaft erfuellt ist. Die methode pop() liefert ja immernur das oberste Element (das mit der hoechsten Prioritaet).
Die die darunter kommen, muessen nicht vollstaendig sortiert sein, genau das macht die Halde ja so schnell.
hab mal ne frage zur knoten klasse
public boolean zuErsetzenDurch(Schlangeneintrag s)
was soll ich damit machen
leg ich irgendwo fest das allgemein nur erhöhungen oder verringerungen erlaubt sind oder steh ich grad auf dem schlauch und check das system nicht
kontra das system -.-
Bei Knoten ist das Ganze schon recht speziell für den A*-Algorithmus – und da macht es keinen Sinn, in der offenen Liste einen vorhandenen Eintrag durch einen mit höheren Wegkosten zu ersetzen…
Zwei Objekte können nicht mit den Operatoren [m]<[/m] bzw. [m]>[/m] verglichen werden.
Das Interface [m]Schlangeneintrag[/m] soll nicht in deiner [m]Halde[/m] implementiert werden, sondern in der Klasse [m]Knoten[/m] in der Datei [m]EinStern.java[/m].
Jeder [m]Schlangeneintrag[/m] bringt eine Methode namens [m]gleicheEntitaet()[/m] mit. Damit lässt sich überprüfen, ob zwei Einträge beide das selbe Element darstellen.
Ah, es klingelt! :rolleyes:
Also, [m]prio[/m] muss auf jeden Fall als [m]public[/m] deklariert sein. Und dann versuch’s mal mit [m]((Knoten) s).prio[/m] statt [m]s.prio[/m].
Muessen die Knoten in der Halde sortiert werden?
Wenn ja, geschieht das nach rechter Knoten>linker Knoten>Vater-Knoten bzw. umgekehrt Rechts<LinksRechts>Papa bzw. Links<Rechts<Papa?