2016-04-12 11 views
1

Hallo im Moment arbeite ich an einem Dijkstras-Algorithmus. Ich möchte die Anzahl bestimmter Kanten zählen, die ausgewählt werden, um die Kosten für die nächste Kante usw. zu ändern. Ich habe ein Problem damit, hinzuzufügen, wie oft eine bestimmte Kante ausgewählt wurde. Ich verbinde Teile meines Codes.Zählen Sie spezifische Kanten für Dijkstra-Algorithmus

Edge dirC = new Edge("d" + nodes.get(i * ds.columns + j), nodes.get(i * ds.columns + j), nodes.get((i + 1) * ds.columns + j), downcost1); 
 
edges.add(dirC);

wird eine spezifische Flanke "DIRC" in diesem Teil hinzugefügt. Ich möchte einen "dicCcount" hinzufügen und dann den Wert des Zählers zurückholen, um ihn in einer if-Anweisung zu verwenden, nachdem dieser Teil ausgeführt wurde. Die Edge-Klasse sieht so aus.

package autonavigate; 
 

 
public class Edge { 
 
    private final String id; 
 
    private final Vertex source; 
 
    private final Vertex destination; 
 
    private final double weight; 
 
    
 
    public Edge(String id, Vertex source, Vertex destination, double weight) { 
 
    this.id = id; 
 
    this.source = source; 
 
    this.destination = destination; 
 
    this.weight = weight; 
 
    } 
 
    
 
    public String getId() { 
 
    return id; 
 
    } 
 
    
 
    public Vertex getDestination() { 
 
    return destination; 
 
    } 
 

 
    public Vertex getSource() { 
 
    return source; 
 
    } 
 
    public double getWeight() { 
 
    return weight; 
 
    } 
 
    
 
    @Override 
 
    public String toString() { 
 
    return source + " " + destination; 
 
    } 
 
}

Ich habe versucht, dies für Stunden zu lösen, aber ich kann nicht herausfinden, wie es zu tun. Es ist keine Hausaufgabe, es ist ein Programm, das ich für ein ferngesteuertes Auto gemacht habe :).

Irgendwelche Vorschläge, wie es geht?

Antwort

0

Wenn ich das richtig das Problem zu verstehen, können Sie eine der folgenden Möglichkeiten berücksichtigen:

  1. einem Wörterbuch Datenstruktur (definiert außerhalb des Edge-Datentyp), um zu verfolgen ausgewählten Kanten, mit Zählern (als Werte), die bei jeder Auswahl der Kante erhöht werden würde; Dies würde aktualisiert werden, während Sie durch Ihr Diagramm verfolgen (es sollte am Ende des Ablaufverfolgungsalgorithmus entsorgt werden)
  2. eine Erweiterung zu Ihrem Edge-Datentyp, der das Verhalten von "selected" implementiert und intern wie viele verwaltet Mal, dass es während eines Suchlaufs (mit der Option zum Zurücksetzen seines internen Zählers) besucht wurde