Graph的Java代码及其需求

时间:2013-07-15 12:46:16

标签: java graph

我需要写一个图表,其中一些节点为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写这个呢?有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:1)

提取名词,您将看到需要Vertices / Node类,Edge类和Demand类。这只是解决方案的开始。您还将拥有一个图表或网络类,其中包含节点列表,边缘列表和需求列表。然后,您需要决定在何处放置使用节点,边和需求的处理方法。

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

这是一个例子

public class Node {
   private int nodeNumber;
}

答案 1 :(得分:0)

如果您不想重新发明轮子,可以查看JGraphT。有一些examples可以为您提供有关如何使用它的一些想法。

答案 2 :(得分: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;
   }
}

等...

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

Good Java graph algorithm library?