我需要写一个图,一些节点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写这段代码呢?有谁能帮帮我吗?
发布于 2013-07-15 20:50:38
提取名词,你会发现你需要一个顶点/节点类,一个边缘类和一个需求类。这只是你解决方案的开始。您还将拥有一个由节点列表、边列表和需求列表组成的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-15 20:52:50
如果你不想重新发明weel,你可以研究一下JGraphT。有一些可用的examples可以让你了解如何使用它。
发布于 2013-07-15 20:57:40
作为起点,我可以建议您使用以下类结构:
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;
}
}
等等。
如果您考虑不实现自己的图形并使用某个库中的图形,请看一下这个问题:
https://stackoverflow.com/questions/17654609
复制相似问题