2016-04-12 1 views
1

Привет, я работаю над алгоритмом Dijkstras. Я хотел бы подсчитать amout конкретных ребер, которые были выбраны для того, чтобы изменить стоимость следующего края и т. Д. У меня есть проблема с добавлением того, сколько раз выбран конкретный край. Я связываю части своего кода.Считать конкретные ребра для алгоритма Дейкстры

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

В этой части специфический край "DIRC" добавляется. Я хотел бы добавить один «dicCcount», а затем вернуть значение счетчика обратно, чтобы использовать его в инструкции if после выполнения этой части. Класс Edge выглядит следующим образом.

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; 
 
    } 
 
}

Я попытался решить эту проблему в течение нескольких часов, но я не могу понять, как это сделать. Это не домашняя работа, которую я сделал для дистанционного управления автомобилем :).

Любые предложения, как это сделать?

ответ

0

Если я правильно понимаю вашу проблему, вы могли бы рассмотреть одно из следующих действий:

  1. словарной структуры данных (определяется за пределами типа данных EDGE), чтобы отслеживать выбранных ребер, со счетчиками (как значения), который будет увеличиваться каждый раз при выборе края; это будет обновляться по мере прохождения по вашему графику (он должен быть удален в конце алгоритма трассировки)
  2. расширение для вашего типа данных Edge, которое реализует поведение «выбрано» и внутренне отслеживает, сколько раз, когда он был посещен во время трассировочного пробега (с возможностью сброса внутреннего счетчика)
Смежные вопросы