Branch-and-Bound Distanzmatrix C

  • Hi [Blockierte Grafik: http://www.informatik-forum.at/pics/nb/smilies/smile.gif]

    In AlgoDat 2 wird gleich am Anfang eine "Distanzmatrix" erwähnt. Ich suche aktuell den besten Weg, wie man so eine Distanzmatrix anlegen kann.

    Warum ich das Thema nicht in AlgoDat 2 aufgemacht habe? Hatte ich. Aber dort bekam ich kein Feedback [Blockierte Grafik: http://www.informatik-forum.at/pics/nb/smilies/shinner.gif]. Aber es gibt noch einen anderen Grund: es geht nämlich darum, wie man so etwas ganz grundsätzlich programmiert. Also darum, ob und wie man Informationen zurückgibt oder als Parameter übergibt. Ich hab damit leider ganz grundsätzlich noch Probleme. Ich weiß immer noch nicht, wo ich eine Zahl oder ein Objekt übergeben soll, wo ich etwas zurückgeben soll, oder nicht. Solange mir das Gespühr dafür fehlt, in welchem Stil man das programmiert, mache ich es vielleicht immer falsch.

    Ich hätte jetzt zu diesem konkreten Beispiel 3 unterschiedliche Varianten anzubieten. Hier mal die erste Variante.

    Ich hätte die Klassen BranchAndBoundNode und BranchAndBound. Also keine edge-Klasse.

    Für BranchAndBound:

    insert(key0, value0) // fügt einen Knoten hinzu
    insert(key1, value1)
    edgeDistances(key0, key1, distance01, distance10) // definiert die Distanzen zwischen 2 Knoten

    0 entspricht "von" (erster Knoten), 1 entspricht "nach" (zweiter Knoten).

    Bei jedem insert wird eine BranchAndBoundNode-Instanz angelegt.

    So schaut das bei mir aktuell in PHP aus:

    8 Mal editiert, zuletzt von Früchtemüsli (15. Dezember 2013 um 10:43)

  • Eine andere Möglichkeit wäre vielleicht, dass insert irgend etwas eindeutiges zurückgibt, das man dann edgeDistance als Parameter übergibt:

    id0 = insert(value0)
    id1 = insert(value1)
    edgeDistance(id0, id1, distance01, distance10)

    Diese ids könnten vielleicht Node-Objekte sein. Wie wäre diese Variante?

    Vielleicht auch möglich, außen Node-Objekte zu erzeugen, und die dann insert und edgeDistance übergeben:

    node0 = new Node(value0)
    node1 = new Node(value1)
    insert(node0)
    insert(node1)
    edgeDistance(node0, node1, distance01, distance10)

    4 Mal editiert, zuletzt von Früchtemüsli (15. Dezember 2013 um 10:40)

  • Also ich glaube, die Variante http://www.ccs.neu.edu/home/ada2358/D…phs/IGraph.html gefällt mir am besten.

    Sofern ich das richtig verstanden habe, erzeugt ich die Knoten außerhalb und übergebe sie addVertex bzw. danach addEdge.

    Das gefällt mir, weil mir das recht flexibel und schön erscheint. Dann sollte es auch möglich sein, eine eigene Vertexklasse zu programmieren, die von Vertex erbt. Die Vertexklassen können also bei jeder Anwendung ganz anders aussehen.

    Wie schaut das aus? OK so?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!