0% found this document useful (0 votes)
59 views5 pages

DAA Assign 2

1) Job sequencing with deadlines is the problem of scheduling a set of jobs to be completed by their deadlines to maximize total profit. 2) A greedy method picks the locally optimal choice at each step to find a solution. It selects the highest profit job that can be completed by its deadline at each step. 3) The program implements a greedy algorithm to schedule jobs by sorting them by profit and selecting the highest profit job that fits in each time slot, up to the maximum deadline. It outputs the scheduled jobs and maximum total profit.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
59 views5 pages

DAA Assign 2

1) Job sequencing with deadlines is the problem of scheduling a set of jobs to be completed by their deadlines to maximize total profit. 2) A greedy method picks the locally optimal choice at each step to find a solution. It selects the highest profit job that can be completed by its deadline at each step. 3) The program implements a greedy algorithm to schedule jobs by sorting them by profit and selecting the highest profit job that fits in each time slot, up to the maximum deadline. It outputs the scheduled jobs and maximum total profit.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Assignment No.

: 2

Title: Implement job sequencing with deadlines using a greedy method.

1) To understand the concepts of job sequencing.


2) To Learn different methods required for job sequencing.

Write a program to implement job sequencing with deadline using greedy method

Students will be able to,


1. Understand the concept of job sequencing.
2. Learn what is greedy method.

Software: Turbo C

What is job sequencing with deadlines?

In job sequencing with deadlines problem, the objective is to find a sequence of jobs
completed within their deadlines, giving a maximum profit. Let us consider the set of n
given jobs associated with deadlines, and profit is earned if a job is completed by its
deadline. These jobs need to be ordered so that the maximum profit is earned.
dDesign and Ana

Points to remember for job sequencing with deadline


 Each job has deadline di & it can process the job within its deadline; only one job can be
processed at a time.
 Only one CPU is available for processing all jobs.
 CPU can take only one unit at a time for processing any job.
 All jobs arrived at the same time

What is greedy method?


It simply means to pick up a choice/solution that seems the best at the moment (being greedy). This
technique is best suited when we want an immediate situation. It helps to solve optimization
problems i.e. which gives either minimum results or maximum results. A solution satisfying the
condition in the problem is a feasible solution. The solution having minimum cost out of all
possible feasible solutions is the optimal solution i.e. it is the best solution. The goal of the greedy
algorithm is to find the optimal solution. There can be only 1 optimal solution.

Pseudo code

for i = 1 to n do
Set k = min(dmax, DEADLINE(i)) //where DEADLINE(i) denotes deadline of ith job
while k >= 1 do
if timeslot[k] is EMPTY then
timeslot[k] = job(i)
break
endif
Set k = k - 1
endwhile
endfor

Program :

#include <stdio.h>

#define MAX 100

typedef struct Job {


char id[5];
int deadline;
dDesign and Ana
int profit;
} Job;

void jobSequencingWithDeadline(Job jobs[], int n);

int minValue(int x, int y) {


if(x < y) return x;
return y;
}

int main(void) {
//variables
int i, j;

//jobs with deadline and profit


Job jobs[5] = {
{"j1", 2, 60},
{"j2", 1, 100},
{"j3", 3, 20},
{"j4", 2, 40},
{"j5", 1, 20},
};

//temp
Job temp;

//number of jobs
int n = 5;

//sort the jobs profit wise in descending order


for(i = 1; i < n; i++) {
for(j = 0; j < n - i; j++) {
if(jobs[j+1].profit > jobs[j].profit) {
temp = jobs[j+1];
jobs[j+1] = jobs[j];
jobs[j] = temp;
}
}
}

printf("%10s %10s %10s\n", "Job", "Deadline", "Profit");


for(i = 0; i < n; i++) {
printf("%10s %10i %10i\n", jobs[i].id, jobs[i].deadline, jobs[i].profit);
}
dDesign and Ana
jobSequencingWithDeadline(jobs, n);

return 0;
}

void jobSequencingWithDeadline(Job jobs[], int n) {


//variables
int i, j, k, maxprofit;

//free time slots


int timeslot[MAX];

//filled time slots


int filledTimeSlot = 0;

//find max deadline value


int dmax = 0;
for(i = 0; i < n; i++) {
if(jobs[i].deadline > dmax) {
dmax = jobs[i].deadline;
}
}

//free time slots initially set to -1 [-1 denotes EMPTY]


for(i = 1; i <= dmax; i++) {
timeslot[i] = -1;
}

printf("dmax: %d\n", dmax);

for(i = 1; i <= n; i++) {


k = minValue(dmax, jobs[i - 1].deadline);
while(k >= 1) {
if(timeslot[k] == -1) {
timeslot[k] = i-1;
filledTimeSlot++;
break;
}
k--;
}

//if all time slots are filled then stop


if(filledTimeSlot == dmax) {
break;
}
dDesign and Ana
}

//required jobs
printf("\nRequired Jobs: ");
for(i = 1; i <= dmax; i++) {
printf("%s", jobs[timeslot[i]].id);

if(i < dmax) {


printf(" --> ");
}
}

//required profit
maxprofit = 0;
for(i = 1; i <= dmax; i++) {
maxprofit += jobs[timeslot[i]].profit;
}
printf("\nMax Profit: %d\n", maxprofit);
}

Outpout:
Job Deadline Profit
j2 1 100
j1 2 60
j4 2 40
j3 3 20
j5 1 20
dmax: 3

Required Jobs: j2 --> j1 --> j3


Max Profit: 180

Hence, we have implenment job sequencing with deadline in greedy method successfully.

1.Define job sequencing?


2.What is greedy method?
3.What is application of greedy method?

You might also like