# Grpahs Introduction

## Graphs

A graph is a non-linear data structure consisting of a collection of nodes (vertices) and edges that connect pairs of nodes. It is used to represent relationships or connections between different entities. Graphs are widely used in various fields, including computer science, mathematics, social networks, transportation networks, and more.

Graphs can be categorized into two main types: directed graphs (digraphs) and undirected graphs.

Directed Graph (Digraph):

In a directed graph, each edge has a specific direction, indicating the flow or relationship between nodes. The edges are represented by arrows, showing the direction from one node to another.

In a directed graph, the order of the nodes in an edge matters. If there is an edge from node A to node B, it does not necessarily mean there is an edge from B to A.

Examples: Flowcharts, network diagrams, social media follower networks.

Undirected Graph:

In an undirected graph, the edges do not have a specific direction. They represent a symmetric relationship between nodes.

In an undirected graph, the order of the nodes in an edge does not matter. If there is an edge between node A and node B, it implies that there is an edge between B and A as well.

Examples: Friendship networks, road networks, family trees.

Graphs can also have various properties and characteristics:

Nodes (Vertices): The entities or elements in the graph. They are typically represented by circles or points.

Edges: The connections between nodes. They are represented by lines or arcs.

Weighted Graph: A graph in which each edge is assigned a weight or cost. The weight can represent distances, costs, or any other value associated with the relationship between nodes.

Cyclic Graph: A graph that contains at least one cycle, where a cycle is a path that starts and ends at the same node.

Acyclic Graph: A graph that does not contain any cycles.

Connected Graph: A graph in which there is a path between every pair of nodes. There are no isolated nodes or disconnected components.

Disconnected Graph: A graph that consists of two or more connected components. There are one or more isolated nodes or disconnected subgraphs.

Graphs can be represented using different data structures such as adjacency matrix, adjacency list, or an edge list, each having its own advantages and trade-offs.

Graphs are fundamental in solving various problems such as shortest path algorithms (Dijkstra's algorithm), minimum spanning tree (Prim's algorithm, Kruskal's algorithm), network flow (Ford-Fulkerson algorithm), and graph traversals (depth-first search, breadth-first search).