Professional Documents
Culture Documents
Assignment-9: 119CS0159 - Roshan Kumar Sahu
Assignment-9: 119CS0159 - Roshan Kumar Sahu
Q1
Code
int dist_mat[100][100];
map<int, int> working;
// Node definition
struct Node
{
if (i == j)
{
dist_mat[i][j] = 0;
continue;
}
dist_mat[i][j] = -1;
dist_mat[j][i] = -1;
continue;
}
dist_mat[i][j] = wt;
dist_mat[j][i] = wt;
}
}
Assignment-9 1
cout << "Working set nodes : ";
int x = 1;
for (int i = 1; i <= N / 2; i++)
{
working[x] = 1;
cout << x << " ";
x += 2;
}
if (i == 0)
{
if (working[j])
cout << "Node-" << j << " ";
}
cout << endl;
continue;
}
if (working[i])
{
if (!working[j])
continue;
int ct = 0;
for (int i = 1; i <= N; i++)
{
if (working[i])
{
for (int j = 1; j <= N; j++)
{
if (working[j])
{
Arr[i].dist[j] = dist_mat[i][j];
Arr[i].par_node[j] = j;
}
}
}
}
do
{
ct = 0;
for (int i = 1; i <= N; i++)
{
if (working[i])
{
for (int j = 1; j <= N; j++)
{
if (working[j])
{
for (int k = 1; k <= N; k++)
{
if (working[k])
{
if (Arr[i].dist[j] > dist_mat[i][k] + Arr[k].dist[j])
{
Arr[i].dist[j] = Arr[i].dist[k] + Arr[k].dist[j];
Arr[i].par_node[j] = k;
Assignment-9 2
ct++;
}
}
}
}
}
}
}
} while (ct != 0);
// main function
int main()
{
srand(time(0));
memset(dist_mat, 0, 100 * 100 * sizeof(int));
Node *Arr;
int size;
Arr = NodeInitialisation(size);
distanceMatrixCreation(size);
selectWorkingNodes(size);
distanceVectorRouting(Arr, dist_mat, size);
Output
Assignment-9 3
Q2
Code
#include <bits/stdc++.h>
using namespace std;
int dist_mat[100][100];
int trans_rate = pow(10, 6); // transmission rate in m/sec
// utility function
int minDist(Node Arr[], bool set[], int N)
{
Assignment-9 4
if (set[i] == false && Arr[i].dist <= mn)
mn = Arr[i].dist, min_idx = i;
}
return min_idx;
}
bool set[N];
for (int i = 0; i < N; i++)
{
Arr[i].dist = INT_MAX;
Arr[i].par_node = -1;
set[i] = false;
}
Arr[src].dist = 0;
if (!set[v] && dist_mat[u][v] && Arr[u].dist != INT_MAX && (Arr[u].dist + dist_mat[u][v] < Arr[v].dist))
{
vector<int> path;
int i = dest;
while (i != -1)
{
path.push_back(i);
i = Arr[i].par_node;
Assignment-9 5
}
reverse(path.begin(), path.end());
cout << "Path followed : ";
for (i = 0; i < path.size() - 1; i++)
{
cout << path[i] << " --> ";
}
cout << path[i] << "\nDistance : " << Arr[dest].dist << " kms, Time to transmit : " << (double)(Arr[dest].dist * 1000) / trans_rate
}
// main function
int main()
{
srand(time(NULL));
memset(dist_mat, 0, 100 * 100 * sizeof(int));
Node *Arr;
int size;
Arr = nodeInitialisation(size);
cout << "\nFollowing shortest path routing algorithm,\nCreating nodes...\n";
createDistanceMatrix(Arr, size);
cout << "Computing distance matrix...\n";
Routing(Arr, dist_mat, size, 0);
cout << "Computing routing table...\n";
Output
Assignment-9 6