.. | ||
A_Star.java | ||
BellmanFord.java | ||
BipartiteGrapfDFS.java | ||
ConnectedComponent.java | ||
Cycles.java | ||
DIJSKSTRAS_ALGORITHM.java | ||
FloydWarshall.java | ||
Graphs.java | ||
KahnsAlgorithm.java | ||
Kruskal.java | ||
MatrixGraphs.java | ||
PrimMST.java | ||
README.md |
Graph
Graph is a useful data structure for representing most of the real world problems involving a set of users/candidates/nodes and their relations. A Graph consists of two parameters :
V = a set of vertices
E = a set of edges
Each edge in E
connects any two vertices from V
. Based on the type of edge, graphs can be of two types:
-
Directed: The edges are directed in nature which means that when there is an edge from node
A
toB
, it does not imply that there is an edge fromB
toA
. An example of directed edge graph the follow feature of social media. If you follow a celebrity, it doesn't imply that s/he follows you. -
Undirected: The edges don't have any direction. So if
A
andB
are connected, we can assume that there is edge from bothA
toB
andB
toA
. Example: Social media graph, where if two persons are friend, it implies that both are friend with each other.
Representation
- Adjacency Lists: Each node is represented as an entry and all the edges are represented as a list emerging from the corresponding node. So if vertex
1
has eadges to 2,3, and 6, the list corresponding to 1 will have 2,3 and 6 as entries. Consider the following graph.
0: 1-->2-->3
1: 0-->2
2: 0-->1
3: 0-->4
4: 3
It means there are edges from 0 to 1, 2 and 3; from 1 to 0 and 2 and so on.
2. Adjacency Matrix: The graph is represented as a matrix of size |V| x |V|
and an entry 1 in cell (i,j)
implies that there is an edge from i to j. 0 represents no edge.
The mtrix for the above graph:
0 1 2 3 4
0 0 1 1 1 0
1 1 0 1 0 0
2 1 1 0 0 0
3 1 0 0 0 1
4 0 0 0 1 0