Professional Documents
Culture Documents
2
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Kroki algorytmu (2)
1. Numeruj zadania przypisując im etykiety L od 1 do n
2. Szereguj zadania listowo, przy czym kolejność na liście odpowiada malejącym etykietom zadań
foreach Z in A do begin
3
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Kroki algorytmu (3)
1. Numeruj zadania przypisując im etykiety L od 1 do n
2. Szereguj zadania listowo, przy czym kolejność na liście odpowiada malejącym etykietom zadań
Szeregowanie listowe:
4
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Przykład
z9
z4
z15
z1 z10
z5
z16
z11
z2
n = 19
z6 z17
z12
z7 z13 z18
z3
z19
z8 z14
5
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Przykład (faza 1)
z9 Iteracje: 1, 2, 3
z4
1 Zadania z15, z17, z19 nie mają następników.
Ich lista s_list() będzie więc pusta.
z15
z1 z10 () Pozostaje w kolejnych krokach przyporządkować
kolejnemu zadaniu numer bieżącej iteracji.
z5
z16
z11
2
z2 z17
z6
z12 ()
z7 z13 z18
z3
3
z19
z8 z14 ()
6
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Przykład (faza 1)
4
z9 Iteracja: 4
z4
(1)
1 A = { z9, z10, z12, z16, z18 }
z15
Wyznaczamy listy s_list() dla każdego zadania
z1 z10 () ze zbioru A.
(2,1)
z5 Wybieramy listę najmniejszą w sensie porządku
leksykograficznego.
z16
z11 (2) Zadanie z9, ma najmniejszą listę.
Etykietujemy je liczbą 4.
2
z2 z17
z6
z12 ()
(2,1)
z7 z13 z18
z3
(2)
3
z19
z8 z14 ()
7
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Przykład (faza 1)
4
z9 Iteracja: 5
z4
(1)
(4) 1 A = { z4, z10, z12, z16, z18 }
z15
Wyznaczamy listy s_list() dla każdego zadania
z1 z10 () ze zbioru A.
(2,1)
z5 Wybieramy listę najmniejszą w sensie porządku
leksykograficznego.
z16
z11 (2) Zadania z16 i z18 mają najmniejszą listę.
Wybieramy dowolne spośród nich - z18 .
2 Etykietujemy je liczbą 5.
z2 z17
z6
z12 ()
(2,1)
5
z7 z13 z18
z3
(2)
3
z19
z8 z14 ()
8
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Przykład (faza 1)
4
z9 Iteracja: 6
z4
(1)
(4) 1 A = { z4, z10, z12, z14, z16 }
z15
Wyznaczamy listy s_list() dla każdego zadania
z1 z10 () ze zbioru A.
(2,1)
z5 Wybieramy listę najmniejszą w sensie porządku
6
leksykograficznego.
z16
z11 (2) Zadanie z16 ma najmniejszą listę.
Etykietujemy je liczbą 6.
2
z2 z17
z6
z12 ()
(2,1)
5
z7 z13 z18
z3
(2)
3
z19
z8 z14 ()
(5,3)
9
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Przykład (faza 1)
4
z9 Iteracja: 7
z4
(1)
(4) 1 A = { z4, z10, z11, z12, z14 }
z15
Wyznaczamy listy s_list() dla każdego zadania
z1 z10 () ze zbioru A.
(2,1)
z5 Wybieramy listę najmniejszą w sensie porządku
6
leksykograficznego.
z16
z11 (2) Zadania z10 i z12 mają najmniejszą listę.
Wybieramy dowolne spośród nich - z12 .
(6,3,1)
2 Etykietujemy je liczbą 7.
z2 7 z17
z6
z12 ()
(2,1)
5
z7 z13 z18
z3
(2)
3
z19
z8 z14 ()
(5,3)
10
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Przykład (faza 1)
4
z9 Iteracja: 8
z4
(1)
(4) 1 A = { z4, z10, z11, z14 }
8 z15
Wyznaczamy listy s_list() dla każdego zadania
z1 z10 () ze zbioru A.
(2,1)
z5 Wybieramy listę najmniejszą w sensie porządku
6
leksykograficznego.
z16
z11 (2) Zadanie z10 ma najmniejszą listę.
Etykietujemy je liczbą 8.
(6,3,1)
2
z2 7 z17
z6
z12 ()
(2,1)
5
z7 z13 z18
z3
(2)
3
z19
z8 z14 ()
(5,3)
11
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Przykład (faza 1)
9 4
z9 Iteracja: 9
z4
(1)
(4) 1 A = { z4, z5, z11, z14 }
8 z15
Wyznaczamy listy s_list() dla każdego zadania
z1 z10 () ze zbioru A.
(2,1)
z5 Wybieramy listę najmniejszą w sensie porządku
6
leksykograficznego.
(8,7,4) z16
z11 (2) Zadanie z4 ma najmniejszą listę.
Etykietujemy je liczbą 9.
(6,3,1)
2
z2 7 z17
z6
z12 ()
(2,1)
5
z7 z13 z18
z3
(2)
3
z19
z8 z14 ()
(5,3)
12
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Przykład (faza 1)
9 4
z9 Iteracja: 10
z4
(1)
(4) 1 A = { z5, z11, z14 }
8 z15
Wyznaczamy listy s_list() dla każdego zadania
z1 z10 () ze zbioru A.
(2,1)
z5 Wybieramy listę najmniejszą w sensie porządku
6
leksykograficznego.
(8,7,4) z16
z11 (2) Zadanie z14 ma najmniejszą listę.
Etykietujemy je liczbą 10.
(6,3,1)
2
z2 7 z17
z6
z12 ()
(2,1)
5
z7 z13 z18
z3
(2)
3
10
z19
z8 z14 ()
(5,3)
13
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Przykład (faza 1)
9 4
z9 Iteracja: 11
z4
(1)
(4) 1 A = { z5, z11, z13 }
8 z15
Wyznaczamy listy s_list() dla każdego zadania
z1 z10 () ze zbioru A.
(2,1)
z5 Wybieramy listę najmniejszą w sensie porządku
6
leksykograficznego.
(8,7,4) 11 z16
z11 (2) Zadanie z11 ma najmniejszą listę.
Etykietujemy je liczbą 11.
(6,3,1)
2
z2 7 z17
z6
z12 ()
(2,1)
5
z7 z13 z18
z3
(10,6,5) (2)
3
10
z19
z8 z14 ()
(5,3)
14
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Przykład (faza 1)
9 4
z9 Iteracja: 12
z4
(1)
(4) 1 A = { z5, z7, z13 }
8 z15
Wyznaczamy listy s_list() dla każdego zadania
z1 z10 () ze zbioru A.
12
(2,1)
z5 Wybieramy listę najmniejszą w sensie porządku
6
leksykograficznego.
(8,7,4) 11 z16
z11 (2) Zadanie z5 ma najmniejszą listę.
Etykietujemy je liczbą 12.
(6,3,1)
2
z2 7 z17
z6
z12 ()
(2,1)
5
z7 z13 z18
z3
(11,10,4) (10,6,5) (2)
3
10
z19
z8 z14 ()
(5,3)
15
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Przykład (faza 1)
9 4
z9 Iteracja: 13
z4
(1)
(4) 1 A = { z7, z13 }
8 z15
Wyznaczamy listy s_list() dla każdego zadania
z1 z10 () ze zbioru A.
12
(2,1)
z5 Wybieramy listę najmniejszą w sensie porządku
6
leksykograficznego.
(8,7,4) 11 z16
z11 (2) Zadanie z13 ma najmniejszą listę.
Etykietujemy je liczbą 13.
(6,3,1)
2
z2 7 z17
z6
z12 ()
(2,1)
13 5
z7 z13 z18
z3
(11,10,4) (10,6,5) (2)
3
10
z19
z8 z14 ()
(5,3)
16
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Przykład (faza 1)
9 4
z9 Iteracja: 14
z4
(1)
(4) 1 A = { z6, z7, z8 }
8 z15
Wyznaczamy listy s_list() dla każdego zadania
z1 z10 () ze zbioru A.
12
(2,1)
z5 Wybieramy listę najmniejszą w sensie porządku
6
leksykograficznego.
(8,7,4) 11 z16
z11 (2) Zadanie z7 ma najmniejszą listę.
Etykietujemy je liczbą 14.
(6,3,1)
2
z2 7 z17
z6
z12 ()
(13,12,7) (2,1)
14 5
13
z7 z13 z18
z3
(11,10,4) (10,6,5) (2)
3
10
z19
z8 z14 ()
(5,3)
(13,7)
17
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Przykład (faza 1)
9 4
z9 Iteracja: 15
z4
(1)
(4) 1 A = { z1, z6, z8 }
8 z15
Wyznaczamy listy s_list() dla każdego zadania
z1 z10 () ze zbioru A.
12
(14,12,9) (2,1)
z5 Wybieramy listę najmniejszą w sensie porządku
6
leksykograficznego.
(8,7,4) 11 z16
z11 (2) Zadanie z8 ma najmniejszą listę.
Etykietujemy je liczbą 15.
(6,3,1)
2
z2 7 z17
z6
z12 ()
(13,12,7) (2,1)
14 5
13
z7 z13 z18
z3
(11,10,4) (10,6,5) (2)
3
15 10
z19
z8 z14 ()
(5,3)
(13,7)
18
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Przykład (faza 1)
9 4
z9 Iteracja: 16
z4
(1)
(4) 1 A = { z1, z3, z6 }
8 z15
Wyznaczamy listy s_list() dla każdego zadania
z1 z10 () ze zbioru A.
12
(14,12,9) (2,1)
z5 Wybieramy listę najmniejszą w sensie porządku
6
leksykograficznego.
(8,7,4) 11 z16
z11 (2) Zadanie z6 ma najmniejszą listę.
Etykietujemy je liczbą 16.
(6,3,1)
16 2
z2 7 z17
z6
z12 ()
(13,12,7) (2,1)
14 5
13
z7 z13 z18
z3
(11,10,4) (10,6,5) (2)
(15,14,9)
3
15 10
z19
z8 z14 ()
(5,3)
(13,7)
19
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Przykład (faza 1)
9 4
z9 Iteracja: 17
z4
(1)
(4) 1 A = { z1,z3 }
17 8 z15
Wyznaczamy listy s_list() dla każdego zadania
z1 z10 () ze zbioru A.
12
(14,12,9) (2,1)
z5 Wybieramy listę najmniejszą w sensie porządku
6
leksykograficznego.
(8,7,4) 11 z16
z11 (2) Zadanie z1 ma najmniejszą listę.
Etykietujemy je liczbą 17.
(6,3,1)
16 2
z2 7 z17
z6
z12 ()
(13,12,7) (2,1)
14 5
13
z7 z13 z18
z3
(11,10,4) (10,6,5) (2)
(15,14,9)
3
15 10
z19
z8 z14 ()
(5,3)
(13,7)
20
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Przykład (faza 1)
9 4
z9 Iteracja: 18
z4
(1)
(4) 1 A = { z3 }
17 8 z15
Wyznaczamy listy s_list() dla każdego zadania
z1 z10 () ze zbioru A.
12
(14,12,9) (2,1)
z5 Wybieramy listę najmniejszą w sensie porządku
6
leksykograficznego.
(8,7,4) 11 z16
z11 (2) Zadanie z3 ma najmniejszą listę.
Etykietujemy je liczbą 18.
(6,3,1)
16 2
z2 7 z17
z6
z12 ()
(13,12,7) (2,1)
14 5
18 13
z7 z13 z18
z3
(11,10,4) (10,6,5) (2)
(15,14,9)
3
15 10
z19
z8 z14 ()
(5,3)
(13,7)
21
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Przykład (faza 1)
9 4
z9 Iteracja: 19
z4
(1)
(4) 1 A = { z2 }
17 8 z15
Wyznaczamy listy s_list() dla każdego zadania
z1 z10 () ze zbioru A.
12
(14,12,9) (2,1)
z5 Wybieramy listę najmniejszą w sensie porządku
6
leksykograficznego.
(8,7,4) 11 z16
z11 (2) Zadanie z2 ma najmniejszą listę.
Etykietujemy je liczbą 19.
19 (6,3,1)
16 2
z2 7 z17
z6
(18,12) z12 ()
(13,12,7) (2,1)
14 5
18 13
z7 z13 z18
z3
(11,10,4) (10,6,5) (2)
(15,14,9)
3
15 10
z19
z8 z14 ()
(5,3)
(13,7)
22
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Przykład (faza 2)
9 4
z9
z4 Wyznaczamy porządek zadań zgodnie
1 z malejącymi etykietami:
17
8 z15
z1 12
z10 z2, z3, z1, z6, z8, z7, z13, z5, z11, z14,
z5
z4, z10, z12, z16, z18, z9, z19, z17, z15
6
11 Z16
z11
19
2
16
z2 7 z17
z6
z12
14
13 5
18
z7 z13 z18
z3 Uzyskany harmonogram:
3
15 10
z19 z1 z6 z7 z5 z14 z10 z16 z9 z17
z14 M2
z8
M1 z2 z3 z8 z13 z11 z4 z12 z18 z19 z15
10
Cmax = 10
23