Prim Algorithmus

Bei Postings zu Aufgabe Nr. x = 1..4 lassen Sie Ihr Betreff bitte mit "x: " beginnen, gefolgt von einer möglichst präzisen Überschrift, danke!

Moderator: Algorithmen und Datenstrukturen

Forumsregeln
Bei Postings zu Aufgabe Nr. x = 1..4 lassen Sie Ihr Betreff bitte mit "x: " beginnen, gefolgt von einer möglichst präzisen Überschrift, danke!
Gruftgrabbler
Neuling
Neuling
Beiträge: 5
Registriert: 16. Mai 2017 10:44

Prim Algorithmus

Beitrag von Gruftgrabbler » 17. Mai 2017 12:47

Hallo Leute. Irgendwie komme ich mit den Codemonkey Aufgaben kaum Zurecht, da ich häufig nicht genau weis was die Aufgabenstellung von mir will.
Hier mein Problem: Es handelt sich um quasi die leichteste Aufgabe aller Zeiten, doch mir klappt das irgendwie nicht -,-

Code: Alles auswählen

public boolean checkBreakCondition()
{
    return getPriorityQueue().isEmpty();
}
und

Code: Alles auswählen

public void executeVariant()
{
    getPriorityQueue().remove(getSmallestEdge());
    setIterations(getIterations()+1);
}
produziert die Fehlermeldung mit der ich nichts anfangen kann.

Code: Alles auswählen

Junitreport
Time – 28
Testcount – 2
Failurecount – 2
Ignorerecount – 0
Failurereport
Testheadder – testDynamicVariant(graph.algorithm.prim.PrimBreakConditionVariantTest)
Message – The size of visited should be 0, but was 1
Trace 
Failurereport
Testheadder – testDynamicBreakCondition(graph.algorithm.prim.PrimBreakConditionVariantTest)
Message – The size of visited should be 0, but was 1
Trace 
Vielen Dank für eure Hilfe
Liebe Grüße

Kabooom
Erstie
Erstie
Beiträge: 19
Registriert: 17. Jun 2017 15:04

Re: Prim Algorithmus

Beitrag von Kabooom » 20. Jun 2017 17:30

Hallo,

falls das Problem noch besteht ist das hier hoffentlich die Lösung:

1. Bei checkBreakCondition() ist die Aufgabenstellung leider falsch. Die Methode soll in Wirklichkeit false zurückgeben, wenn der Algorithmus terminieren soll, also musst du dein return negieren.

2. Die remove() Methode von PriorityQueue gibt automatisch das erste Element in der Queue (in diesem Fall die Kante mit dem kleinsten Kantengewicht) zurück und entfernt dieses aus der Queue. Den Rückgabewert dieser Methode musst du dann mithilfe von setSmallestEdge() in die Variable smallestEdge abspeichern.

Antworten

Zurück zu „AuD: Programmieraufgaben“