In data structures, graphs are a fundamental concept used to represent relationships between different objects or entities. A graph consists of a set of vertices or nodes connected by edges.

These edges can be directed or undirected, depending on the nature of the relationship between the nodes. In this article, we will explore the different types of graphs commonly used in data structures and their characteristics.

## 1. Undirected Graph

An undirected graph is a type of graph where the edges have no direction.

This means that if there is an edge connecting node A to node B, it can be traversed in both directions. In other words, there is no distinction between the source and destination nodes.

### Properties of Undirected Graph:

**Connectivity:**Every pair of vertices has a path connecting them.**Edge Symmetry:**If there is an edge from node A to node B, then there is also an edge from node B to node A.**Degree:**The degree of a vertex in an undirected graph represents the number of edges connected to it.

## 2. Directed Graph (Digraph)

A directed graph, also known as a digraph, is a type of graph where each edge has a direction associated with it. This means that if there is an edge connecting node A to node B, it can only be traversed from A to B and not in reverse.

### Properties of Directed Graph:

**Connectivity:**There may not always be a path connecting every pair of vertices.**Edge Directionality:**The direction of the edges determines the source and destination nodes.**Outdegree and Indegree:**The outdegree of a vertex represents the number of outgoing edges from it, while the indegree represents the number of incoming edges.

## 3. Weighted Graph

A weighted graph is a type of graph where each edge has an associated weight or cost. These weights can represent various factors, such as distance, time, or any other numeric value relevant to the relationship between nodes.

### Properties of Weighted Graph:

**Edge Weights:**Each edge in a weighted graph has a specific weight assigned to it.**Shortest Path:**Weighted graphs are commonly used to find the shortest path between two nodes based on their associated weights.**Minimum Spanning Tree (MST):**Weighted graphs can be used to find a subtree that connects all vertices with the minimum total weight.

## 4. Bipartite Graph

A bipartite graph is a type of graph whose vertices can be divided into two disjoint sets such that no two vertices within the same set are connected by an edge. In other words, there are no edges connecting vertices within the same set.

### Properties of Bipartite Graph:

**Bipartition:**The division of vertices into two disjoint sets is known as bipartition.**No Cycles of Odd Length:**Bipartite graphs do not contain any cycles with an odd number of nodes.**Bipartite Matching:**Bipartite graphs are commonly used in matching problems to find pairs of nodes that are connected by an edge.

Understanding the different types of graphs in data structures is essential for solving various problems efficiently. Each type has its own characteristics and applications, and choosing the right graph representation can significantly impact the performance of algorithms and operations performed on them.

So, next time you encounter a problem involving relationships or connections between entities, consider which type of graph would be most suitable to represent the situation accurately.