0% found this document useful (0 votes)
22 views10 pages

Assignment Problem

Uploaded by

onlinetonistark
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views10 pages

Assignment Problem

Uploaded by

onlinetonistark
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd

JOB ASSIGNMENT

PROBLEM USING
BRANCH AND
INTRODUCTION:
• JOB ASSIGNMENT PROBLEM IS ONE OF THE FUNDAMENTAL COMBINATORIAL
OPTIMIZATION PROBLEMS. IN ITS MOST COMMON IN ITS FORM.
• EXAMPLES OF PROBLEMS HAVE A NUMBER OF PEOPLE AND A NUMBER OF
JOBS.
• EACH PERSON CAN BE ASSIGNED TO DO ANY JOB, WHICH HAS DIFFERENT
COSTS DEPENDING ON THE JOB.
• THE GOAL IS TO DO AS MANY JOBS AS POSSIBLE BY ASSIGNING ONE PERSON
TO EACH JOB AND ONE JOB PER PERSON, IN SUCH A WAY THAT THE TOTAL
COST IS MINIMIZED
ALGORITHM:
CONSIDER WE HAVE TO ASSIGN N NO OF JOBS TO N NO OF PERSONS
• STEP 1: CALCULATE THE INITIAL LOWER BOUND

LOWER BOUND= MINIMUM OF EACH ROW


• STEP 2: CONSIDER A PERSON AND ASSIGN ALL POSSIBLE JOBS
• STEP 3: CALCULATE THE LOWER BOUND OF PERSON USING

LOWER BOUND=A[PERSON][JOB]+MINIMUM OF UNASSIGNED PERSON


AND JOBS
• STEP 4: ASSIGN THE JOB WHICH HAVE MINIMUM LOWER BOUND VALUE TO THE PERSON
AND ELIMINATE THE JOB AND PERSON.
• STEP 5:REPEAT STEP 2,3,4 UNTIL ALL JOBS ARE ASSIGNED TO ALL PERSONS.
• STEP 6:FIND THE FINAL MINIMUM COST OF JOBS AND PERSONS.
PSEUDOCODE:
Define N = 4
Function findMinCost(costMatrix, worker, mask, minCost,
curCost):
If worker == N:
If curCost < minCost[0]:
minCost[0] = curCost
Return
For job = 0 to N-1:
If (mask & (1 << job)) == 0: // Job not yet assigned

Call findMinCost(costMatrix, worker + 1, mask


| (1 << job), minCost, curCost + costMatrix[worker][job])
Main Function:
Initialize costMatrix as [[9, 2, 7, 8], [6, 4, 3, 7], [5,
8, 1, 8], [7, 6, 9, 4]]
Set minCost = [INT_MAX] // Use a list to pass by
reference
Call findMinCost(costMatrix, 0, 0, minCost, 0)
Print minCost[0]
EXPLANATION:
INPUTS:
COSTMATRIX: A MATRIX REPRESENTING THE COST OF ASSIGNING JOBS TO
WORKERS.
WORKER: THE CURRENT WORKER INDEX BEING ASSIGNED A JOB.
MASK: A BITMASK INDICATING WHICH JOBS HAVE ALREADY BEEN ASSIGNED.
MINCOST: A LIST CONTAINING THE MINIMUM COST FOUND SO FAR.
CURCOST: THE CURRENT TOTAL COST OF THE ASSIGNMENT UP TO THIS POINT.
1. DEFINE N:
N = 4 (NUMBER OF WORKERS AND JOBS).

2. FUNCTION FINDMINCOST:
BASE CASE:
IF ALL WORKERS ARE ASSIGNED (WORKER == N):
UPDATE MINCOST[0] IF CURCOST IS LOWER.
RETURN.
RECURSIVE CASE:
FOR EACH JOB FROM 0 TO N-1:
IF JOB IS NOT ASSIGNED (MASK & (1 << JOB) == 0):
RECURSIVELY ASSIGN THE JOB TO THE WORKER, UPDATE MASK, AND ADD TO
CURCOST.
MAIN FUNCTION:
INITIALIZE COSTMATRIX.
SET MINCOST = [INT_MAX] TO ALLOW UPDATES WITHIN THE FUNCTION.
CALL FINDMINCOST WITH INITIAL PARAMETERS.
PRINT MINCOST.
ADVANTAGES:
• THE TIME COMPLEXITY OF THE BRANCH AND BOUND ALGORITHM IS
LESS WHEN COMPARED WITH OTHER ALGORITHMS.
• IT FINDS AN OPTIMAL SOLUTION FOR A GIVEN PROBLEM.
• THE BRANCH AND BOUND ALGORITHM FIND A MINIMAL PATH TO
REACH THE OPTIMAL SOLUTION FOR A GIVEN PROBLEM.
DISADVANTAGES:
• THE BRANCH AND BOUND ALGORITHM ARE TIME-CONSUMING.
• PARALLELIZATION IS EXTREMELY DIFFICULT IN THE BRANCH AND
BOUND ALGORITHM.
• REQUIRES SIGNIFICANT MEMORY TO STORE BRANCHES AND PARTIAL
SOLUTIONS.

You might also like