Job Scheduling Problem
Job Scheduling Problem
Definition
• Given an array of jobs where every job has a deadline and associated profit
if the job is finished before the deadline. It is also given that every job takes a
single unit of time, so the minimum possible deadline for any job is 1. How
to maximize total profit if only one job can be scheduled at a time.
Greedy Approach for Job Scheduling Problem
Job J1 J2 J3 J4 J5
Deadline 2 1 3 2 1
Profit 60 100 20 40 20
Solution
• To solve this problem, the given jobs are sorted according to their profit in a
descending order. Hence, after sorting, the jobs are ordered as shown in the
following table.
Job J2 J1 J4 J3 J5
Deadline 1 2 2 3 1
Profit 100 60 40 20 20
Solution
• From this set of jobs, first we select J2, as it can be completed within its
deadline and contributes maximum profit.
• Next, J1 is selected as it gives more profit compared to J4.
• In the next clock,J4 cannot be selected as its deadline is over, hence J3 is
selected as it executes within its deadline.
• The job J5 is discarded as it cannot be executed within its deadline.
Solution
• Thus, the solution is the sequence of jobs (J2, J1, J3) which are being
executed within their deadline and gives maximum profit.
• Total profit of this sequence is 100 + 60 + 20 = 180.
Program
• #include <stdio.h>
• #define MAX 100
• typedef struct Job {
• char id[5];
• int deadline;
• int profit;
• } Job;
• //number of jobs
• int n = 5;
Program
• 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;
• }
• }
• }
• Mahyavanshi Rohan
• Katara Aryan