Job Sequencing Problem

Job Sequencing Problem

Job Sequencing Problem एक Greedy Algorithm based optimization problem है। इसमें हमें Multiple jobs दी जाती हैं, जहाँ हर job के साथ एक deadline और उससे जुड़ा हुआ profit होता है। यह मान लिया जाता है, कि प्रत्येक job को पूरा करने में केवल 1 unit time लगता है।

इस problem का मुख्य उद्देश्य jobs को ऐसे सही sequence (क्रम) में arrange करना है, कि

  • कोई भी job अपनी deadline को miss न करे, और
  • सभी selected jobs से मिलने वाला total profit maximum हो जाए।

Key Points (मुख्य बिंदु)

  • Jobs को सबसे पहले profit के descending order में sort किया जाता है।
  • Job को उसकी deadline से पहले वाले latest available time slot में assign किया जाता है।
  • यदि किसी job की deadline तक कोई भी time slot खाली न मिले, तो उस job को skip कर दिया जाता है।
  • यह problem सभी jobs को schedule करने पर focus नहीं करती, बल्कि maximum profit प्राप्त करने पर ध्यान देती है, इसलिए यह एक optimization problem है।
  • Time Complexity : O(n log n)
  • Space Complexity : O(d) (जहाँ d = maximum deadline)

Why Job Sequencing is Needed?

मुख्य कारण (Key Reasons)

  1. Limited Time Constraint : हर job की एक specific deadline होती है। Job Sequencing यह decide करने में मदद करता है कि कौन-सी job पहले execute की जाए ताकि deadline miss न हो।
  2. Maximizing Profit : अक्सर सभी jobs को करने का समय नहीं होता, इसलिए ऐसी jobs select की जाती हैं जो maximum profit generate करती हों।
  3. Efficient Resource Utilization : CPU, machine, employee या system time जैसे resources को waste होने से बचाने के लिए सही job sequencing जरूरी होती है।
  4. Priority-based Decision Making : High-profit या high-priority jobs को पहले complete किया जा सकता है, जिससे overall performance बेहतर होती है।
  5. Real-Life Scheduling Problems : Job Sequencing का use real-world applications में होता है, जैसे
    • CPU Scheduling in Operating System
    • Online Booking Systems (IRCTC, Movie Ticket Booking)
    • Project Management in task scheduling
    • Advertisement Scheduling (Prime Time Ads)

Key Terms Used in Job Sequencing Problem
(मुख्य शब्द)

Term

Explanation 

Job

कोई भी task या work जिसे complete करना होता है, जैसे CPU process या project task।

Deadline (d)

वह maximum time limit जिसके अंदर job को पूरा करना जरूरी होता है।

Profit (p)

Job को successfully complete करने पर मिलने वाला लाभ 

Time Slot

Job execution के लिए दिया गया fixed time period। (Standard problem में 1 unit time)

Sequence (Order)

Jobs को execute करने का क्रम (order) जिससे total profit maximize हो।

Maximum Deadline

सभी jobs में से सबसे बड़ी deadline, जिससे total time slots तय होते हैं।

Greedy Algorithm

Algorithm जो हर step पर locally best choice select करता है।

Optimization Problem

ऐसी problem जिसमें maximum या minimum value प्राप्त करना goal होता है।

Scheduling

Jobs को समय और deadline के अनुसार arrange करने की process।

Profit Maximization

Jobs को इस तरह sequence करना कि total profit सबसे ज्यादा मिले।

Algorithm of Job Sequencing Problem

Step 1: Input लेना

  • n jobs की list ली जाती है।
  • हर job के साथ दो attributes होते हैं :
    • deadline[i]
    • profit[i]

Step 2: Sorting

  • सभी jobs को profit के descending order में sort किया जाता है।
    • Sorting key : profit

Step 3: Maximum Deadline निकालना

  • सभी jobs में से maximum deadline (maxDeadline) find की जाती है।
    • maxDeadline = total available time slots

Step 4: Slot Array Create करना

  • एक array slot[1 … maxDeadline] बनाई जाती है।
  • Starting में सभी elements को -1 या false से initialize किया जाता है (जो empty slot को represent करता है)।

Step 5: Job Scheduling

  • Sorted jobs को one-by-one traverse किया जाता है।
  • हर job के लिए:
    • for (j = deadline[i]; j >= 1; j–)
  • अगर slot[j] empty हो:
    • slot[j] = job[i]
  • loop break कर दिया जाता है
  • अगर कोई free slot न मिले, तो job discard कर दी जाती है।

Step 6: Profit Calculation

  • slot[] array में stored jobs के profits को add किया जाता है।
  • यही final maximum profit होता है।

Pseudo Code

Job_Sequencing(jobs, n)

// Step 1: Sort jobs by profit (descending order)
sort jobs by profit decreasing

// Step 2: Find maximum deadline
maxDeadline ← maximum deadline among all jobs

// Step 3: Create slot array
create array slot[1 … maxDeadline]
for i ← 1 to maxDeadline
      slot[i] ← -1 // -1 means slot is empty

totalProfit ← 0

// Step 4: Schedule jobs
for i ← 1 to n
      for j ← jobs[i].deadline down to 1
          if slot[j] = -1 then
              slot[j] ← jobs[i]
              totalProfit ← totalProfit + jobs[i].profit
              break
         end if
      end for
end for

// Step 5: Result
return totalProfit, slot

Job Sequencing Example (उदाहरण)

Given Jobs Table

JobDeadline (d)Profit (p)
J12100
J2119
J3227
J4125
J5315

Step 1: Jobs को Profit के Descending Order में Sort करना

  1. J1 → Profit = 100
  2. J3 → Profit = 27
  3. J4 → Profit = 25
  4. J2 → Profit = 19
  5. J5 → Profit = 15

Step 2: Maximum Deadline Find करना

 jobs की deadlines : 2, 1, 2, 1, 3

  • Maximum Deadline = 3
  • Total available time slots = 3

Step 3: Job Scheduling (One by One)

 sorted jobs को एक-एक करके schedule करते हैं।

Job J1 (Deadline = 2, Profit = 100)

  • Slot 2 Empty → J1 assign 

Slot 1        Slot 2        Slot 3
   _                 J1               _

Job J3 (Deadline = 2, Profit = 27)

  • Slot 2 already filled
  • Slot 1 Empty → J3 assign

Slot 1     Slot 2     Slot 3
   J3           J1                _

Job J4 (Deadline = 1, Profit = 25)

  •  slot[1] occupied → no slot available
    → job rejected

Job J2 (Deadline = 1, Profit = 19)

  •  slot[1] occupied → no slot available
    → job rejected

Job J5 (Deadline = 3, Profit = 15)

  • Slot 3 Empty → J5 assign

Slot 1           Slot 2             Slot 3
   J3                  J1                   J5

Step 4: Final Job Sequence and Profit

  • Scheduled Jobs : J3, J1, J5
  • Optimal Job Sequence : J3 → J1 → J5
  • Total Profit : 27 + 100 + 15 = 142

Advantages (लाभ)

  • Maximum Profit : Greedy Algorithm का use करने से total profit maximum होता है।
  • Easy to Understand : Algorithm conceptually easy है: sort → select → assign
  • Efficient Use of Resources : Limited CPU time, machines या employees का best utilization होता है।
  • Real-Life Applications : CPU Scheduling, Online Booking Systems (IRCTC), Advertisement Scheduling, Project Management आदि में useful।

Disadvantages (सीमाएं)

  • Assumes Unit Time Jobs : Standard problem में हर job 1 unit time लेती है, जो सभी real-life jobs पर apply नहीं होता।
  • Limited Scope : Complex jobs या dependencies वाले cases में algorithm fail कर सकता है।
  • Greedy Limitation : Greedy approach कभी-कभी globally optimal solution नहीं देती।
  • Partial Jobs Not Considered : Fractional execution वाले jobs को handle नहीं करता।
error: Content is protected !!