Package net.wigis.graph.jgrapht.converter

Source Code of net.wigis.graph.jgrapht.converter.JGraphTConverter

package net.wigis.graph.jgrapht.converter;

import java.util.Collection;
import java.util.Set;

import net.wigis.graph.GraphsPathFilter;
import net.wigis.graph.dnv.DNVEdge;
import net.wigis.graph.dnv.DNVGraph;
import net.wigis.graph.dnv.DNVNode;
import net.wigis.graph.jgrapht.JGraphTEdge;
import net.wigis.settings.Settings;

import org.jgrapht.Graph;
import org.jgrapht.UndirectedGraph;
import org.jgrapht.alg.BiconnectivityInspector;
import org.jgrapht.alg.BronKerboschCliqueFinder;
import org.jgrapht.graph.SimpleGraph;

public class JGraphTConverter
{
  @SuppressWarnings("unchecked")
  public static UndirectedGraph<DNVNode, JGraphTEdge<DNVNode>> convertDNVToUndirectedJGraphT( DNVGraph graph, int level )
  {
    UndirectedGraph<DNVNode, JGraphTEdge<DNVNode>> g = new SimpleGraph<DNVNode, JGraphTEdge<DNVNode>>((Class<? extends JGraphTEdge<DNVNode>>)JGraphTEdge.class );
    for( DNVNode node : graph.getNodes( level ) )
    {
      g.addVertex( node );
    }

    for( DNVEdge edge : graph.getEdges( level ) )
    {
      g.addEdge( edge.getFrom(), edge.getTo() );
    }

    return g;
  }

  public static void main( String args[] )
  {
    GraphsPathFilter.init();
    DNVGraph graph = new DNVGraph( Settings.GRAPHS_PATH + "UserStudy/testGraphs/graph2large.dnv" );
    UndirectedGraph<DNVNode, JGraphTEdge<DNVNode>> g = convertDNVToUndirectedJGraphT( graph, 0 );
    BiconnectivityInspector<DNVNode, JGraphTEdge<DNVNode>> inspector = new BiconnectivityInspector<DNVNode, JGraphTEdge<DNVNode>>( g );
    System.out.println( inspector.isBiconnected() );
    Set<Set<DNVNode>> components = inspector.getBiconnectedVertexComponents();
    System.out.println( "graph contains " + components.size() + " biconnected components" );
    for( Set<DNVNode> component : components )
    {
      System.out.println( "component of size " + component.size() + " contains:" );
      for( DNVNode node : component )
      {
        System.out.println( "\t" + node.getLabel() );
      }
    }

    BronKerboschCliqueFinder<DNVNode, JGraphTEdge<DNVNode>> cliqueFinder = new BronKerboschCliqueFinder<DNVNode, JGraphTEdge<DNVNode>>( g );
    Collection<Set<DNVNode>> cliques = cliqueFinder.getAllMaximalCliques();
    printCliques( cliques );
    cliques = cliqueFinder.getBiggestMaximalCliques();
    printCliques( cliques );
  }

  public static void printCliques( Collection<Set<DNVNode>> cliques )
  {
    System.out.println( "graph contains " + cliques.size() + " cliques" );
    int counter = 0;
    for( Set<DNVNode> clique : cliques )
    {
      if( clique.size() >= 4 )
      {
        counter++;
        System.out.println( "clique of size " + clique.size() + " contains:" );
        for( DNVNode node : clique )
        {
          System.out.println( "\t" + node.getLabel() );
        }
      }
    }
    System.out.println( counter + " cliques of size >= 4" );
  }

  public static DNVGraph convertJGraphTToDNVGraph( Graph<DNVNode, JGraphTEdge<DNVNode>> g )
  {
    return null;
  }
}
TOP

Related Classes of net.wigis.graph.jgrapht.converter.JGraphTConverter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.