Seite 1 von 1

Graph: addEdge - welche Methode ist welche?

Verfasst: 13. Jun 2017 22:49
von beta_tester_1001
Habe die Beschreibungen in diff geworfen, kein Unterschied zu sehen. Ich nehme an, Zwei unterschiedliche Methoden würde unterschiedliche Beschreibungen haben.

Sicherlich kann man mal wieder rumprobieren, aber das uns im Testat gesperrte Copy/Paste hat hier anscheinend gute Arbeit geleistet. In der Vorlesung hat Herr Professor Weihe auch oft genug Copy/Paste vorgelebt. Ich finde das einfach heuchlerisch.
Entweder es ist ihnen wie uns verboten, oder Sie klären uns auf und lassen es uns trotzdem nutzen.

So oder so wäre es trotzdem fantastisch, wenn es ersichtlich wäre, welche Methode welche werden soll.

Re: Graph: addEdge - welche Methode ist welche?

Verfasst: 19. Jun 2017 13:10
von tna_wirth
Guten Tag,

koenntest du noch einmal klarstellen, was genau hier an welcher Stelle gleich ist. Es kann sehr gut sein, dass sich hier ein Fehler eingeschlichen hat. Muss aber nicht.

Re: Graph: addEdge - welche Methode ist welche?

Verfasst: 20. Jun 2017 21:57
von beta_tester_1001
Beschreibung und Benennung der zu programmierenden Methoden in der genannten Aufgabe sind meiner Meinung nach gleich. Welche für DirectedGraph und welche für UndirectedGraph sein soll, ist mir nicht ersichtlich.

scheint hier das gleiche Thema zu sein:
viewtopic.php?f=167&t=36306&p=175416&hi ... ge#p175416

Re: Graph: addEdge - welche Methode ist welche?

Verfasst: 20. Jun 2017 21:59
von beta_tester_1001
war wohl schon im Mai:
viewtopic.php?f=167&t=36239&p=175261&hi ... ge#p175261

Korrektur: Mai, nicht April

Re: Graph: addEdge - welche Methode ist welche?

Verfasst: 20. Jun 2017 22:09
von kommiker
Beitrag von kommiker » 31. Mai 2017 17:30

In diesem Aufgabenpacket sind zwei Methoden zu implementieren. Add für gerichtete Kanten und für ungerichtete Kanten. Leider funktioniert das "Beschreibungsfeld" nicht richtig und zeigt bei mir in beiden Feldern dasselbe an. Ergo: Ich weis nicht wo ich welche Methode implementieren soll.

lg kommiker
31.Mai.

Wäre aber wirklich schön wenn das langsam mal geändert werden könnte.

lg kommiker

Re: Graph: addEdge - welche Methode ist welche?

Verfasst: 22. Jun 2017 11:27
von Vykyfikation
Ein weiterer Fehler ist, dass bei getFanIn() die komplette Methodenbeschreibung fehlt und die Methode fälschlicher Weise im Reiter "this" steht.
Auch kenn ich den Konstruktor für T nicht auswendig, muss aber eine Kante erstellen um sie der EdgeList hinzu zu fügen. Generell ist diesmal das Framework viel zu dürftig erklärt!

Re: Graph: addEdge - welche Methode ist welche?

Verfasst: 22. Jun 2017 11:44
von Vykyfikation
Außerdem wird nicht erwähnt, dass man linkTo beutzen muss, von wo und wie ganz zu schweigen.
Habs nach bisschen tüfteln herraus gefunden.. Hier die Methode für den ungerichteten Graph:

Code: Alles auswählen

{
    //Erzeugt eine Kante zwischen den gegebenen Startknoten und Endknoten, mit dem Kantengewicht data und fügt diese der Kantenliste hinzu. 
    if(from.getFanOut().size() >= getFanOutMax() ||to.getFanIn().size() >= getFanInMax()){
        throw new FanOverflowException("blab");
    }else{
        ArrayList<Edge<N, E>> list = getEdgeList();
        Edge<N, E> edgein = new Edge(from,to,data);
        Edge<N, E> edgeout = new Edge(to,from,data);
        edgein.linkTo(edgeout);
        list.add(edgein);
        setEdgeList(list);
    }
    
}
Der gerichtete Graph ist ähnlich nur mit 2 Zeilen weniger :)

Re: Graph: addEdge - welche Methode ist welche?

Verfasst: 24. Jun 2017 18:41
von SwiftRiverShark
Ich habe gerade die Methode gelöst, und immernoch sind die Methoden-Beschreibungen gleich.

Allerdings fällt auf, dass es bei der "Methode 1" oben zusätzlich "linkTo" verfügbar ist, welches eindeutig darauf hinweist dass es sich dabei um die "ungerichtete Graph" - Methode handeln muss.

Aber mir ist bis jetzt keine Aufgabe in CodeMonkeys über den Weg gelaufen, die nicht mehrere schwerwiegende Fehler in der Beschreibung hat.

Interessanterweise steht oben für Directed Graph
Die Methode wirft eine FanOverFlowException genau dann wenn:
Die Anzahl der ausgehenden Kanten des Startknotens größer gleich der Konstanten FAN_OUT_MAX ist
Die Anzahl der eingehenden Kanten des Endknotens größer gleich der Konstanten FAN_IN_MAX ist
und für Undirected Graph
Die Methode wirft eine FanOverFlowException genau dann wenn:
Die Anzahl der ausgehenden Kanten des Startknotens und Endknotens größer gleich der Konstanten FAN_OUT_MAX ist
Die Anzahl der eingehenden Kanten des Startknoten und Endknotens größer gleich der Konstanten FAN_IN_MAX ist
Für die Lösung ist aber die Selbe Abfrage in beiden Methoden nötig, nämlich:

Code: Alles auswählen

    if(from.getFanOut().size()  >= getFanOutMax() ) throw new FanOverflowException("Zu viele ausgehende Kanten");
    if(to.getFanIn().size() >= getFanOutMax() ) throw new FanOverflowException("Zu viele eingehende Kanten");
Mehr noch: Passt man die Lösung für "undirected Graph" gemäß der Forderung oben an, funktioniert es nicht mehr. So macht Programmieren absolut keinen Spaß: Ausprobieren bis es klappt, völlig unabhängig von dem was in der Aufgabenstellung "beschrieben" wird.