In data structure, a graph is a non-linear data structure that consists of a set of vertices (or nodes) and a set of edges connecting these vertices. It is used to represent relationships between different objects or entities. Graphs are widely used in various areas such as computer networking, social networks, routing algorithms, and more.

## Types of Graphs

### 1. Directed Graph (Digraph)

A directed graph is a graph in which the edges have a specific direction.

Each edge connects two vertices and has an arrow indicating the direction of the edge. The arrow points from the source vertex to the destination vertex.

**Example:** A directed graph can be used to represent the relationships between web pages on the internet. Each web page can have outgoing links pointing to other web pages.

### 2. Undirected Graph

An undirected graph is a graph in which the edges do not have any specific direction. The edges connect two vertices without any arrow indicating the direction.

**Example:** An undirected graph can be used to represent friendships in a social network. Each person can be represented as a vertex, and friendship relationships can be represented as edges connecting two vertices.

### 3. Weighted Graph

A weighted graph is a graph in which each edge has an associated weight or cost. The weight represents some numerical value associated with that edge, such as distance, cost, or time.

**Example:** A weighted graph can be used to represent distances between cities on a map. Each city can be represented as a vertex, and the distance between cities can be represented as weighted edges.

### 4. Unweighted Graph

An unweighted graph is a graph in which all the edges have the same weight or do not have any associated weight. The edges are considered to have equal importance.

**Example:** An unweighted graph can be used to represent connections between web pages on a website. Each web page can be represented as a vertex, and the links between web pages can be represented as unweighted edges.

### 5. Cyclic Graph

A cyclic graph is a graph that contains at least one cycle, which is a path that starts and ends at the same vertex.

**Example:** A cyclic graph can be used to represent dependencies between tasks in a project. Each task can be represented as a vertex, and the dependencies between tasks can be represented as edges.

### 6. Acyclic Graph (DAG – Directed Acyclic Graph)

An acyclic graph is a directed graph that does not contain any cycles. It means there are no paths that start and end at the same vertex.

**Example:** An acyclic graph can be used to represent the precedence constraints in scheduling tasks. Each task can be represented as a vertex, and the precedence constraints can be represented as directed edges.

## In Conclusion

A graph is an essential data structure used to represent relationships between different entities. Understanding the different types of graphs and their applications is crucial for solving real-world problems efficiently. Whether it’s representing connections in a social network or optimizing routing algorithms, graphs play a vital role in various domains of computer science.