Graph: addEdge - welche Methode ist welche?

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!
beta_tester_1001
Neuling
Neuling
Beiträge: 10
Registriert: 29. Mai 2017 17:12

Graph: addEdge - welche Methode ist welche?

Beitrag von beta_tester_1001 » 13. Jun 2017 22:49

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.

tna_wirth
Neuling
Neuling
Beiträge: 9
Registriert: 20. Okt 2013 23:51

Re: Graph: addEdge - welche Methode ist welche?

Beitrag von tna_wirth » 19. Jun 2017 13:10

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.
AuD - Codemonkey - Graphen u. Baeume - Development

beta_tester_1001
Neuling
Neuling
Beiträge: 10
Registriert: 29. Mai 2017 17:12

Re: Graph: addEdge - welche Methode ist welche?

Beitrag von beta_tester_1001 » 20. Jun 2017 21:57

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

beta_tester_1001
Neuling
Neuling
Beiträge: 10
Registriert: 29. Mai 2017 17:12

Re: Graph: addEdge - welche Methode ist welche?

Beitrag von beta_tester_1001 » 20. Jun 2017 21:59

war wohl schon im Mai:
viewtopic.php?f=167&t=36239&p=175261&hi ... ge#p175261

Korrektur: Mai, nicht April
Zuletzt geändert von beta_tester_1001 am 20. Jun 2017 22:50, insgesamt 2-mal geändert.

kommiker
Mausschubser
Mausschubser
Beiträge: 51
Registriert: 24. Apr 2017 19:25

Re: Graph: addEdge - welche Methode ist welche?

Beitrag von kommiker » 20. Jun 2017 22:09

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

Vykyfikation
Mausschubser
Mausschubser
Beiträge: 69
Registriert: 9. Mai 2017 12:44

Re: Graph: addEdge - welche Methode ist welche?

Beitrag von Vykyfikation » 22. Jun 2017 11:27

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!

Vykyfikation
Mausschubser
Mausschubser
Beiträge: 69
Registriert: 9. Mai 2017 12:44

Re: Graph: addEdge - welche Methode ist welche?

Beitrag von Vykyfikation » 22. Jun 2017 11:44

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 :)

SwiftRiverShark
Neuling
Neuling
Beiträge: 3
Registriert: 15. Jun 2017 10:56

Re: Graph: addEdge - welche Methode ist welche?

Beitrag von SwiftRiverShark » 24. Jun 2017 18:41

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.

Antworten

Zurück zu „AuD: Programmieraufgaben“