0% found this document useful (0 votes)
10 views4 pages

n

The document contains two C programs implementing graph algorithms. The first program uses Dijkstra's algorithm to find the shortest path from a source vertex in a weighted graph, while the second program implements a distance vector routing algorithm for a network of nodes. Both programs include functions for initializing data structures, updating distances, and printing results.

Uploaded by

btechlife6
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views4 pages

n

The document contains two C programs implementing graph algorithms. The first program uses Dijkstra's algorithm to find the shortest path from a source vertex in a weighted graph, while the second program implements a distance vector routing algorithm for a network of nodes. Both programs include functions for initializing data structures, updating distances, and printing results.

Uploaded by

btechlife6
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

#include <stdio.

h>
#include <limits.h>

#define V 9

int minDistance(int dist[], int sptSet[]) {


int min = INT_MAX, min_index;

for (int v = 0; v < V; v++)


if (sptSet[v] == 0 && dist[v] <= min)
min = dist[v], min_index = v;

return min_index;
}

void printSolution(int dist[]) {


printf("Vertex \t\t Distance from Source\n");
for (int i = 0; i < V; i++)
printf("%d \t\t %d\n", i, dist[i]);
}

void dijkstra(int graph[V][V], int src) {


int dist[V];
int sptSet[V];

for (int i = 0; i < V; i++)


dist[i] = INT_MAX, sptSet[i] = 0;

dist[src] = 0;

for (int count = 0; count < V - 1; count++) {


int u = minDistance(dist, sptSet);
sptSet[u] = 1;

for (int v = 0; v < V; v++)


if (!sptSet[v] && graph[u][v] && dist[u] != INT_MAX && dist[u] +
graph[u][v] < dist[v])
dist[v] = dist[u] + graph[u][v];
}

printSolution(dist);
}

int main() {
int graph[V][V] = {{0, 4, 0, 0, 0, 0, 0, 8, 0},
{4, 0, 8, 0, 0, 0, 0, 11, 0},
{0, 8, 0, 7, 0, 4, 0, 0, 2},
{0, 0, 7, 0, 9, 14, 0, 0, 0},
{0, 0, 0, 9, 0, 10, 0, 0, 0},
{0, 0, 4, 14, 10, 0, 2, 0, 0},
{0, 0, 0, 0, 0, 2, 0, 1, 6},
{8, 11, 0, 0, 0, 0, 1, 0, 7},
{0, 0, 2, 0, 0, 0, 6, 7, 0}};

dijkstra(graph, 0);

return 0;
}
output:

Vertex Distance from Source


0 0
1 4
2 12
3 19
4 21
5 11
6 9
7 8
8 14

#include <stdio.h>
#include <limits.h>

#define MAX_NODES 10
#define INFINITY INT_MAX

typedef struct {
int id;
int distance[MAX_NODES];
int nextHop[MAX_NODES];
} Node;

Node nodes[MAX_NODES];
int costMatrix[MAX_NODES][MAX_NODES];
int numNodes;

void initializeNodes() {
for (int i = 0; i < numNodes; i++) {
for (int j = 0; j < numNodes; j++) {
if (i == j) {
nodes[i].distance[j] = 0;
nodes[i].nextHop[j] = i;
} else if (costMatrix[i][j] != 0) {
nodes[i].distance[j] = costMatrix[i][j];
nodes[i].nextHop[j] = j;
} else {
nodes[i].distance[j] = INFINITY;
nodes[i].nextHop[j] = -1;
}
}
}
}

void updateDistanceVector(int node) {


for (int i = 0; i < numNodes; i++) {
if (i != node) {
for (int j = 0; j < numNodes; j++) {
if (nodes[node].distance[j] > costMatrix[node][i] +
nodes[i].distance[j]) {
nodes[node].distance[j] = costMatrix[node][i] +
nodes[i].distance[j];
nodes[node].nextHop[j] = i;
}
}
}
}
}

void printRoutingTable() {
for (int i = 0; i < numNodes; i++) {
printf("Routing table of Node %d:\n", i);
printf("Destination\tNext Hop\tCost\n");
for (int j = 0; j < numNodes; j++) {
printf("%d\t\t%d\t\t%d\n", j, nodes[i].nextHop[j],
nodes[i].distance[j]);
}
printf("\n");
}
}

int main() {
printf("Enter the number of nodes: ");
scanf("%d", &numNodes);

printf("Enter the cost matrix:\n");


for (int i = 0; i < numNodes; i++) {
for (int j = 0; j < numNodes; j++) {
scanf("%d", &costMatrix[i][j]);
}
}

initializeNodes();

for (int i = 0; i < numNodes; i++) {


updateDistanceVector(i);
}

printRoutingTable();

return 0;
}

output:

Enter the number of nodes: 3


Enter the cost matrix:
2
3
1
5
7
4
2
4
8
Routing table of Node 0:
Destination Next Hop Cost
0 0 0
1 1 3
2 2 1

Routing table of Node 1:


Destination Next Hop Cost
0 0 5
1 1 0
2 2 4

Routing table of Node 2:


Destination Next Hop Cost
0 0 2
1 1 4
2 2 0

You might also like