Hallo,
ich stehe momentan vor einer kleinen Design-Entscheidung.
Ich habe bisher Knoten- und Kanten-Attribute, wie zum Beispiel, ob ein Knoten gesehen wurde oder die Kapazität einer Kante für Fluss-Algorithmen als tatsächliches Attribut eines Knotens oder einer Kante implementiert.
Ich frage mich, ob das tatsächlich sinnvoll ist, da es einerseits den Knoten oder die Kante recht "spezifisch" machen würde, da somit jede Kante eine Kapazität hätte, um bei dem Beispiel zu bleiben, auch für Algorithmen, die gar keinen Fluss berechnen.
Theoretisch könnte ich noch argumentieren, dass ich da dann super Vererbung etc. benutzen könnte.
Allerdings hat mir dieses Design schon einmal richtig das Genick gebrochen und zwar bei einem bestimmten Algorithmus, bei dem Kanten temporär aus dem Graphen gelöscht werden mussten. Da dies temporär war, musste ich den Graph "klonen", damit die Informationen nicht verloren gingen. Und da Java nur mit Pointern arbeitet, musste ich somit auch jede Kante und jeden Knoten und damit auch jedes einzelne Attribut klonen.
Nun habe ich mich gefragt, ob es nicht teilweise sinnvoller wäre, dass man diese Informationen zusätzlich in einer entsprechenden Datenstruktur (Array, Liste, etc.) mit an den bestimmten Algorithmus übergibt. So müssten diese Informationen nicht mehr in den Knoten und Kanten gespeichert werden.
Was haltet ihr denn davon?
Grüße, Naryxus
ich stehe momentan vor einer kleinen Design-Entscheidung.
Ich habe bisher Knoten- und Kanten-Attribute, wie zum Beispiel, ob ein Knoten gesehen wurde oder die Kapazität einer Kante für Fluss-Algorithmen als tatsächliches Attribut eines Knotens oder einer Kante implementiert.
Ich frage mich, ob das tatsächlich sinnvoll ist, da es einerseits den Knoten oder die Kante recht "spezifisch" machen würde, da somit jede Kante eine Kapazität hätte, um bei dem Beispiel zu bleiben, auch für Algorithmen, die gar keinen Fluss berechnen.
Theoretisch könnte ich noch argumentieren, dass ich da dann super Vererbung etc. benutzen könnte.
Allerdings hat mir dieses Design schon einmal richtig das Genick gebrochen und zwar bei einem bestimmten Algorithmus, bei dem Kanten temporär aus dem Graphen gelöscht werden mussten. Da dies temporär war, musste ich den Graph "klonen", damit die Informationen nicht verloren gingen. Und da Java nur mit Pointern arbeitet, musste ich somit auch jede Kante und jeden Knoten und damit auch jedes einzelne Attribut klonen.
Nun habe ich mich gefragt, ob es nicht teilweise sinnvoller wäre, dass man diese Informationen zusätzlich in einer entsprechenden Datenstruktur (Array, Liste, etc.) mit an den bestimmten Algorithmus übergibt. So müssten diese Informationen nicht mehr in den Knoten und Kanten gespeichert werden.
Was haltet ihr denn davon?
Grüße, Naryxus