Создать график с помощью Jgraph - PullRequest
2 голосов
/ 20 ноября 2011

Я хочу создать график с использованием 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;
    }
}

1 Ответ

2 голосов
/ 29 апреля 2012

Это основной класс, где пользовательский ввод, такой как отсутствие ребер и вершин, используется для создания графа в связующем дереве созданного графа. Ниже приведен полный ответ на этот вопрос.

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());
    }*/ 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...