Dijkstra - complete: "Settled set should not contains node with id 1"

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!
Kabooom
Erstie
Erstie
Beiträge: 19
Registriert: 17. Jun 2017 15:04

Dijkstra - complete: "Settled set should not contains node with id 1"

Beitrag von Kabooom » 18. Jun 2017 18:44

Hallo,

ich erhalte beim Dijkstra die Fehlermeldung "Settled set should not contains node with id 1" beim Test testDynamicUndirectedGraphVariant. Weiß jemand was mein Fehler sein könnte und kann mir weiterhelfen?

Hier mein Code zu executeVariant(), da der Fehler ja scheinbar damit zusammenhängt:

Code: Alles auswählen

public void executeVariant()
{
    setIterations(getIterations() + 1);
    
    setSmallestNode(getPriorityQueue().remove());
    getSettled().add(getSmallestNode());
}

LukasPhysiker
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 111
Registriert: 6. Mai 2017 13:05

Re: Dijkstra - complete: "Settled set should not contains node with id 1"

Beitrag von LukasPhysiker » 18. Jun 2017 19:19

Hallo Kaboom,

ich glaube nicht, dass es an deiner executeVariant() liegt. Ich habe das mal in die "Dijkstra: breakCondition/variant"-Aufgabe eingegeben zusammen mit folgender checkBreakCondition():

Code: Alles auswählen

public boolean checkBreakCondition()
{
    return !getPriorityQueue().isEmpty();
}
und es funktioniert. Aus deiner Fehlermeldung werde ich gerade auch nicht schlau, aber ich würde dir auf jeden Fall empfehlen erstmal die Teilaufgaben zu Dijkstra zu machen bevor dich an "Dijkstra - complete" wagst. Da gibt es auch schon einen Thread darüber, wo sich über die Aufgabe beschwert wird, vielleicht helfen dir die Ergebnisse davon ja weiter:
viewtopic.php?f=167&t=36294

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

Re: Dijkstra - complete: "Settled set should not contains node with id 1"

Beitrag von Kabooom » 19. Jun 2017 09:49

Hallo Lukas,

danke für deine Antwort. Ich werde mir nochmal die Teilaufgaben anschauen, aber bei Dijkstra complete bestehe ich alle Tests außer diesem einen...

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

Re: Dijkstra - complete: "Settled set should not contains node with id 1"

Beitrag von Kabooom » 19. Jun 2017 20:30

Ich habe auch nochmal nachgeprüft, mein Code besteht alle Tests aus allen Teilaufgaben. Die einzige Methode, für die es keine einzelne Teilaufgabe gibt ist preProcess(), erkennt da vielleicht jemand einen Fehler?

Code: Alles auswählen

public void preProcess() throws InvalidInputException
{
    if (getSourceNode() == null || getGraph() == null)
        throw new InvalidInputException("graph or source node is a null value");
    
    for (Edge<N,E> edge : getGraph().getEdgeList())
        if (getComparator().isNegative(edge.getData()))
            throw new InvalidInputException("graph contains edges with negative value");
    
    setIterations(0);
    
    setPredecessors(new HashMap<Node<N, E>, Node<N, E>>());
    setSettled(new HashSet<Node<N, E>>());
    setPaths(new HashMap<Node<N, E>, LinkedList<Node<N, E>>>());
    
    HashMap<Node<N, E>, E> distances = new HashMap<Node<N, E>, E>();
    for (Node<N,E> node : getGraph().getNodeList()) {
        distances.put(node, getComparator().getMax());
    }
    distances.put(getSourceNode(), getComparator().getZero());
    setDistances(distances);
    
    PriorityQueue<Node<N, E>> priorityQueue = new PriorityQueue<Node<N, E>>(getQueueComparator());
    priorityQueue.add(getSourceNode());
    setPriorityQueue(priorityQueue);
}

Antworten

Zurück zu „AuD: Programmieraufgaben“