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
