0

我需要用一些节点 v={1,2,3,4,5,6,7} 和边 E={(1-2),(2-3), (3,4),( 4-7), (3-6), (2-6), (5-6), (1-5)} 还有一些要求 D=(s,d)={(1-3),( 2-3)、(4-5)。(7-7),(6-4),(2-7)},它们是一些路径,具有确切的源和小型网络的目的地。我怎么能用Java写这个?任何人都可以帮助我吗?

4

3 回答 3

1

提取名词你会发现你需要一个 Vertices/Node 类、一个 Edge 类和一个 Demand 类。这只是您解决方案的开始。您还将拥有一个 Graph 或 Network 类,其中包含一个节点列表、一个边列表和一个需求列表。然后你需要决定把使用节点、边和需求的处理方法放在哪里。

> A Node will consist of an integer. 
> An Edge will consist of two Nodes 
> and so on

这是一个例子

public class Node {
   private int nodeNumber;
}
于 2013-07-15T12:50:37.750 回答
0

作为起点,我可以建议您遵循以下类结构:

class Vertex{
    String id;
    List<Edge> edges;

    public Vertex(String id){
        this.id = id;
        edges = new ArrayList<Edge>();
    }

    void addEdge(Edge e){
        edges.add(e);
    }
}

class Edge{
   Vertex fromVertex;
   Vertex toVertex;

   Edge(Vertex from, Vertex to){
       this.fromVertex = from;
       this.toVertex = to;
   }
}

ETC...

如果您考虑不实现自己的图形并从某个库中使用它,请查看以下问题:

好的Java图算法库?

于 2013-07-15T12:57:39.937 回答
0

如果您不想重新发明轮毂,可以查看JGraphT。有一些示例可以让您了解如何使用它。

于 2013-07-15T12:52:50.377 回答