## Graph

A graph is a collection of nodes (vertices) and edges that connect pairs of nodes. Graphs are used to model relationships between objects or entities, such as social networks, transportation systems, and computer networks.

## Depth-First

Depth-first traversal is a method for exploring a graph by starting at a particular node and visiting all its neighbors before moving on to the next node. In a depth-first traversal, the algorithm explores as far as possible along each branch before backtracking. This is done by maintaining a stack of nodes to be visited.

## Computational Complexity

The computational complexity of depth-first traversal is O(|V| + |E|), where |V| is the number of vertices (nodes) and |E| is the number of edges in the graph. This is because the algorithm must visit each vertex and each edge once. In the worst case, every vertex and every edge is visited, leading to a time complexity of O(|V| + |E|).

## Topological Sort using Depth First Traversal

Topological sort is a way of ordering the nodes in a directed acyclic graph (DAG) such that for every directed edge from node u to node v, u comes before v in the ordering. Its sorting can be done using depth-first traversal. The basic idea is to visit all the nodes in the graph, and when a node has no unvisited neighbors, add it to the front of the ordering.

The steps for performing a topological sort using depth-first traversal are:

- Create an empty list to store the ordering.
- Perform a depth-first traversal of the graph.
- When a node has no unvisited neighbors, add it to the front of the ordering.
- Return the ordering.

The time complexity of topological sort using depth-first traversal is also O(|V| + |E|).

**Conclusion**

A graph is a collection of nodes and edges that connect pairs of nodes. Depth-first traversal is a method for exploring a graph by starting at a particular node and visiting all its neighbors before moving on to the next node. The computational complexity of depth-first traversal is O(|V| + |E|). Topological sort is a way of ordering the nodes in a directed acyclic graph such that for every directed edge from node u to node v, u comes before v in the ordering. Topological sorting can be done using depth-first traversal, and its time complexity is also O(|V| + |E|).

- Q-1.
- What do you understand by time and space complexity? What is asymptotic notation? Why it is important? Discuss using suitable example.
- Q-2.
- What is recurrence? Discuss in detail the master method for solving a recurrence.
- Q-3
- What is a Travelling Salesman problem? Discuss the greedy algorithm for solving the Travelling Salesman Problem.
- Q-4
- What do you understand by height balanced tree? What is a splay tree? Discuss the insertion/deletion operation on splay tree.
- Q-5
- What is Minimum Spanning Tree? Discuss the Steps for finding Minimum Spanning Tree using Kruskal’s Algorithm.
- Q-6
- What is a Graph? Discuss the depth first traversal of a graph and its computational complexity. Also discuss the topological sort using depth first traversal.
- Q-7
- What is a flow network? Explain Ford-Fulkerson Algorithm for Maximum Flow Problem.
- Q-8
- What is bitonic sequence? What is merging network? Explain.