Graph: countNodes - Zugriff auf Nachbarknoten

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!
DerMathematiker
Neuling
Neuling
Beiträge: 8
Registriert: 27. Apr 2017 14:52

Graph: countNodes - Zugriff auf Nachbarknoten

Beitrag von DerMathematiker »

Bei der Aufgabe countNodes soll rekursiv ein Algorithmus implementiert werden, der die Knoten in einem (Teil-)Graphen zählt. Das deutet darauf hin, dass der rekursive Aufruf mit jedem Nachbarknoten eines Knotens durchgeführt werden soll. Allerdings wird aus den erlaubten Methoden nicht deutlich, wie man auf die Nachbarknoten bzw. die ausgehenden Kanten zugreifen kann. Wie kann man dieses Problem lösen?

Es gibt wohl die Möglichkeit, über getFanOut() auf die ausgehenden Kanten zuzugreifen, diese besitzen auch die Attribute from und to, allerdings haben diese den Zugriffstyp private und es gibt dafür scheinbar keine Getter-Methoden.

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

Re: Graph: countNodes - Zugriff auf Nachbarknoten

Beitrag von kommiker »

Hallo DerMathematiker,

wie du schon richtig erkannt hast gibt es die Möglichkeit über getFanOut() alle ausgehenden Kanten zubekommen. Außerdem ist richtig das die Aufgabenstellung ein richtiges bearbeiten der Aufgabe nicht ermöglicht. Naja was solls...

Ich konnte die Aufgabe durch ein wenig rumprobieren mit nicht aufgelisteten Methoden lösen, sodass sie alle Tests besteht.

Du hast vollkommen richtig erkannt das man eine Form des Zugriffs auf Start- und Zielknoten einer Kante braucht, deshalb an der Stelle:

Code: Alles auswählen

//Sei e ein Edge Objekt
e.getTargetNode();
e.getSourceNode();
Mit diesen kannst du, wie der Name bereits sagt, auf Start- und Zielknoten einer Edge zugreifen. Beide werfen, obwohl sie nicht in der Liste der erlaubten Methoden sind, keine Compilefehler und sind meiner Meinung nach auch der Weg den man gehen sollte.

Ein kleiner Tipp an Rande: Überlegt dir nochmal ob es ausreicht sich nur die Kanten von getFanOut() anzuschauen. Gibt es ein Szenario in dem du dir die reingehenden Kanten anschauen musst?

Ich hoffe ich konnte deine Frage beantworten, falls du trotzdem Schwierigkeiten mit der Lösung der Aufgabe haben solltest, schreib mir doch bitte nochmal :)

lg kommiker

Antworten

Zurück zu „AuD: Programmieraufgaben“