排序算法中平均時間復雜度
作業排序 (Job sequencing)
Job sequencing is the set of jobs, associated with the job i where deadline di >= 0 and profit pi > 0. For any job i the profit is earned if and only if the job is completed by its deadline. To complete a job, one has to process the job on a machine for one unit of time. Only one machine is available for processing the jobs.
作業排序是與作業i相關聯的一組作業,其中期限di> = 0且利潤pi> 0 。 對于任何工作, 我當且僅當作業被其限期完成利潤賺。 為了完成一項工作,必須在一臺機器上在一個單位時間內處理該工作。 僅一臺機器可用于處理作業。
Steps for performing job sequencing with deadline using greedy approach is as follows:
使用貪婪方法在截止日期之前執行作業排序的步驟如下:
Sort all the jobs based on the profit in an increasing order.
根據利潤按升序對所有作業進行排序。
Let α be the maximum deadline that will define the size of array.
令α為將定義數組大小的最大截止日期。
Create a solution array S with d slots.
創建具有d個插槽的解決方案數組S。
Initialize the content of array S with zero.
用零初始化數組S的內容。
Check for all jobs.
檢查所有作業。
- If scheduling is possible a lot ith slot of array s to job i.
- 如果調度是可能很多我陣列的個時隙s到工作我 。
- Otherwise look for location (i-1), (i-2)...1.
- 否則尋找位置(i-1),(i-2)... 1 。
- Schedule the job if possible else reject.
Return array S as the answer.
返回數組S作為答案。
End.
結束。
作業排序算法 (Algorithm for job sequencing)
Input: A is the array of jobs with deadline and profit S array will be the output.
輸入: A是具有截止日期的職位數組,而利潤S數組將是輸出。
1. Begin
2. Sort all the jobs based on profit Pi so
3. P1 > P2 > P3 …………………………….>=Pn
4. d = maximum deadline of job in A
5. Create array S[1,…………………,d]
6. For i=1 to n do
7. Find the largest job x
8. For j=i to 1
9. If ((S[j] = 0) and (x deadline<= d))
10. Then
11. S[x] = i;
12. Break;
13. End if
14. End for
15. End for
16. End
時間復雜度 (Time complexity)
Job sequencing problems has the time complexity of O(n2).
作業排序問題的時間復雜度為O(n2)。
Example:
例:
Given a set of 9 jobs where each job has a deadline and profit associated to it .Each job takes 1 unit of time to complete and only one job can be scheduled at a time. We earn the profit if and only if the job is completed by its deadline. The task is to find the maximum profit and the number of jobs done.
給定一組9個工作,每個工作都有一個截止日期和與之相關的利潤。每個工作需要1個時間單位才能完成,并且一次只能安排一個工作。 當且僅當工作在截止日期之前完成時,我們才能賺取利潤。 任務是找到最大的利潤和完成的工作數量。
Jobs Profit Deadline
J1 85 5
J2 25 4
J3 16 3
J4 40 3
J5 55 4
J6 19 5
J7 92 2
J8 80 3
J9 15 7
Step 1:
第1步:
Step 2:
第2步:
Step 3:
第三步:

Step 4:
第4步:

Step 5:
步驟5:

Step 6:
步驟6:
So, the maximum profit = 40 + 92 + 80 + 55 + 85 + 15 = 367
因此,最大利潤= 40 + 92 + 80 + 55 + 85 + 15 = 367
翻譯自: https://www.includehelp.com/operating-systems/job-sequencing.aspx
排序算法中平均時間復雜度