0% found this document useful (0 votes)
7 views8 pages

Week 3

The document outlines the implementation of Binary Search and Prim's Algorithm in C programming. It provides step-by-step algorithms for both methods, detailing how to divide search spaces for Binary Search and how to construct a Minimum Spanning Tree (MST) using Prim's Algorithm. Additionally, it includes a complete C program for Prim's Algorithm with necessary utility functions.

Uploaded by

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

Week 3

The document outlines the implementation of Binary Search and Prim's Algorithm in C programming. It provides step-by-step algorithms for both methods, detailing how to divide search spaces for Binary Search and how to construct a Minimum Spanning Tree (MST) using Prim's Algorithm. Additionally, it includes a complete C program for Prim's Algorithm with necessary utility functions.

Uploaded by

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

1.

Write a C program to implement Binary Search

Algorithm

 Divide the search space into two halves by finding the middle index “mid”.

 Compare the middle element of the search space with the key.

 If the key is found at middle element, the process is terminated.

 If the key is not found at middle element, choose which half will be used as the next search
space.

o If the key is smaller than the middle element, then the left side is used for next search.

o If the key is larger than the middle element, then the right side is used for next search.

 This process is continued until the key is found or the total search space is exhausted.

Write a C Program for Prims algorithm

Follow the given steps to utilize the Prim’s


Algorithm mentioned above for finding MST of a
graph:
 Create a set mstSet that keeps track of vertices
already included in MST.
 Assign a key value to all vertices in the input
graph. Initialize all key values as INFINITE.
Assign the key value as 0 for the first vertex so
that it is picked first.
 While mstSet doesn’t include all vertices
o Pick a vertex u that is not there
in mstSet and has a minimum key value.
o Include u in the mstSet.
o Update the key value of all adjacent vertices
of u. To update the key values, iterate
through all adjacent vertices.
o For every adjacent vertex v, if the
weight of edge u-v is less than the
previous key value of v, update the key
value as the weight of u-v.
Program

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

// Number of vertices in the graph


#define V 5
// A utility function to find the vertex with
// minimum key value, from the set of vertices
// not yet included in MST
int minKey(int key[], bool mstSet[])
{
// Initialize min value
int min = INT_MAX, min_index;

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


if (mstSet[v] == false && key[v] < min)
min = key[v], min_index = v;

return min_index;
}

// A utility function to print the


// constructed MST stored in parent[]
int printMST(int parent[], int graph[V][V])
{
printf("Edge \tWeight\n");
for (int i = 1; i < V; i++)
printf("%d - %d \t%d \n", parent[i], i,
graph[i][parent[i]]);
}

// Function to construct and print MST for


// a graph represented using adjacency
// matrix representation
void primMST(int graph[V][V])
{
// Array to store constructed MST
int parent[V];
// Key values used to pick minimum weight edge in cut
int key[V];
// To represent set of vertices included in MST
bool mstSet[V];

// Initialize all keys as INFINITE


for (int i = 0; i < V; i++)
key[i] = INT_MAX, mstSet[i] = false;

// Always include first 1st vertex in MST.


// Make key 0 so that this vertex is picked as first
// vertex.
key[0] = 0;

// First node is always root of MST


parent[0] = -1;

// The MST will have V vertices


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

// Pick the minimum key vertex from the


// set of vertices not yet included in MST
int u = minKey(key, mstSet);

// Add the picked vertex to the MST Set


mstSet[u] = true;

// Update key value and parent index of


// the adjacent vertices of the picked vertex.
// Consider only those vertices which are not
// yet included in MST
for (int v = 0; v < V; v++)

// graph[u][v] is non zero only for adjacent


// vertices of m mstSet[v] is false for vertices
// not yet included in MST Update the key only
// if graph[u][v] is smaller than key[v]
if (graph[u][v] && mstSet[v] == false
&& graph[u][v] < key[v])
parent[v] = u, key[v] = graph[u][v];
}

// print the constructed MST


printMST(parent, graph);
}

// Driver's code
int main()
{
int graph[V][V] = { { 0, 2, 0, 6, 0 },
{ 2, 0, 3, 8, 5 },
{ 0, 3, 0, 0, 7 },
{ 6, 8, 0, 0, 9 },
{ 0, 5, 7, 9, 0 } };

// Print the solution


primMST(graph);
return 0;
}

You might also like