You are on page 1of 140

Osnove operacionih istraživanja

Grafovi i mrežno planiranje


Maksimalni protok
 Edmonds-Karpova verzija Ford-Fulkersonovog algoritma

1. Inicijalni protok je 0
2. Pronađi najkraći povećavajući lanac od izvora do ponora, ako ne postoji
maksimalni protok je jednak trenutnoj vrijednosti protoka – kraj algoritma.
3. Pronađi granu u povećavajućem lancu kroz koju može proći najmanji protok
4. Uvećaj protok za ovaj iznos: smanji kapacitet svih grana lanca za isti iznos ako
protok ide u smjeru grane (smanji rezerve) i povećaj kapacitet ako protok ide u
suprotnom smjeru od smjera grane (smanji protok kroz granu).
5. Vrati se na korak 2.
Zadatak 1.

Pronaći maksimalni protok kroz zadani graf koristeći Edmonds-Karpovu verziju


Ford-Fulkersonovog algoritma
x3

3 1
4
x2 x6
8 3 2 1
x1 x8
x4

1
3 2 9

x5 6 x7
x3

3/0 1/0
4/0
x2 x6
8/0 3/0 2/0 1/0
x1 x8
x4

1/0
3/0 2/0 9/0

x5 6/0 x7
x3
2

3/0 1/0
4/0

0 x2 x6
8/0 3/0 2/0 1/0
x1 x8
1 x4 3 3 4
1/0
3/0 2/0 9/0

2 3
x5 6/0 x7
x3
2

3/0 1/0
4/0

0 x2 x6
8/0 3/0 2/0 1/0
x1 x8
1 x4 3 3 4
1/0
3/0 2/0 9/0

2 3
x5 6/0 x7
x3

3/0 1/0
4/0
x2 x6
8/1 3/0 2/0 1/1
x1 x8
x4

1/0
3/1 2/1 9/0

x5 6/0 x7
x3
2

3/0 1/0
4/0

0 x2 x6
8/1 3/0 2/0 1/1
x1 x8
1 x4 3 3 4
1/0
3/1 2/1 9/0

2 3
x5 6/0 x7
x3
2

3/0 1/0
4/0

0 x2 x6
8/1 3/0 2/0 1/1
x1 x8
1 x4 3 3 4
1/0
3/1 2/1 9/0

2 3
x5 6/0 x7
x3

3/0 1/0
4/0
x2 x6
8/3 3/0 2/0 1/1
x1 x8
x4

1/0
3/3 2/1 9/2

x5 6/2 x7
x3
2

3/0 1/0
4/0

0 x2 x6
8/3 3/0 2/0 1/1
x1 x8
1 x4 3 4 6
1/0
3/3 2/1 9/2

4 5
x5 6/2 x7
x3
2

3/0 1/0
4/0

0 x2 x6
8/3 3/0 2/0 1/1
x1 x8
1 x4 3 3 6
1/0
3/3 2/1 9/2

4 5
x5 6/2 x7
x3

3/1 1/0
4/1
x2 x6
8/4 3/0 2/0 1/1
x1 x8
x4

1/1
3/3 2/1 9/3

x5 6/3 x7
x3
2

3/1 1/0
4/1

0 x2 x6
8/4 3/0 2/0 1/1
x1 x8
1 x4 3 4 7
1/1
3/3 2/1 9/3

5 6
x5 6/3 x7
x3
2

3/1 1/0
4/1

0 x2 x6
8/4 3/0 2/0 1/1
x1 x8
1 x4 3 4 7
1/1
3/3 2/1 9/3

5 6
x5 6/3 x7
x3

3/2 1/0
4/2
x2 x6
8/5 3/0 2/1 1/1
x1 x8
x4

1/1
3/3 2/0 9/4

x5 6/4 x7
x3
2

3/2 1/0
4/2

0 x2 x6
8/5 3/0 2/1 1/1
x1 x8
1 x4 3 4
1/1
3/3 2/0 9/4

x5 6/4 x7
x3

3/2 1/0
4/2
x2 x6
8/5 3/0 2/1 1/1
x1 x8
x4

1/1
3/3 2/0 9/4

x5 6/4 x7
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 8 0 0 0 0 0 0 ← − /0
x2 0 0 3 0 3 0 0 0
x3 0 0 0 4 0 0 0 0
x4 0 3 0 0 1 2 0 0
x5 0 0 0 0 0 2 6 0
x6 0 0 1 0 0 0 0 1
x7 0 0 0 0 0 0 0 9
x8 0 0 0 0 0 0 0 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 8 0 0 0 0 0 0 ← − /0
x2 0 0 3 0 3 0 0 0 ← x1/1
x3 0 0 0 4 0 0 0 0
x4 0 3 0 0 1 2 0 0
x5 0 0 0 0 0 2 6 0
x6 0 0 1 0 0 0 0 1
x7 0 0 0 0 0 0 0 9
x8 0 0 0 0 0 0 0 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 8 0 0 0 0 0 0 ← − /0
x2 0 0 3 0 3 0 0 0 ← x1/1
x3 0 0 0 4 0 0 0 0 ← x2/2
x4 0 3 0 0 1 2 0 0
x5 0 0 0 0 0 2 6 0 ← x2/2
x6 0 0 1 0 0 0 0 1
x7 0 0 0 0 0 0 0 9
x8 0 0 0 0 0 0 0 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 8 0 0 0 0 0 0 ← − /0
x2 0 0 3 0 3 0 0 0 ← x1/1
x3 0 0 0 4 0 0 0 0 ← x2/2
x4 0 3 0 0 1 2 0 0 ← x3/3
x5 0 0 0 0 0 2 6 0 ← x2/2
x6 0 0 1 0 0 0 0 1 ← x5/3
x7 0 0 0 0 0 0 0 9 ← x5/3
x8 0 0 0 0 0 0 0 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 8 0 0 0 0 0 0 ← − /0
x2 0 0 3 0 3 0 0 0 ← x1/1
x3 0 0 0 4 0 0 0 0 ← x2/2
x4 0 3 0 0 1 2 0 0 ← x3/3
x5 0 0 0 0 0 2 6 0 ← x2/2
x6 0 0 1 0 0 0 0 1 ← x5/3
x7 0 0 0 0 0 0 0 9 ← x5/3
x8 0 0 0 0 0 0 0 0 ← x6/4
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 8 0 0 0 0 0 0 ← − /0
x2 0 0 3 0 3 0 0 0 ← x1/1
x3 0 0 0 4 0 0 0 0 ← x2/2
x4 0 3 0 0 1 2 0 0 ← x3/3
x5 0 0 0 0 0 2 6 0 ← x2/2
x6 0 0 1 0 0 0 0 1 ← x5/3
x7 0 0 0 0 0 0 0 9 ← x5/3
x8 0 0 0 0 0 0 0 0 ← x6/4
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 7 0 0 0 0 0 0 ← − /0
x2 1 0 3 0 2 0 0 0
x3 0 0 0 4 0 0 0 0
x4 0 3 0 0 1 2 0 0
x5 0 1 0 0 0 1 6 0
x6 0 0 1 0 1 0 0 0
x7 0 0 0 0 0 0 0 9
x8 0 0 0 0 0 1 0 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 7 0 0 0 0 0 0 ← − /0
x2 1 0 3 0 2 0 0 0 ← x1/1
x3 0 0 0 4 0 0 0 0
x4 0 3 0 0 1 2 0 0
x5 0 1 0 0 0 1 6 0
x6 0 0 1 0 1 0 0 0
x7 0 0 0 0 0 0 0 9
x8 0 0 0 0 0 1 0 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 7 0 0 0 0 0 0 ← − /0
x2 1 0 3 0 2 0 0 0 ← x1/1
x3 0 0 0 4 0 0 0 0 ← x2/2
x4 0 3 0 0 1 2 0 0
x5 0 1 0 0 0 1 6 0 ← x2/2
x6 0 0 1 0 1 0 0 0
x7 0 0 0 0 0 0 0 9
x8 0 0 0 0 0 1 0 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 7 0 0 0 0 0 0 ← − /0
x2 1 0 3 0 2 0 0 0 ← x1/1
x3 0 0 0 4 0 0 0 0 ← x2/2
x4 0 3 0 0 1 2 0 0 ← x3/3
x5 0 1 0 0 0 1 6 0 ← x2/2
x6 0 0 1 0 1 0 0 0 ← x5/3
x7 0 0 0 0 0 0 0 9 ← x5/3
x8 0 0 0 0 0 1 0 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 7 0 0 0 0 0 0 ← − /0
x2 1 0 3 0 2 0 0 0 ← x1/1
x3 0 0 0 4 0 0 0 0 ← x2/2
x4 0 3 0 0 1 2 0 0 ← x3/3
x5 0 1 0 0 0 1 6 0 ← x2/2
x6 0 0 1 0 1 0 0 0 ← x5/3
x7 0 0 0 0 0 0 0 9 ← x5/3
x8 0 0 0 0 0 1 0 0 ← x7/4
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 7 0 0 0 0 0 0 ← − /0
x2 1 0 3 0 2 0 0 0 ← x1/1
x3 0 0 0 4 0 0 0 0 ← x2/2
x4 0 3 0 0 1 2 0 0 ← x3/3
x5 0 1 0 0 0 1 6 0 ← x2/2
x6 0 0 1 0 1 0 0 0 ← x5/3
x7 0 0 0 0 0 0 0 9 ← x5/3
x8 0 0 0 0 0 1 0 0 ← x7/4
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 5 0 0 0 0 0 0 ← − /0
x2 3 0 3 0 0 0 0 0
x3 0 0 0 4 0 0 0 0
x4 0 3 0 0 1 2 0 0
x5 0 3 0 0 0 1 4 0
x6 0 0 1 0 1 0 0 0
x7 0 0 0 0 2 0 0 7
x8 0 0 0 0 0 1 2 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 5 0 0 0 0 0 0 ← − /0
x2 3 0 3 0 0 0 0 0 ← x1/1
x3 0 0 0 4 0 0 0 0
x4 0 3 0 0 1 2 0 0
x5 0 3 0 0 0 1 4 0
x6 0 0 1 0 1 0 0 0
x7 0 0 0 0 2 0 0 7
x8 0 0 0 0 0 1 2 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 5 0 0 0 0 0 0 ← − /0
x2 3 0 3 0 0 0 0 0 ← x1/1
x3 0 0 0 4 0 0 0 0 ← x2/2
x4 0 3 0 0 1 2 0 0
x5 0 3 0 0 0 1 4 0
x6 0 0 1 0 1 0 0 0
x7 0 0 0 0 2 0 0 7
x8 0 0 0 0 0 1 2 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 5 0 0 0 0 0 0 ← − /0
x2 3 0 3 0 0 0 0 0 ← x1/1
x3 0 0 0 4 0 0 0 0 ← x2/2
x4 0 3 0 0 1 2 0 0 ← x3/3
x5 0 3 0 0 0 1 4 0
x6 0 0 1 0 1 0 0 0
x7 0 0 0 0 2 0 0 7
x8 0 0 0 0 0 1 2 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 5 0 0 0 0 0 0 ← − /0
x2 3 0 3 0 0 0 0 0 ← x1/1
x3 0 0 0 4 0 0 0 0 ← x2/2
x4 0 3 0 0 1 2 0 0 ← x3/3
x5 0 3 0 0 0 1 4 0 ← x4/4
x6 0 0 1 0 1 0 0 0 ← x4/4
x7 0 0 0 0 2 0 0 7
x8 0 0 0 0 0 1 2 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 5 0 0 0 0 0 0 ← − /0
x2 3 0 3 0 0 0 0 0 ← x1/1
x3 0 0 0 4 0 0 0 0 ← x2/2
x4 0 3 0 0 1 2 0 0 ← x3/3
x5 0 3 0 0 0 1 4 0 ← x4/4
x6 0 0 1 0 1 0 0 0 ← x4/4
x7 0 0 0 0 2 0 0 7 ← x5/5
x8 0 0 0 0 0 1 2 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 5 0 0 0 0 0 0 ← − /0
x2 3 0 3 0 0 0 0 0 ← x1/1
x3 0 0 0 4 0 0 0 0 ← x2/2
x4 0 3 0 0 1 2 0 0 ← x3/3
x5 0 3 0 0 0 1 4 0 ← x4/4
x6 0 0 1 0 1 0 0 0 ← x4/4
x7 0 0 0 0 2 0 0 7 ← x5/5
x8 0 0 0 0 0 1 2 0 ← x7/6
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 5 0 0 0 0 0 0 ← − /0
x2 3 0 3 0 0 0 0 0 ← x1/1
x3 0 0 0 4 0 0 0 0 ← x2/2
x4 0 3 0 0 1 2 0 0 ← x3/3
x5 0 3 0 0 0 1 4 0 ← x4/4
x6 0 0 1 0 1 0 0 0 ← x4/4
x7 0 0 0 0 2 0 0 7 ← x5/5
x8 0 0 0 0 0 1 2 0 ← x7/6
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 4 0 0 0 0 0 0 ← − /0
x2 4 0 2 0 0 0 0 0
x3 0 1 0 3 0 0 0 0
x4 0 3 1 0 0 2 0 0
x5 0 3 0 1 0 1 3 0
x6 0 0 1 0 1 0 0 0
x7 0 0 0 0 3 0 0 6
x8 0 0 0 0 0 1 3 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 4 0 0 0 0 0 0 ← − /0
x2 4 0 2 0 0 0 0 0 ← x1/1
x3 0 1 0 3 0 0 0 0
x4 0 3 1 0 0 2 0 0
x5 0 3 0 1 0 1 3 0
x6 0 0 1 0 1 0 0 0
x7 0 0 0 0 3 0 0 6
x8 0 0 0 0 0 1 3 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 4 0 0 0 0 0 0 ← − /0
x2 4 0 2 0 0 0 0 0 ← x1/1
x3 0 1 0 3 0 0 0 0 ← x2/2
x4 0 3 1 0 0 2 0 0
x5 0 3 0 1 0 1 3 0
x6 0 0 1 0 1 0 0 0
x7 0 0 0 0 3 0 0 6
x8 0 0 0 0 0 1 3 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 4 0 0 0 0 0 0 ← − /0
x2 4 0 2 0 0 0 0 0 ← x1/1
x3 0 1 0 3 0 0 0 0 ← x2/2
x4 0 3 1 0 0 2 0 0 ← x3/3
x5 0 3 0 1 0 1 3 0
x6 0 0 1 0 1 0 0 0
x7 0 0 0 0 3 0 0 6
x8 0 0 0 0 0 1 3 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 4 0 0 0 0 0 0 ← − /0
x2 4 0 2 0 0 0 0 0 ← x1/1
x3 0 1 0 3 0 0 0 0 ← x2/2
x4 0 3 1 0 0 2 0 0 ← x3/3
x5 0 3 0 1 0 1 3 0
x6 0 0 1 0 1 0 0 0 ← x4/4
x7 0 0 0 0 3 0 0 6
x8 0 0 0 0 0 1 3 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 4 0 0 0 0 0 0 ← − /0
x2 4 0 2 0 0 0 0 0 ← x1/1
x3 0 1 0 3 0 0 0 0 ← x2/2
x4 0 3 1 0 0 2 0 0 ← x3/3
x5 0 3 0 1 0 1 3 0 ← x6/5
x6 0 0 1 0 1 0 0 0 ← x4/4
x7 0 0 0 0 3 0 0 6
x8 0 0 0 0 0 1 3 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 4 0 0 0 0 0 0 ← − /0
x2 4 0 2 0 0 0 0 0 ← x1/1
x3 0 1 0 3 0 0 0 0 ← x2/2
x4 0 3 1 0 0 2 0 0 ← x3/3
x5 0 3 0 1 0 1 3 0 ← x6/5
x6 0 0 1 0 1 0 0 0 ← x4/4
x7 0 0 0 0 3 0 0 6 ← x5/6
x8 0 0 0 0 0 1 3 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 4 0 0 0 0 0 0 ← − /0
x2 4 0 2 0 0 0 0 0 ← x1/1
x3 0 1 0 3 0 0 0 0 ← x2/2
x4 0 3 1 0 0 2 0 0 ← x3/3
x5 0 3 0 1 0 1 3 0 ← x6/5
x6 0 0 1 0 1 0 0 0 ← x4/4
x7 0 0 0 0 3 0 0 6 ← x5/6
x8 0 0 0 0 0 1 3 0 ← x7/7
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 4 0 0 0 0 0 0 ← − /0
x2 4 0 2 0 0 0 0 0 ← x1/1
x3 0 1 0 3 0 0 0 0 ← x2/2
x4 0 3 1 0 0 2 0 0 ← x3/3
x5 0 3 0 1 0 1 3 0 ← x6/5
x6 0 0 1 0 1 0 0 0 ← x4/4
x7 0 0 0 0 3 0 0 6 ← x5/6
x8 0 0 0 0 0 1 3 0 ← x7/7
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 3 0 0 0 0 0 0 ← − /0
x2 5 0 1 0 0 0 0 0
x3 0 2 0 2 0 0 0 0
x4 0 3 2 0 0 1 0 0
x5 0 3 0 1 0 2 2 0
x6 0 0 1 1 0 0 0 0
x7 0 0 0 0 4 0 0 5
x8 0 0 0 0 0 1 4 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 3 0 0 0 0 0 0 ← − /0
x2 5 0 1 0 0 0 0 0 ← x1/1
x3 0 2 0 2 0 0 0 0
x4 0 3 2 0 0 1 0 0
x5 0 3 0 1 0 2 2 0
x6 0 0 1 1 0 0 0 0
x7 0 0 0 0 4 0 0 5
x8 0 0 0 0 0 1 4 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 3 0 0 0 0 0 0 ← − /0
x2 5 0 1 0 0 0 0 0 ← x1/1
x3 0 2 0 2 0 0 0 0 ← x2/2
x4 0 3 2 0 0 1 0 0
x5 0 3 0 1 0 2 2 0
x6 0 0 1 1 0 0 0 0
x7 0 0 0 0 4 0 0 5
x8 0 0 0 0 0 1 4 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 3 0 0 0 0 0 0 ← − /0
x2 5 0 1 0 0 0 0 0 ← x1/1
x3 0 2 0 2 0 0 0 0 ← x2/2
x4 0 3 2 0 0 1 0 0 ← x3/3
x5 0 3 0 1 0 2 2 0
x6 0 0 1 1 0 0 0 0
x7 0 0 0 0 4 0 0 5
x8 0 0 0 0 0 1 4 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 3 0 0 0 0 0 0 ← − /0
x2 5 0 1 0 0 0 0 0 ← x1/1
x3 0 2 0 2 0 0 0 0 ← x2/2
x4 0 3 2 0 0 1 0 0 ← x3/3
x5 0 3 0 1 0 2 2 0
x6 0 0 1 1 0 0 0 0 ← x4/4
x7 0 0 0 0 4 0 0 5
x8 0 0 0 0 0 1 4 0
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 3 0 0 0 0 0 0 ← − /0
x2 5 0 1 0 0 0 0 0 ← x1/1
x3 0 2 0 2 0 0 0 0 ← x2/2
x4 0 3 2 0 0 1 0 0 ← x3/3
x5 0 3 0 1 0 2 2 0
x6 0 0 1 1 0 0 0 0 ← x4/4
x7 0 0 0 0 4 0 0 5
x8 0 0 0 0 0 1 4 0

f1,2 = 5 f2,3 = 2 f2,5 = 3 f3,4 = 2 f4,2 = 0 f4,5 = 1


f4,6 = 1 f5,6 = 0 f5,7 = 4 f6,3 = 0 f6,8 = 1 f7,8 = 4
Zadatak 2.

Na slici sa forme je zadat problem pronalaženja maksimalnog protoka u


grafu koji je potrebno riješiti pretvarajući ga u problem linearnog
programiranja. Potrebno je i nacrtati graf koji odgovara matrici veza
sa forme.
Graf za ovu matricu veza izgleda kao na slici:

Pretvaranje ovog problema u problem LP vrši se na slijedeći način:


 Formira se skup varijabli koji odgovara granama i čije vrijednosti predstavljaju protoke
kroz grane.

 Funkcija cilja, koju je potrebno maksimizirati je zapravo vrijednost protoka:


arg max F= x12 + x13

 Ograničenja se formiraju kako slijedi:

Jednakost ukupnog protoka iz izvora i u ponor – redundantno ograničenje:


x12 + x13 – x46 – x56 = 0
Ostali čvorovi moraju biti u ravnoteži. Koliko protoka u njih dođe
toliko mora izaći:

x12 + x32 – x24 – x25 = 0


x13 - x32 – x35 = 0
x24 + x54 – x46 = 0
x25 + x35 – x54 – x56 = 0

Još je potrebno dodati i ograničenja protoka kroz grane

0 ≤ x12 ≤5
0 ≤ x13 ≤2
0 ≤ x24 ≤3
0 ≤ x25 ≤2
0 ≤ x32 ≤1
0 ≤ x35 ≤3
0 ≤ x46 ≤2
0 ≤ x54 ≤1
0 ≤ x56 ≤5
Najkraći put
 Najkraći put (najmanje težine) između čvorova grafa

 Najkraći putevi iz jednog čvora

 Najkraći putevi do jednog čvora

 Najkraći put između dva čvora

 Najkraći put između više parova


Zadatak 3.

Zadat je problem pronalaženja najkraćeg puta u grafu od čvora 1 do čvora 6


koji je potrebno riješiti pretvarajući ga u problem linearnog programiranja.
Potrebno je i nacrtati graf koji odgovara datoj matrici veza.

062000
003300
050010
004003
010002
000000

Pretvaranje ovog problema u problem LP vrši se na slijedeći način:


Formira se skup varijabli koji odgovara granama i čije vrijednosti mogu biti 0 (grana
nije u najkraćem putu) ili 1 (grana jeste dio najkraćeg puta).
Funkcija cilja, koju je potrebno minimizirati je:
arg min S=6x12 + 2x13 + 3x23 + 3x24 + 5x32 + x35 + 4x43+ 3x46 + x52 + 2x56

Ograničenja se formiraju kako slijedi (grane koje izlaze iz čvorova idu sa znakom minus,
a koje ulaze u čvorove sa znakom plus):

Iz početnog čvora (1) izlazi samo jedna grana:


– x12 – x13 = – 1

U krajnji čvora (6) ulazi samo jedna grana:


x46 + x56 = 1

U ostale grane ili ne ulazi i iz njih ne izlazi niti jedna grana ili u njih ulazi i iz njih izlazi
tačno jedna grana:
x12 + x32 + x52 – x23 – x24 = 0
x13 + x23 + x43 – x32 – x35 = 0
x24 – x43 – x46 = 0
x35 - x52 – x56 = 0

x12, x13, x23, x24, x32, x35, x43, x46, x52, x56 ≥ 0

Rješavanjem ovog LP problema dobije se najkraći put: x13 - x35 - x56, dužine 5.
Bellmanov - Algoritam

 Potrebno je da graf bude pravilno numerisan

 Prvi korak - renumeracija grafa

 Drugi korak – Bellmanov algoritam

 Najkraći putevi do jednog čvora (iz ostalih)

60
Renumeracija čvorova

 Inicijalno se rang svih čvorova postavlja na 0

 Rang čvora u koji ne ulazi ni jedna grana je 0

 Rang ostalih čvorova se računa kao maksimum od rangova svih čvorova iz


kojih se može stići u ovaj čvor uvećanih za jedan

 Ovo računanje se ponavlja kroz iteracije dok ne prestanu promjene ranga


čvorova

 Ciklički graf se ne može renumerisati

61
Renumeracija - Primjer
U prethodnom grafu:
Uklonili smo granu 3-2 3
Promjenili orjentaciju grane 2-5 2 4
6 4 3
3
1 1
6
2 2
3 1 5

Rang čvora 1 je 0
Rang čvora 2 je max{rang(1)+1} = max{0+1} = 1
Rang čvora 3 je max{rang(1)+1,rang(2)+1,rang(4)+1} = 2
Rang čvora 4 je max{rang(2)+1} = 2
Rang čvora 5 je max{rang(2)+1,rang(3)+1} = 3
Rang čvora 6 je max{rang(4)+1,rang(5)+1} = 4

62
Iteracija I
Rang čvora 1 je 0
Rang čvora 2 je max{rang(1)+1} = max{0+1} = 1
Rang čvora 3 je max{rang(1)+1,rang(2)+1,rang(4)+1} = 2
Rang čvora 4 je max{rang(2)+1} = 2 3
2 4
Rang čvora 5 je max{rang(2)+1,rang(3)+1} = 3
Rang čvora 6 je max{rang(4)+1,rang(5)+1} = 4 6 4 3
3
II iteracija 1 1
6
Rang čvora 1 je 0
2
Rang čvora 2 je max{rang(1)+1} = 1 2
3 1 5
Rang čvora 3 je max{rang(1)+1,rang(2)+1,rang(4)+1} = 3
Rang čvora 4 je max{rang(2)+1} = 2
Rang čvora 5 je max{rang(2)+1,rang(3)+1} = 4
Rang čvora 6 je max{rang(4)+1,rang(5)+1} = 5

III iteracija
Rang čvora 1 je 0
Rang čvora 2 je max{rang(1)+1} = 1
Rang čvora 3 je max{rang(1)+1,rang(2)+1,rang(4)+1} = 3
Rang čvora 4 je max{rang(2)+1} = 2
Rang čvora 5 je max{rang(2)+1,rang(3)+1} = 4
Rang čvora 6 je max{rang(4)+1,rang(5)+1} = 5
U posljednjoj iteraciji nije bilo promjena => kraj

Nova numeracija (samo mjenjamo 3 i 4)

3
2 3
6 4 3
3
1
1 6
2 2
4 1 5

64
Bellmanov algoritam (unazad)

 Postavlja se kriterij za krajnju tačku fn=0

 Postavlja se vrijednost funkcije kriterija za neku tačku i:

fi=minj>i{xij+fj}
gdje je: j=n-1, n-2, ... ,1
xij – dužina veze i i j (ako je nema 0)

65
Bellman - Primjer
3
2 3
6 4 3
3
1
1 6
2 2
4 1 5
f6 = 0

f5 = min{x56+f6} = min{2 + 0} = 2

f4 = min{x45+f5} = min{1 + 2} = 3

f3 = min{x34+f4, x36+f6} = min{4+3, 3+0} = 3

f2 = min{x23+f3, x24+f4, x25+f5} = min{3+3, 3+3, 1+2} = 3

f1 = min{x12+f2, x14+f4} = min{6+3, 2+3} = 5


66
1 2 3 4 5 6
Najkraći put od 1 do 6 je 5 1 9 5
2 6 6 3
3 7 3
Put je 1-4-5-6 4 3
5 2
fj 5 3 3 3 2 0

3
2 3
6 4 3
3
1
1 6
2 2
4 1 5

67
Dijkstra - algoritam
Najkraći putevi iz jednog čvora do ostalih

1. Početnom čvoru se pridruži stepen jednak 0


2. Svim čvorovima do kojih se može doći iz početnog čvora za jedan korak
dodjele se stepeni koji su jednaki dužinama grana koje spajaju čvorove
sa početnim čvorom.
3. Između ovih čvorova bira se sada čvor sa najmanjim stepenom i taj
stepen postaje stalni stepen tog čvora.
4. Nakon toga se svim čvorovima u koje se može stići za jedan korak iz
čvorova sa stalnim stepenom dodijele privremeni stepeni. Analogno
ovome bira se slijedeći čvor koji dobija stalni stepen.
5. Postupak se ponavlja dok svi potencijali u mreži ne dobiju stalni stepen
(veći od 0).

Iznos stepena predstavlja najkraću udaljenost od početnog do datog čvora.

68
Dijkstra – Primjer
oo oo
3
2 4
6 4 3
0 3 5
1
1 6 oo
2 2
3 1 5
oo oo

69
6 oo
3
2 4
6 4 3
0 3 5
1
1 6 oo
2 2
3 1 5
2 oo

70
6 oo
3
2 4
6 4 3
0 3 5
1
1 6 oo
2 2
3 1 5
2 3

71
4 oo
3
2 4
6 4 3
0 3 5
1
1 6 5
2 2
3 1 5
2 3

72
4 7
3
2 4
6 4 3
0 3 5
1
1 6 5
2 2
3 1 5
2 3

73
4 7
3
2 4
6 4 3
0 3 5
1
1 6 5
2 2
3 1 5
2 3

74
4 7
3
2 4
6 4 3
0 3 5
1
1 6 5
2 2
3 1 5
2 3

75
4 7
3
2 4
6 4 3
0 3 5
1
1 6 5
2 2
3 1 5
2 3

76
3
2 4
6 4 3
3 5
1
1 6
2 2
3 1 5

Čvor 1 2 3 4 5 6
Stepen 0     
Preth. - - - - - -

77
3
2 4
6 4 3
3 5
1 1 6
2 2
3 1 5

Čvor 1* 2 3 4 5 6
Stepen 0 6 2   
Preth. - 1 1 - - -

78
3
2 4
6 4 3
3 5
1
1 6
2 2
3 1 5

Čvor 1* 2 3* 4 5 6
Stepen 0 6 2  3 
Preth. - 1 1 - 3 -

79
3
2 4
6 4 3
3 5
1
1 6
2 2
3 1 5

Čvor 1* 2 3* 4 5* 6
Stepen 0 4 2  3 5
Preth. - 5 1 - 3 5

80
3
2 4
6 4 3
3 5
1
1 6
2 2
3 1 5

Čvor 1* 2* 3* 4 5* 6
Stepen 0 4 2 7 3 5
Preth. - 5 1 2 3 5

81
3
2 4
6 4 3
3 5
1
1 6
2 2
3 1 5

Čvor 1* 2* 3* 4 5* 6*
Stepen 0 4 2 7 3 5
Preth. - 5 1 2 3 5

82
3
2 4
6 4 3
3 5
1
1 6
2 2
3 1 5

Čvor 1* 2* 3* 4* 5* 6*
Stepen 0 4 2 7 3 5
Preth. - 5 1 2 3 5

83
Minimalno povezujuće stablo
 Minimum spanning tree (MST)

 Drvo – skup grana grafa

 Najkraće drvo (minimalno povezujuće stablo) – skup grana grafa najkraće


dužine koji povezuje sve čvorove u grafu

 Algoritmi rješavanja
 Prim
 Kruskal
Primov algoritam
1. Izaberi proizvoljan početni čvor

2. Nađi njemu najbliži čvor i taj čvor postaje dio podgrafa

3. Nađi podgrafu najbliži slobodni čvor,

4. Ponavljaj postupak 3. dok svi čvorovi ne budu uključeni u podgraf, pri


čemu se ne smije zatvoriti petlja

5. Rezultat je najkraće drvo

85
Prim – naivni algoritam

 5 čvorova, 9 grana

2
3 6

7 3
1
5 8
3
2 10

5 4 4

86
 Izaberimo 1 kao početni čvor
 Najbliži mu je čvor 5 (udaljenost 2)

2
3 6

7 3
1
5 8
3
2 10

5 4 4

87
 Najbliži čvorovi podgrafu su 2 i 4, udaljeni po 3 (i svejedno koji izaberemo)
 Uzmimo 2

2
3 6

7 3
1
5 8
3
2 10

5 4 4

88
 Najbliži čvor podgrafu je 4 (udaljen 3)

2
3 6

7 3
1
5 8
3
2 10

5 4 4

89
 Preostali čvor je 3 i najbliže ga je povezati sa čvorom 2 (udaljenost 6)

2
3 6

7 3
1
5 8
3
2 10

5 4 4

90
 Svi čvorovi su povezani dobili smo drvo i to najkraće
 Dužina je 2 + 3 +3 +6 = 14

2
3 6

7 3
1
5 8
3
2 10

5 4 4

91
Prim – matrica

0 3 7 3 2
3 0 6 8 5
A= 7 6 0 10 oo
3 8 10 0 4
2 5 oo 4 0
0 3 7 3 2
3 0 6 8 5
7 6 0 10 oo
3 8 10 0 4
2 5 oo 4 0
Prim – Poboljšana verzija
0
1
8
oo 13
6 oo
2 10
6 7
17
11
16
3 5
oo oo
14 4 5

oo

94
0
1
8
oo 13
6 8
2 10
6 7
17
11
16
3 5
13 16
14 4 5

oo

95
0
1
8
10 13
6 8
2 10
6 7
17
11
16
3 5
11 7
14 4 5

17

96
0
1
8
10 13
6 8
2 10
6 7
17
11
16
3 5
11 7
14 4 5

97
0
1
8
6 13
6 8
2 10
6 7
17
11
16
3 5
11 7
14 4 5

98
0
1
8
6 13
6 8
2 10
6 7
17
11
16
3 5
11 7
14 4 5

99
0
1
8
6 13
6 8
2 10
6 7
17
11
16
3 5
11 7
14 4 5

100
0
1
8
oo 13
6 oo
2 10
6 7
17
11
16
3 5
oo oo
14 4 5

oo
Čvor 1 2 3 4 5 6
Stepen 0     
Preth. - - - - - -

101
0
1
8
oo 13
6 8
2 10
6 7
17
11
16
3 5
13 16
14 4 5

oo
Čvor 1* 2 3 4 5 6
Stepen 0  13  16 8
Preth. - - 1 - 1 1

102
0
1
8
10 13
6 8
2 10
6 7
17
11
16
3 5
11 7
14 4 5

17
Čvor 1* 2 3 4 5 6*
Stepen 0 10 11 17 7 8
Preth. - 6 6 6 6 1

103
0
1
8
10 13
6 8
2 10
6 7
17
11
16
3 5
11 7
14 4 5

5
Čvor 1* 2 3 4 5* 6*
Stepen 0 10 11 5 7 8
Preth. - 6 6 5 6 1

104
0
1
8
6 13
6 8
2 10
6 7
17
11
16
3 5
11 7
14 4 5

5
Čvor 1* 2 3 4* 5* 6*
Stepen 0 6 11 5 7 8
Preth. - 4 6 5 6 1

105
0
1
8
6 13
6 8
2 10
6 7
17
11
16
3 5
11 7
14 4 5

5
Čvor 1* 2* 3 4* 5* 6*
Stepen 0 6 11 5 7 8
Preth. - 4 6 5 6 1

106
0
1
8
6 13
6 8
2 10
6 7
17
11
16
3 5
11 7
14 4 5

5
Čvor 1* 2* 3* 4* 5* 6*
Stepen 0 6 11 5 7 8
Preth. - 4 6 5 6 1

107
Kruskalov algoritam

1. Poredati sve grane po veličini

2. Dodati u drvo prvu neiskorištenu granu po veličini

3. Ponavljati 2 sve dok u drvetu ne bude grana za jedan manje od broj


čvorova, pazeći da se ne zatvori petlja

4. Rezultat je najkraće drvo

108
Kruskal – primjer

10
2 4
5 20

1 20 6
5
10
30 15
3 5
15
10
2 4
5 20

1 20 6
5
10
30 15
3 5
15
10
2 4
5 20

1 20 6
5
10
30 15
3 5
15
10
2 4
5 20

1 20 6
5
10
30 15
3 5
15
10
2 4
5 20

1 20 6
5
10
30 15
3 5
15
10
2 4
5 20

1 20 6
5
10
30 15
3 5
15

Dužina je 5 + 5 +10 +10 + 15 = 45


Kruskal – rješenje kroz matricu - nepovoljno

1
1 0 5 30 oo oo oo
1
2 0 20 10 oo oo
1
3 0 10 15 oo
2 1
4 0 5 20
2 1
5 0 15
6 0

1 2 3 4 5 6
10
2 4
5 20

1 20 6
5
10
30 15
3 5

Grana Uzeti 1 2 3 4 5 6
(1, 2) da 1 1 0 0 0 0
(4, 5) da 1 1 0 2 2 0
(2, 4) da 2 2 0 2 2 0 Grana Uzeti 1 2 3 4 5 6
(3, 4) da 2 2 2 2 2 0 (1, 2) da 0 (2) 1 (1) 0 (1) 0 (1) 0 (1) 0 (1)
(3, 5) ne 2 2 2 2 2 0 (4, 5) da 0 (2) 1 (1) 0 (1) 0 (2) 4 (1) 0 (1)
(5, 6) da 2 2 2 2 2 2
(2, 4) da 0 (4) 1 (1) 0 (1) 1 (2) 4 (1) 0 (1)
(2, 3) ne 2 2 2 2 2 2
(4, 6) ne 2 2 2 2 2 2 (3, 4) da 0 (5) 1 (1) 4 (1) 1 (2) 4 (1) 0 (1)
(1, 3) ne 2 2 2 2 2 2 (3, 5) ne 0 (5) 1 (1) 4 (1) 1 (2) 4 (1) 0 (1)
(5, 6) da 0 (6) 1 (1) 4 (1) 1 (2) 4 (1) 5 (1)
(2, 3) ne 0 (6) 1 (1) 4 (1) 1 (2) 4 (1) 5 (1)
(4, 6) ne 0 (6) 1 (1) 4 (1) 1 (2) 4 (1) 5 (1)
(1, 3) ne 0 (6) 1 (1) 4 (1) 1 (2) 4 (1) 5 (1)
Mrežno planiranje
 Vođenje projekata
 Projekat – skup aktivnosti
• Trajanje
• Međuzavisnost
• Troškovi
• Resursi

 Analiza strukture
 Analiza vremena
 Analiza troškova
 Raspodjela resursa
Analiza strukture

 Konstrukcija mrežnog dijagrama

 Mrežni dijagram
 Čvorovi
 Grane

 Grane – aktivnosti

 Čvorovi – događaji (početak, kraj aktiv.)

118
Mrežno planiranje – Primjer 1
Mrežni dijagram –
Aktivnost Zavisi od
prestavljanje aktivnosti u grafu
A -
B A I

C A M

D A D H
K
E B
A C G
F C J L

G C F
B
H D
E
I D
J G,H
K G,H
L E,F,J
M I

119
Numerisanje mrežnog dijagrama

1. Numeriši rastući sve čvorove u koje ne ulaze grane

2. Prekriži grane koje izlaze iz obilježenih čvorova

3. Obilježi rastući sve čvorove u koje ulaze samo prekrižene grane

4. Ponavljaj 2 i 3 do kraja

120
7
I

3 M
D H
K

A C G
1 2 4 6 J
8
L
9
F
B
E
5
Analiza vremena - CPM

 Critical Path Method

 Kritični put – određuje trajanje projekta

 Skup međusobno zavisnih aktivnosti

 Procedura na primjeru

122
CPM Primjer

Aktivnost Zavisi od Vrijeme trajanja


A - 10
B A 6
C A 6
D A 10
E B 4
F C 20
G C 3
H D 14
I D 22
J G,H 4
K G,H 10
L E,F,J 8
M I 5

123
CPM – mrežni dijagram

7
I 22
42 M5
3
20
D 10 K 10
H 14

C6
1
A 10
2 4 G3 6 J4
8 L8
9
0 10 16 34 38 47
B6 F 20

E4

5
16

124
7
I 22
42 42 M5
3
20 20
D 10 K 10
H 14

C6
1
A 10
2 4 G3 6 J4
8 L8
9
0 0 10 10 16 19 34 35 38 39 47 47
B6 F 20

E4

5
16 35

125
7
I 22
42 42 M5
3
20 20
D 10 K 10
H 14

C6
1
A 10
2 4 G3 6 J4
8 L8
9
0 0 10 10 16 19 34 35 38 39 47 47
B6 F 20

E4

5
16 35

126
Najranije vrijeme početka i završetka aktivnosti

Aktivn Zavisi od Vrijeme Nr. Početak Nr. Kraj


ost trajanja
A - 10 0 10
B A 6 10 16
C A 6 10 16
D A 10 10 20
E B 4 16 20
F C 20 16 36
G C 3 16 19
H D 14 20 34
I D 22 20 42
J G,H 4 34 38
K G,H 10 34 44
L E,F,J 8 38 46
M I 5 42 47
Najkasnije vrijeme početka i kraja aktivnosti

Aktivn Zavisi Vrijeme Nr. Početak Nr. Kraj Nk. početak Nk. Kraj
ost od trajanja
A - 10 0 10 0 10
B A 6 10 16 29 35
C A 6 10 16 13 19
D A 10 10 20 10 20
E B 4 16 20 35 39
F C 20 16 36 19 39
G C 3 16 19 32 35
H D 14 20 34 21 35
I D 22 20 42 20 42
J G,H 4 34 38 35 39
K G,H 10 34 44 37 47
L E,F,J 8 38 46 39 47
M I 5 42 47 42 47
Nk. Kraj – Nr. Početak – Vrijeme trajanja = Rezerva (ukupna)

Aktiv Zavisi Vrijeme Nr. Početak Nr. Kraj Nk. početak Nk. Kraj Rezerva
nost od trajanja
A - 10 0 10 0 10 0
B A 6 10 16 29 35 19
C A 6 10 16 13 19 3
D A 10 10 20 10 20 0
E B 4 16 20 35 39 19
F C 20 16 36 19 39 3
G C 3 16 19 32 35 16
H D 14 20 34 21 35 1
I D 22 20 42 20 42 0
J G,H 4 34 38 35 39 1
K G,H 10 34 44 37 47 3
L E,F,J 8 38 46 39 47 1
M I 5 42 47 42 47 0
Kritični put – Niz aktivnosti bez rezerve

A–D–I–M
7
I

3 M
D H
K

A C G
1 2 4 6 J
8
L
9
F
B
E
5
Analiza vremena - PERT

 Program Evaluation and Review Technique

 Optimističko, pesimističko i najvjerovatnije trajanje aktivnosti

 Stohastički model

 Opet se traži kritični put



 Procedura na primjeru

131
PERT - Primjer

Br. Aktivnost Prethodnik


A Izrada 1. seminarskog
B Priprema i polaganje 1. parcijalnog
C Priprema i polaganje 1. testa
D Priprema i polaganje 2. testa C
E Izrada 2. seminarskog A
F Odbrana 1. seminarskog A
G Priprema i polaganje 2. parcijalnog B; D
H Odbrana 2. seminarskog E
I Usmeni F; G

132
E
H
A F
B G I
C D

133
Numerisanje mrežnog dijagrama

E 5
2
H
A F
B G I
1 4 6 7
C D
3

134
 Različita trajanja

Br. Aktivnost Pret. Opt. Vjer. Pes.


A Izrada 1. Sem. 3 6 10
B 1. Parcijalni 2 3 4
C 1. Test 2 2 2
D 2. Test C 2 2 2
E Izrada 2. Sem. A 3 5 10
F Odbrana 1. Sem A 1 1 2
G 1. Parcijalni B; D 3 4 6
H Odbrana 2. Sem. E 1 1 2
I Usmeni F; G 3 4 5

135
 Očekivano vrijeme te = (Opt. + 4*Vjer. + Pes.) / 6
 Varijansa (odstupanje) δ2= ((Pes. – Opt.) / 6)2

Br. Pret. Opt. Vjer. Pes. Oček. Var.


A 3 6 10 6,17 1,36
B 2 3 4 3 0,11
C 2 2 2 2 0
D C 2 2 2 2 0
E A 3 5 10 5,5 1,36
F A 1 1 2 1,17 0,03
G B; D 3 4 6 4,17 0,25
H E 1 1 2 1,17 0,03
I F; G 3 4 5 4 0,11

136
 Rezervu (kritični put) računamo koristeći te

Br. Pret. Oče. Nr.poč Nr. kraj Nk.poč Nk. kraj S (Slack)
A 6,17 0 6,17 0 6,17 0
B 3 0 3 1,67 4,67 1,67
C 2 0 2 0,67 2,67 0,67
D C 2 2 4 2,67 4,67 0,67
E A 5,5 6,17 11,67 6,17 11,67 0
F A 1,17 6,17 7,34 7,67 8,84 1,5
G B; D 4,17 4 8,17 4,67 8,84 0,67
H E 1,17 11,67 12,84 11,67 12,84 0
I F; G 4 8,17 12,17 8,84 12,84 0,67

137
Kritični put: A – E – H

E 5
2
H
A F
B G I
1 4 6 7
C D
3

Mogu se računati i drugi statistički parametri projekta

138

Hvala na pažnji!

You might also like