计算Dijkstra算法的特定边

时间:2016-04-12 19:50:25

标签: algorithm dijkstra

你好我目前正在研究Dijkstras算法。我想计算选择的特定边缘的大小以便改变下一个边缘的成本等。我有一个问题,即添加特定边缘被选择的次数。我链接了部分代码。

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

我试图解决这个问题几个小时,但我无法弄清楚如何做到这一点。它不是一个家庭作业,它是我为遥控车做的一个程序:)。

有任何建议吗?

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您可以考虑以下其中一项:

  1. 字典数据结构(在Edge数据类型之外定义)以跟踪所选边缘,其中计数器(作为值)每次选择边缘时都会递增;这将在您跟踪图表时更新(它应该在跟踪算法的末尾处理)
  2. Edge数据类型的扩展,用于实现" selected"并在内部跟踪跟踪运行期间访问过的次数(可选择重置其内部计数器)