A weighted graph is a type of graph where each edge is assigned a numerical value, called a weight. In data structure algorithms, weighted graphs are commonly used to represent real-world scenarios where the edges between vertices have different costs or distances associated with them. Understanding weighted graphs is essential for solving various optimization problems, such as finding the shortest path between two vertices or determining the minimum spanning tree of a graph.

## What is a Graph?

Before diving into weighted graphs, let’s briefly review what a graph is. In computer science and mathematics, a graph is an abstract data type that consists of a set of vertices (also known as nodes) and a set of edges that connect these vertices. Graphs are widely used to model relationships between objects.

### Types of Graphs

There are two main types of graphs:

**Undirected Graph:**In an undirected graph, the edges have no direction. They simply connect two vertices without any specified order.**Directed Graph (Digraph):**In a directed graph, each edge has a direction associated with it. The edge connects one vertex (the source) to another vertex (the destination).

### Understanding Weighted Graphs

A weighted graph is an extension of the basic graph structure where each edge has an additional value associated with it, known as its weight. This weight represents some numerical value or cost related to the connection between the two vertices connected by that particular edge.

In visual representations of weighted graphs, weights are often displayed next to or on top of the corresponding edges to provide a clear understanding of their values.

## Applications of Weighted Graphs

The concept of weighted graphs finds applications in various real-world scenarios:

**Transportation Networks:**Weighted graphs can be used to model transportation networks, where edges represent roads or routes, and weights represent the distance or travel time between two locations.**Social Networks:**Weighted graphs can represent social networks, where vertices represent individuals, and weights on edges can denote the strength or intensity of relationships between individuals.**Network Routing:**Weighted graphs are used in network routing algorithms to determine the most efficient path for data transmission. The weights on the edges might represent factors like latency, bandwidth, or cost.

## Algorithms for Weighted Graphs

Weighted graphs introduce additional complexity compared to unweighted graphs. Several algorithms are specifically designed to work with weighted graphs:

**Dijkstra’s Algorithm:**This algorithm finds the shortest path between two vertices in a weighted graph by considering the weights of the edges. It is commonly used in navigation systems and network routing protocols.**Bellman-Ford Algorithm:**The Bellman-Ford algorithm also finds the shortest path between two vertices but can handle negative edge weights as well.It is useful in scenarios where negative costs exist.

**Kruskal’s Algorithm:**Kruskal’s algorithm finds the minimum spanning tree of a weighted graph. A minimum spanning tree is a subset of edges that connects all vertices with the minimum total weight possible.

In conclusion, a weighted graph is a powerful data structure that allows us to solve optimization problems by assigning numerical values to edges. Understanding how to work with weighted graphs and applying appropriate algorithms opens up possibilities for solving a wide range of real-world problems.