gpt4 book ai didi

java - 使用 Jgraph 创建图形

转载 作者:行者123 更新时间:2023-11-30 09:43:48 24 4
gpt4 key购买 nike

我想使用 Jgraph 创建一个图,然后使用该图来查找最小生成树。

如何使用 Jgraph 创建图表?


这是我实现的。你能告诉我如何使用包中的 kruskals 算法吗?我用谷歌搜索了它,但找不到任何相关信息。

import org.jgrapht.*;
import org.jgrapht.graph.*;

public class MyGraph {
UndirectedGraph<String, DefaultEdge> g = new SimpleGraph<String, DefaultEdge> (DefaultEdge.class);

public void addVertex(String name) {
// name=new String();
g.addVertex(name);
}

public void addEdge(String v1,String v2) {
g.addEdge(v1, v2);
}

public UndirectedGraph<String, DefaultEdge> getGraph() {
return g;
}
}

最佳答案

这是主类,用户输入(例如没有边和顶点)用于创建图到所创建图的生成树。下面是这个问题的完整答案。

import java.util.Scanner;

public class Main {

public static void main(String args[]) {

int x;
Scanner sc=new Scanner(System.in);
MyGraph my=new MyGraph();
System.out.println("Enter the no of vertices");
int no_of_ver=sc.nextInt();

for(int i=1;i<=no_of_ver;i++) {
System.out.println("Enter vertex"+i);
my.addVertex(sc.next());
}

do {
System.out.println("Enter the edges");
String e1=sc.next();
String e2=sc.next();
my.addEdge(e1, e2);
// my.setEdgeWeight();
System.out.println("Continue... Yes:1 ********** No:0");
x=sc.nextInt();
} while(x==1);

System.out.println("Graph\n"+my.getGraph().toString());
System.out.println("\n\n**********Spanning Tree*********");
my.getSpanningTree();
// System.out.println("\nSpanning Tree Cost");
//my.getSpanningTreeCost();
}
}

在 MyGraph 类下面,通过获取边和计算生成树来完成创建图形的所有工作。我使用 jgrapht 库来创建图形

import org.jgrapht.*;
import org.jgrapht.graph.*;
import org.jgrapht.alg.KruskalMinimumSpanningTree;

public class MyGraph {

private UndirectedGraph<String, DefaultEdge> g = new SimpleGraph<String, DefaultEdge>(DefaultEdge.class);
static final double DEFAULT_EDGE_WEIGHT=19;
DefaultWeightedEdge>(DefaultWeightedEdge.class);
private DefaultWeightedEdge e1;

public void addVertex(String name) {
g.addVertex(name);
//graph.addVertex(name);
}

public void addEdge(String v1,String v2) {
g.addEdge(v1, v2);
// e1=graph.addEdge(v1, v2);
}

/*public void setEdgeWeight() {
graph.setEdgeWeight(e1, DEFAULT_EDGE_WEIGHT);
}*/

public UndirectedGraph<String, DefaultEdge> getGraph() {
return g;
}

/*public SimpleWeightedGraph<String,DefaultWeightedEdge> getGraph() {
return graph;
}*/

public void getSpanningTree() {
KruskalMinimumSpanningTree k=new KruskalMinimumSpanningTree(g);
System.out.println(k.getEdgeSet().toString());
//KruskalMinimumSpanningTree k1=new KruskalMinimumSpanningTree(graph);
//System.out.println(k1.getEdgeSet().toString());
}

/*public void getSpanningTreeCost() {
KruskalMinimumSpanningTree k=new KruskalMinimumSpanningTree(graph);
System.out.println(k.getSpanningTreeCost());
}*/
}

关于java - 使用 Jgraph 创建图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8200007/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com