An activity selection problem

The activity selection problem is a mathematical optimization problem. That concerning the selection of non-conflicting activities. Each activity assigned by a start time (si) and finish time (fi). The activity selection problem is to select the maximum number of activities that can be performed by a single machine, assuming that a machine can only work on a single activity at a time.


GREEDY ACTIVITY SELECTOR Algorithm

GREEDY-ACTIVITY-SELECTOR(s, f)

1.  n ← length[s]
2.  A ← {a1}
3.  i ← 1
4.  for m ← 2 to n
5.  	do if sm ≥ fi
6.  	then A ← A U {am}
7.  	i ← m
8.  return A



Example

Start time (si) finish time (fi) Activity name
1 4 A1
3 5 A2
0 6 A3
5 7 A4
3 9 A5
5 9 A6
6 10 A7
8 11 A8
8 12 A9
2 14 A10
12 16 A11


Selected Activities are: A1, A4, A8, A11


activity selection problem in c


#include<stdio.h>

#include<conio.h>



void activities(int s[], int f[], int n)

{

	int i, j;

	printf ("Selected Activities are:\n");

	i = 1;

	printf("A%d ", i);

	for (j = 1; j < n; j++)

	{

		if (s[j] >= f[i])

		{

			printf ("A%d ", j+1);

			i = j;

		}

	}

}



void main()

{

	int s[] =  {1, 3, 0, 5, 3, 5, 6, 8, 8, 2, 12};

	int f[] =  {4, 5, 6, 7, 9, 9, 10, 11, 12, 14, 16};

	int n = sizeof(s)/sizeof(s[0]);

	clrscr();

	activities(s, f, n);

	getchar();

	getch();

}

Output