Class DirectedGraph

java.lang.Object
org.drip.graph.core.Network
org.drip.graph.core.DirectedGraph
Direct Known Subclasses:
CompleteBipartite, CompleteRandomGraph, NDimensionalHypercube

public class DirectedGraph
extends Network
DirectedGraph implements the Vertex/Edge Topology corresponding to a Directed Graph. The References are:

  • Bollobas, B. (1998): Modern Graph Theory Springer
  • Eppstein, D. (1999): Spanning Trees and Spanners https://www.ics.uci.edu/~eppstein/pubs/Epp-TR-96-16.pdf
  • Gross, J. L., and J. Yellen (2005): Graph Theory and its Applications Springer
  • Kocay, W., and D. L. Kreher (2004): Graphs, Algorithms, and Optimizations CRC Press
  • Wikipedia (2020): Spanning Tree https://en.wikipedia.org/wiki/Spanning_tree




Author:
Lakshmi Krishnamurthy
  • Constructor Details

    • DirectedGraph

      public DirectedGraph()
      DirectedGraph Constructor
  • Method Details

    • addGraph

      public boolean addGraph​(DirectedGraph graph)
      Add the Specified Graph to the Current
      Parameters:
      graph - The Specified Graph
      Returns:
      TRUE - The Specified Graph successfully Added
    • clone

      public DirectedGraph clone()
      Clone the existing Graph into a New One
      Returns:
      The Cloned Graph
    • isConnected

      public boolean isConnected()
      Indicate if the Graph is Connected
      Returns:
      TRUE - The Graph is Connected
    • isTreeSpanning

      public boolean isTreeSpanning​(Tree tree)
      Indicate of the Specified Tree spans the Graph
      Parameters:
      tree - The Tree
      Returns:
      TRUE - The Tree spans the Graph
    • fundamentalCycleEdgeSet

      public java.util.Set<Edge> fundamentalCycleEdgeSet​(Tree tree)
      Retrieve the Set of the Fundamental Cycles using the Spanning Tree
      Parameters:
      tree - Spanning Tree
      Returns:
      Set of the Fundamental Cycles using the Spanning Tree
    • leafVertexNameList

      public java.util.List<java.lang.String> leafVertexNameList()
      Retrieve the List of the Leaf Vertex Names
      Returns:
      List of the Leaf Vertex Names
    • containsCycle

      public boolean containsCycle()
      Indicate if the Graph contains a Cycle
      Returns:
      TRUE - The Graph contains a Cycle
    • isCyclical

      public boolean isCyclical()
      Indicate if the Graph is Cyclical
      Returns:
      TRUE - The Graph is Cyclical
    • isTree

      public boolean isTree()
      Indicate if the Graph is a Tree
      Returns:
      TRUE - The Graph is a Tree
    • isComplete

      public boolean isComplete()
      Indicate if the Graph is Complete
      Returns:
      TRUE - The Graph is Complete
    • isDense

      public boolean isDense()
      Indicate if the Graph is Dense
      Returns:
      TRUE - The Graph is Dense
    • vertexDegreeMap

      public java.util.Map<java.lang.String,​java.lang.Integer> vertexDegreeMap()
      Retrieve the Map of the Vertex Adjacency Degree
      Returns:
      Map of the Vertex Adjacency Degree
    • areVertexesAdjacent

      public boolean areVertexesAdjacent​(java.lang.String vertexName1, java.lang.String vertexName2)
      Indicate if the specified Vertexes are Adjacent
      Parameters:
      vertexName1 - Vertex #1
      vertexName2 - Vertex #2
      Returns:
      TRUE - The Vertexes are Adjacent
    • type

      public int type()
      Retrieve the Graph Type
      Returns:
      The Graph Type
    • kirchoffSpanningTreeCount

      public double kirchoffSpanningTreeCount()
      Retrieve the Count of the Spanning Trees Using Kirchoff's Matrix-Tree Theorem
      Returns:
      Count of the Spanning Trees Using Kirchoff's Matrix-Tree Theorem
    • spanningTreeCount

      public double spanningTreeCount()
      Retrieve the Count of the Spanning Trees
      Returns:
      Count of the Spanning Trees
    • Transpose

      public DirectedGraph Transpose()
      Transpose the Edges of the Current Graph to create a new One
      Returns:
      The Transposed Graph