Java 图的传递闭包
我必须找到给定图的传递闭包。所以craetes传递闭包的方法应该是这样的:G=ABCD->G+=AB AC AD BC BD CD,G是一个给定的图,G+是一个传递闭包。到目前为止,我的方法从ABCD输出AB AC AD,但如何输出其余的BC BD CD?我创造了: 图形类:Java 图的传递闭包,java,graph,Java,Graph,我必须找到给定图的传递闭包。所以craetes传递闭包的方法应该是这样的:G=ABCD->G+=AB AC AD BC BD CD,G是一个给定的图,G+是一个传递闭包。到目前为止,我的方法从ABCD输出AB AC AD,但如何输出其余的BC BD CD?我创造了: 图形类: class Graph { String id; Vertex first; Graph (String s, Vertex v) { id = s; first = v; }
class Graph {
String id;
Vertex first;
Graph (String s, Vertex v) {
id = s;
first = v;
}
Graph (String s) {
this (s, null);
}
public LinkedList<Edge> transitiveClosure(LinkedList<Vertex> v)
{
Graph g = new Graph("G+");
LinkedList<Edge> edge = new LinkedList<Edge>();
Edge e = null;
Iterator i = v.iterator();
for(Vertex vertex : v)
{
System.out.print(vertex);
while(i.hasNext()) {
g.first = v.getFirst();
Vertex tmp = v.getFirst();
tmp =(Vertex) i.next();
if(tmp == g.first)
tmp = (Vertex)i.next();
e = new Edge(g.first.toString() + tmp);
edge.add(e);
//v.remove(g.first);
}
}
System.out.println();
return edge;
}
}
边缘类
class Edge {
String id;
Vertex target;
Edge next;
Edge (String s, Vertex v, Edge e) {
id = s;
target = v;
next = e;
}
Edge (String s) {
this (s, null, null);
}
@Override
public String toString() {
return id;
}
// TODO!!! Your Edge methods here!
}您对图形的表示似乎缺乏—图形没有第一个顶点。它可能有许多可能未连接的顶点。你没有分享你对顶点和边的定义。要么你有一个糟糕的命名约定,要么你似乎不知道a是什么。或者两者兼而有之。或者我只是不明白你对图形的定义。对不起,你必须回到这幅图的画板上。您需要了解,图中没有起始顶点,只有在通过图的特定路径中。因此,这种说法是错误的。尝试快速帮助,包括一些图形的Java表示。
class Edge {
String id;
Vertex target;
Edge next;
Edge (String s, Vertex v, Edge e) {
id = s;
target = v;
next = e;
}
Edge (String s) {
this (s, null, null);
}
@Override
public String toString() {
return id;
}
// TODO!!! Your Edge methods here!