background image

 

Zagadnienie TSP (komiwojażer)  złożoność obl. 

O(n

2

Zagadnienie to jest opisane: (G,a) 
G- graf, 

a – funkcja. 

+

R

E

a

 

G=(V,E) łuki i wierzchołki  
Alg. NN_TSP (

nearest neighbour TSP

Założenie: Każde miasto ma obchodzić raz. (tak działa ten alg.), Więc w 
rozwiązaniu każdy wierzchołek pojawi się tylko raz a co dalej prowadzi do 
wniosku, że rozwiązania będą permutacjami wszystkich miast. 

(

)

)

(

),...,

2

(

),

1

(

n

π

π

π

π

=

 

1.

=

:

)

1

(

π

dowolne miasto, 

2.Dla j=2 do n oblicz: 

{

}

)}}

1

(

),...,

1

(

{

{

:

min

arg

:

)

(

)

1

(

=

j

V

k

a

j

k

j

π

π

π

π

 

Złożoność obliczeniowa  dla kroku 2: 
Szukamy minimum od j =2 do n, więc 

[

]

1

...

)

2

(

)

1

(

1

+

+

+

n

n

C

 - jest to wielomian stopnia 2 , więc 

złożoność obliczeniowa wynosi 

O(n

2

).

 

Metoda optymalizacji lokalnej
Klasyczny (podstawowy) algorytm optymalizacji lokalnej (OL) 
1.Wybierz x

startowe

 i podstaw x:=x

st

( x

st

 wyznaczamy przy pomocy   

   algorytmu konstrukcyjnego) 

2.Spróbuj znaleźć x’ takie, że:(dla minimalizacji) 

)

(

'

_

_

)

(

)

'

(

x

N

x

dla

x

Q

x

Q

<

 - N(x) jest otoczeniem, 

3.Jeżeli istnieje x’ to podstaw x:=x’ i przejdź do kroku 2) 
Inaczej x

0

:=x 

, // x

0

 rozwiązanie optymalne w otoczeniu N(x) 

Algorytm MSLS (LO) (

Multiple Start Local Search

(algorytm ten wykorzystuje większą liczbę rozwiązań początkowych) 
(przykład dla minimalizacji) 
0.(krok podstawowy) 

=

:

min

Q

 (DDL –dostatecznie duża liczba) 

1.Wybierz x

st.

 I podstaw x:=x

st.

 

2.Spróbuj znaleźć x’ takie, że: 

)

(

'

_

_

)

(

)

'

(

x

N

x

dla

x

Q

x

Q

<

 

3.Jeśli istnieje x’ to x:=x’ i idź do punktu 2 
4.Podstaw 

{

}

)

(

,

min

:

min

min

x

Q

Q

Q

=

 , 

// Q(x) lokalnie optymalne 

Jeśli koniec 

(warunek stopu dla tego algorytmu był ponoć podawany na 

poprzednim wykładzie)

 to STOP inaczej idź do 1 

____________________________________________________________ 
Kolejny algorytm klasyczny: 

 

 

Algorytm ze zmiennym otoczeniem VNS (

Variable Neighbour Search

1.Wybierz p i q takie, że p<q<n 
2.Wybierz (x

startowe

) x

st

 i x:=x

st

 

3.Spróbuj znaleźć x’ 

)

(

)

'

(

x

Q

x

Q

<

 dla 

)

(

'

x

Np

x

 

-// najmniejszego otoczenia

 

4.Jeżeli istnieje x’ to x:=x’ i przejdź do 3 
5.Dla r=p+1 do q, spróbuj znaleźć x’ 

)

(

)

'

(

x

Q

x

Q

<

 dla 

)

(

'

x

Nr

x

 

// q nie może być zbyt duże bo 

rośnie czas obliczeń

 

6.Jeżeli znaleziono x’ to x:=x’ i przejdź do 3 
Inaczej .................

 

Algorytm TS 

(Tabu Search)

 

(eksploatuje pamięć, gdzie zawarte są 

informacje n/t procesu przeszukiwania) 

Rozwiązania, które podczas przeszukiwania uznaliśmy za optymalne 
umieszczamy na liście TL 

(Tabu List),

 jest to podstawowa zasada 

działania algorytmu TS. Istnieje jednak pewien problem z każdym 
krokiem na TL będzie pojawiać się coraz więcej rozwiązań, porównywanie 
ich za każdym razem powoduje powstanie DUŻYCH kosztów 
obliczeniowych. 

{

}

n

x

x

x

x

TL

,...,

,

2

1

=

 

Aby udoskonalić algorytm wprowadzono listę krótkoterminową – 
rozwiązania są na liście tylko kilka iteracji. 
T – parametr określający długość przebywania rozwiązania na liście TL. 
Na liście są umieszczane tylko atrybuty ruchu, które zabraniają pewnego 
typu przejścia. Może się jednak zdarzyć sytuacja, kiedy poprzez 
wprowadzenie ograniczeń nie będzie możliwe przejście do innych stanów 
leżących w bliskim sąsiedztwie rozwiązania znajdującego się na TL. Aby 
uniknąć takich sytuacji przeglądamy też rozwiązania zabronione i jeżeli 
wśród nich jest bardzo dobre rozwiązanie to zdejmujemy z niego 
kryterium 

TABU

. Opisane tutaj postępowanie nosi nazwę Kryterium 

aspiracji. 
Algorytm TS {

pamięć krótkotrwałą, kryterium aspiracji

1.Wybierz x

st

 i podstaw x

a

=x

st

, x

min

:=x

st

, Q

min

:=Q(x

st

// zapamiętanie 

bieżącego najlepszego rozw. 

TL:={0} 

// zbiór pusty 

2.Nowe rozwiązanie 

{

}

a

a

n

x

x

TL

x

x

N

x

x

Q

x

=

,

),

(

:

)

(

min

arg

:

 - dozwolone 

Stosujemy regułę największej poprawy 

(opisana wcześniej – patrz W2) 

{

}

TL

x

x

N

x

x

Q

x

a

tabu

=

),

(

:

)

(

min

arg

:

 - zabronione 

3.Przejście 

a) x

a

:=x

nowe

 jeżeli 

min

)

(

Q

x

Q

a

<

 to x

min

:=x

a

)

(

min

a

x

Q

Q

=

 

b) 

(kryterium aspiracji)

 

Jeżeli: 

min

)

(

Q

x

Q

zabr

<

 to: x

a

:=x

tabu

 , x

min

:=x

tabu

)

(

min

zabr

x

Q

Q

=

 

zdejmujemy status zabronione dla danego rozwiązania) 
4.Modyfikowanie TL 

{ }

a

x

TL

TL

=

:

 - 

// nie są to rozwiązania tylko atrybuty przejść 

oraz usuń rozwiązania, które było na TL dłużej niż T iteracji. 

5.Warunek stopu 

Jeżeli STOP 

(ponoć warunek STOP’u może być dowolny: np. gdy słońce 

wzejdzie na zachodzie to STOP) 

to drukuj: (x

min

, Q

min

 – 

najlepsze 

rozwiązania znalezione przez algorytm

Inaczej przejdź do 2. 
____________________________________________________________ 

MTSP

TSP

  

 

                       3 

(Multiple TSP – zagadnienie z wieloma komiwojażerami) 
1.mTSP 
a)m – liczba komiwojażerów znajdujących się w mieście początkowym o 
numerze (n+1) gdzie (n+1) jest też miastem końcowym. 
b)Każdy z komiwojażerów musi odwiedzić przynajmniej jedno miasto 
Każde miasto musi być odwiedzone

 

funkcja celu: minimalizacja łącznej długości drogi komiwojażerów. 
Odległość między miastami standardowo są opisane w tablicy 

[ ]

A

a

n

n

ij

=

+

+

_

1

)(

1

(

 

Zamieniamy problem MTSP na TSP

 

Zwiększamy pozornie liczbę miast (wprowadzamy dodatkowe pozorne 
miasto (n+2), które jest kopią miasta (n+1) ) 
Po wprowadzeniu dodatkowych miast musimy dla nich stworzyć tablicę. 
Powiększamy o m-1 miast, więc łącznie otrzymamy n+m miast. 
Tw1:

 

Dla każdej drogi l o skończonej długości zagadnienie jednego 
komiwojażera z n+m miastami odległość, których określa tablica A

m

 

istnieje droga do zagadnienia m – komiwojażerów z N+1 miastami 
określona przez macierz A o długości równej długości drogi l. 
2) m

*

≤≤≤≤

 mTSP 

m

*

 - zmienna decyzyjna 

od góry jest ograniczona liczba komiwojażerów (jest ich tyle, aby suma 
całkowitej długości trasy była minimalna, tak dobieramy liczbę 
komiwojażerów) 



 

m

*

 

 m komiwojażerów jest w mieście n+1 



 

każdy z m

*

 komiwojażerów odwiedza przynajmniej 

jedno miasto 
 każde miasto musi być odwiedzone 
, A,E,G takie same jak w poprzednim przypadku, 
dopuszczamy jednak przejścia z miasta pozornego do 

pozornego koszt=0, ten komiwojażer pozostanie w bazie, F=[0]. 
Tw2: 
Dla każdej drogi l o skończonej długości zagadnienie 1 komiwojażera z n+ 
m

*

 miastami (m

*

 - ograniczone z góry) określonym przez powyższą 

tablicę, istnieje droga zagadnienie m

*

m z m+1 miastami (m

*

 - określa 

nam liczbę komiwojażerów) – określone tablicą A o długość równej 
długości drogi l. 
 
 
 
Metoda podziału ograniczeń (B&B Breanch And Bound) 

4 

(Jeżeli obliczenia będą trwały do końca to otrzymamy rozwiązanie 
optymalne. Jeżeli przerwiemy obliczenia wcześniej to otrzymamy 
rozwiązanie przybliżone. Skracanie czasu obliczeń jest podstawową 
metodą optymalizacji w przypadku skomplikowanych problemów) 
 
Problem: 

{

}

)

(

:

)

min

)

(

P

X

x

x

Q

P

v

=

 

Dokonujemy podziału problemu P na mniejsze. Podziałem problemu P 
będziemy nazywać ciągi: 

q

P

P

P

,...,

,

2

1

 - jeżeli spełniony jest warunek: 

 

U

q

i

i

P

X

P

X

1

)

(

)

(

=

=

 , gdzie: 

{

}

)

(

:

)

(

min

)

(

i

i

P

X

x

x

Q

P

v

 

Często przyjmuje się: 

0

)

(

)

(

=

j

i

P

X

P

X

 - nie jest to warunek konieczny !!! 

Jeżeli spełniony jest powyższy warunek to obszar jest przeszukiwany tylko 
raz. 
Jeżeli rozwiążemy każdy podproblem to: 

)

(

min

)

(

i

P

v

P

v

=

Analiza podproblemu (

oparta na zasadzie relaksacji

(relaksacje przeprowadzamy tak długo aż otrzymamy problem 
rozwiązywalny w czasie wielomianowym) 

)

(

)

(

RP

X

P

X

 - X(RP) – zrelaksowany, X(P) – wyjściowy 

{

}

)

(

:

)

(

min

)

(

RP

X

x

x

Q

RP

v

=

 

Własność 1) 
Jeżeli 

0

)

(

0

)

(

=

=

i

P

X

RP

X

 (sprzeczny) -> z tego 

wynika pierwsze kryterium zamykania KZ1 
KZ1: Jeżeli X(RP

i

)=0  to P

i

 zamykamy. 

Własność 2) 

Jeżeli 

)

(

)

(

i

i

RP

v

P

v

 <- dalsze ograniczenie  dla 

)

(

i

P

v

 

KZ2 – drugie kryterium zamykania 
KZ2: Jeżeli 

*

)

(

v

RP

v

i

 (V*- 

wartość odcinająca, wartość funkcji celu 

najlepszego rozwiązania

) to P

i

 zamykamy. 

Warto na początku przy pomocy dobrych algorytmów znaleźć dobre 
rozwiązanie wtedy łatwiej będzie zamykać podproblemy (np. całe 
poddrzewa). 
____________________________________________________________

 

Własność 3) 

 

 

 

5 

Jeżeli rozwiązanie optymalne RP

i

 jest rozwiązaniem dopuszczalnym dla P

i

 

to rozwiązanie to jest rozwiązaniem optymalnym P

i

 czyli: 

)

(

)

(

i

i

RP

v

P

v

=

KZ3: Jeżeli rozwiązanie optymalne RP

i

 jest dopuszczalne dla P

i

 to P

i

 

zamykamy. 
(

otrzymaliśmy nowe rozwiązanie, trzeba sprawdzić czy nie jest lepsze od 

V*, ten warunek umieszczamy w KZ3 a nie w algorytmie ... trochę to 
dziwne .... ale prof.K.Wala tak chciał

Jeżeli 

)

(

i

RP

v

 jest lepsze od V* to 

)

(

:

*

i

RP

v

v

=

Algorytm podziału ograniczeń. 
Tworzymy listę kandydatów na której znajdują się wszystkie nie 
zamknięte problemy. 
Algorytm B&B 
1.

{ }

P

LK

=

:

 - LK – lista kandydatów 

=

:

*

v

 ( albo jeżeli znamy x

przybl. 

to 

)

(

*

przybl

x

Q

v

=

x

przybl 

znajdujemy pewnym algorytmem

) – V* - 

wartość odcinająca

 

2.Wybór kandydata 
Jeżeli 

}

0

{

=

LK

 to STOP V* jest rozwiązaniem optymalnym 

(

dokładniej V* jest wartością rozwiązania optymalnego, ale oczywiście za 

każdym razem kiedy zapamiętujemy wartość to pamiętamy też 
rozwiązanie jej odpowiadające i vice versa !!!

 ) 

Inaczej  

KP:=wybór z listy kandydatów

 (KP- kandydat problemu). 

Wyboru KP dokonujemy przy pomocy  reguł zdroworozsądkowych. 
1.Rozwiąż PKB (zrelaksowanego KP) stosując algorytm, który wyznacza 
rozwiązanie optymalne. 
2.Analiza KP za pomocą kryteriów 

KZ1, KZ2, KZ3

 

3.Jeżeli 

KP

 jest zamknięty to usuń z listy i przejdź do kroku 2 

Podziel KP

i

 i jego następniki dołącz do listy LK i przejdź do kroku 2. 

Algorytm szeregowania listowego (krótki wstęp) 

n

j

x

j

,...,

2

,

1

,

=

 - poszczególnym składowym przyporządkujemy 

priorytet W

j

,

j

j

w

x

→

(na podstawie pewnych niejasnych 

parametrów prawdopodobnie zależnych od problemu itp.) 
Składowe porządkujemy zgodnie z priorytetem -> otrzymujemy listę 
składowych. Kolejnym składowym z listy przyporządkowujemy max lub 
min (dopuszczalne) wartości. W ten sposób konstruujemy jedną ścieżkę 
(z korzenia drzewa do rozwiązania końcowego) 
____________________________________________________________ 
Algorytm SL (szeregowania listowego)  

                        6 

1.

j

 oblicz W

j

 (priorytet) 

2.Tworzymy listę 

‘L’

 – poszczególne składowe rozwiązania (zmienne 

decyzyjne) porządkujemy od największego/najmniejszego priorytetu 
Wybierz kolejną współrzędną i przedziel jej największą/najmniejszą 
dopuszczalną wartość (musi działać kryterium KZ1) 
Algorytm SL dla 0-1 KP(binarne plecakowe) i GKP(plecakowe) 
1.Uporządkuj obiekty (numery – nazwy obiektów) tak aby: 

j

n

n

w

a

c

a

c

a

c

w

=

=

...

2

2

1

1

1

 

2. Dla maksymalizacji: 
Dla j=1 do n wykonaj 
GKP: 

=

j

j

a

b

x

 0-1 KP:

 





=

j

j

a

b

x

,

1

min

 

j

j

x

a

b

b

=

:

 

- zmniejszamy pojemność plecaka

 

Znajdujemy rozwiązanie przybliżone, trzeba je oszacować -> relaksacja. 
Znalezione przez powyższy algorytm<-

(

)

SL

e

przybliżrz

Q

Q

 

SL

KP

GKP

Q

Q

v

UB

R

=

*

1

0

)

(

 

<- oszacowane 

Jak wygląda relaksacja dla tego problemu? Przyjmujemy, że przedmiot 
można podzielić. 
Oszacowanie dla GKP: 

(

)

1

1

a

b

c

GKP

R

v

=

 

(*** Przyjmuje się, że: 

j

j

a

,

 - są całkowite 

funkcja celu 

przyjmuje wartości całkowite ***) 

(

)

SL

Q

Q

a

b

c

GKP

R

v

=

*

1

1

 

TW: Dantzig’a 
Rozwiązanie optymalne  0-1 KP z relaksacją: 

1

0

j

x

 - tzn, że można uciąć przedmiot 

ma postać: 
(będzie tylko jedna współrzędna różna od 0 lub 1) 

s

j

dla

x

j

,...,

2

,

1

:

,

1

:

=

=

 

n

s

j

dla

x

j

,...,

2

:

,

0

:

+

=

=

 

Składowa s+1, ten przedmiot dzielimy. 

1

1

1

:

+

=

+

=

s

s

j

j

s

a

a

b

x

 - tyle ładujemy 

przedmiotu ile jest miejsca w plecaku, gdzie 

s-max liczba taka, że: 

=

s

i

j

j

b

a

. 

Wniosek: 

 

 

            7 

 

- cecha jest dlatego, że funkcja celu musi przyjąć wartość całkowitą. 

 
 
Złożoność obliczeniowa Algorytmu SL: 
SL 

)

log

(

n

n

O

 - musimy użyć algorytmu sortowania i to jest koszt 

sortowania, wszystkie algorytmy bazujące na SL mają podobną złożoność 
obliczeniową, są to bardzo szybkie algorytmy. 
Złożoność obliczeniowa. 
NP.
 – problemy decyzyjne (rozw. W czasie wielomianowym przez 
niedetermistyczną maszynę Turinga) 
P –problemy wielomianowe, odpowiedź uzyskuje się w czasie 
ograniczonym przez wielomian charakteryzujący problem. 
Zagadnienie NP. interpretujemy jako takie, które można rozwiązać 
przeglądając rozwiązania na drzewie stosując pełny przegląd rozwiązań 
częściowych za pomocą algorytmu cofania (Back Track Search ...) 
P – rozwiązanie problemu otrzymujemy w czasie ograniczonym przez 
wielomian 
Jak stwierdzić czy problem należy do klasy problemów wielomianowych? 



 

Wykazać, że algorytm znajduje rozwiązanie (TAK/NIE) 



 

Prześledzić złożoność algorytmu i wykazać, że 
złożoność jest wielomianowa 

Jeżeli warunki są spełnione to problem należy do P. 

NP

P

 - zachodzi 

NP

P

=

 - nie można stwierdzić (jak na razie prof. Wala nie znalazł 

odpowiedzi na to niezwykle fascynujące pytanie ...) 
NP.-zupełne 
Def:
 

(

) (

)

1

1

:

ln

P

P

NP

P

e

zupe

NP

P

 

W klasie NP. wyróżniamy klasę problemów trudnych. 
Z powyższej definicji wynika następujący wniosek: 

=

NP

P

istnieje algorytm wielomianowy dla 

.

zupel

NP

P

 

Jak wykazać , że badany problem jest problemem NP.-zupełnym? 

NP

P

?

2

, wiemy, że jakiś problem 

.

1

zupel

NP

P

 

wystarczy więc wykazać: 

(

)

.

2

1

2

zupel

NP

P

P

P

 

{

}

2

1

P

P

wszystkie

{

}

2

P

wszystkie

 

________________________________________________ 

Twierdzenia:  

 

             8 

TW1: Następujące problemy są NP.-trudne: 

1.PODZIAŁ: dany jest skończony zbiór T i liczby 

N

a

j

T

j

 

Pytanie czy 

T

s

takie, że 

=

s

j

s

T

j

j

j

a

a

 (tzn. czy można 

podzielić na dwa dokładnie równe) 

2.ZAŁADUNEK: dane są liczy całkowite 

n

a

a

a

,...,

,

2

1

 oraz b 

Pytanie czy 

{

}

n

s

,...,

1

 takie, że: 

b

a

s

j

j

=

 (czy można 

plecak dokładnie załadować) 
3.CYKL HAMILTONA: dane jest graf G zwykły/skierowany 
Pytanie czy istnieje cykl zwykły/skierowany HAMILTONA (jest to 
decyzyjna wersja TSP) 
Algorytm wyznaczanie Harmonogramowania 
Algorytm LPT 
1.
Uporządkuj zadania w ciąg 

(

)

)

(

),...,

1

(

n

π

π

π =

 , tak aby: 

)

1

(

)

(

+

j

j

P

P

π

π

 // O(nlogn) 

2.Dla i=1 do m podstaw T(i):=0  
3.j=1 do n wykonaj

{

}

{

}

m

i

i

T

i

,...,

1

:

)

(

min

arg

*

=

 

)

(

*

*

)

(

)

(

:

)

(

j

j

p

i

T

i

T

C

π

π

+

=

=

  // O(n) 

4.Oblicz 

j

j

c

C

max

max

=

,

LB

C

max

 

(

)

=

=

=

n

j

j

j

j

m

m

p

p

C

przerw

P

C

LB

C

1

max

max

*

max

,

max

max

|

|

 P

j

 -najdłuższe zadanie może limitować czas rozwiązania problemu. To 

oszacowanie obowiązuje dla każdego algorytmu bo otrzymaliśmy je za 
pomocą relaksacji. 
_________________________________________________________ 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

F

G

E

A

A

m

m

=

*

=

+

=

+



+

=

s

j

s

n

j

j

s

j

a

a

b

c

c

UB

1

1

1

1

:

background image

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Algorytm
 (

wyznaczający rozw. Dopuszczalne )

                      

1.podstaw j:=1, 

1

:

)

(

=

j

π

{

}

n

N

,...,

3

,

2

:

=

 - zbiór zadań 

jeszcze nie przydzielonych 

2.Jeżeli 

{ }

N

 wykonaj 

a)j=j+1, określ zbiór S (S – 

zbiór zadań swobodnych, których 

poprzedniki zostały już przydzielone)

 

/* 

{

}

N

i

then

E

ij

if

N

j

S

=

:

,

)

(

:

:

*/ 

)

(

:

*

S

wybór

j

=

 (wybieramy za pomocą jakiejś reguły) 

oraz

{ }

*

:

j

N

N

=

*

:

)

(

j

j

=

π

 

GAP (

uogólnione zagadnienie przydziału

j=1,2,...n i=1,2,...n 
 

[ ]

nxn

ij

c

 - koszt realizacji zadania i przy pomocy zasobu j 

[ ]

nxn

ij

a

 - ilość zasobu potrzebna do wykonania j-tego zadania za 

pomocą środka j 

[ ]

n

i

b

 - ilość zasobu jaki ma środek i 

Rozwiązanie jest dopuszczalne jeśli: 



 

Wszystkie zadania są wykonane, 



 

Nie przekroczone są koszty zasobów jakie mamy do 
dyspozycji 

Zmienna decyzyjna: 

=

WPP

i

j

if

x

ij

0

,

1

 

funkcja celu: 

∑∑

=

=

n

i

n

j

ij

ij

x

c

1

1

min

 (jest to wyrażenie liniowe) 

Ograniczenia: 



 

Każde zadanie musi być wykonane 

=

=

n

i

ij

x

1

1

 dla j=1,2,...n 



 

Ograniczenie na zasoby 

=

n

j

i

ij

ij

b

x

a

1

 dla i=1,2,...n 



 

{ }

j

i

x

ij

,

1

,

0

 

Jest to problem NP.-trudny (nie istnieje algorytm wielomianowy) 
_________________________________________________________________

 

Algorytm Dijkstry-Prim’a:  

 

                         

T – zbiór wierzchołków drzewa 

 
 

 

)

,

(

:

j

j

j

β

α

, gdzie 

}

:

min{

T

i

a

ij

j

=

β

, czyli najmniejsza odległość 

od wierzchołka j do jakiegoś wierzchołka w drzewie T 

}

}

,

{

:

{

E

j

i

V

i

N

j

=

- wierzchołki sąsiednie. 

1.początek: 

}

{

:

s

T

=

- wybieramy dowolny wierzchołek, 

=

:

A

 

2.początkowe cechowanie: 
dla każdego 

s

j

 ustal cechę 

)

,

(

j

j

β

α

 

jeżeli 

=

=

=

=

:

0

:

:

:

:

:

j

j

s

sj

j

j

s

N

j

a

s

N

j

β

α

β

α

 

3.powiększanie rozwiązania 

szukamy 

}

:

min{

T

j

j

β

 (wybór 

T

j

 gwarantuje brak cyklu) 

dodajemy wierzchołek 

}

:

min{

arg

:

*

T

j

j

j

=

β

 

*}

,

{

:

*}

{

:

*

j

A

A

j

T

T

j

α

=

=

 

jeżeli 

)

1

|

(|

|

|

=

=

n

A

n

T

 to stop (T=V) 

=

=

A

j

i

ij

a

A

Q

A

V

Q

}

,

{

)

(

)

,

(

 

4.zmiana cechowania 
Dla 

)

(

)

(

*

j

N

j

T

j

 wykonaj: 

 jeżeli 

*

jj

j

a

>

β

 to 

*

:

*,

:

jj

a

j

=

=

β

α

 

Przejdź do punktu 3.  (n-1 iteracji

Z

ŁOŻONOŚĆ OBLICZENIOWA ALGORYTMU

 

 

rozmiar problemu – parametr złożoności algorytmu ( w przypadku grafu – n) 
_________________________________________________________________ 
                                                             

 

 

            

B 

Def:  Funkcja 

)

(n

f

  jest  rzędu 

)

(n

W

    [

(

)

)

(n

W

O

]  jeżeli 

0

>

c

 

takie, że dla 

n

n

>

 zachodzi 

)

(

)

(

n

cW

n

f

 
Do oceniania czasu obliczeń bierzemy najgorszy przypadek danych 

[

]

[

]

=

+

+

+

+

+

+

+

+

=

1

...

)

2

(

)

1

(

)

1

(

1

...

)

2

(

)

1

(

)

(

3

2

1

n

n

c

n

c

n

n

c

n

f

 

c

n

n

n

c

n

c

c

n

+

+

=

+

+

=

β

α

2

2

2

3

1

)

1

(

)

1

(

)

(

 

złożoność stopnia wielomianowego 

)

(

2

n

O

 

C

1

-koszt wykonania porównania 

β

  podczas 

}

:

min{

T

j

j

β

 

C

2

-koszt operacji 

*}

,

{

:

*}

{

:

*

j

A

A

j

T

T

j

α

=

=

n

T

=

|

|

 

C

3

 - koszt

  

)

(

*

j

N

j

 

*

jj

j

a

>

β

*

:

*,

:

jj

a

j

=

=

β

α

 

Algorytm Dijkstry 
1.Początek 

=

=

=

=

:

},

{

:

,

0

:

},

{

:

0

0

0

j

p

t

p

V

T

s

p

s

 dla 

T

j

 

zmienna pomocnicza ostatni wierzchołek ost:=p

0

 

2.Poprawa górnego oszacowania (w każdym kroku będziemy poprawiać 

oszacowanie t

j

)Dla 

T

j

wykonaj: 

jeżeli 

j

j

ost

ost

t

a

s

<

+

,

 to podstaw 

j

ost

ost

j

a

s

t

.

:

+

=

  

poprzednik

ost

j

=

:

)

(

 

3.Powiększanie S 

*

:

,

:

*},

{

:

*},

{

:

},

:

min{

arg

:

*

*

*

j

ost

t

s

j

S

S

j

T

T

T

j

t

j

j

j

j

=

=

=

=

=

 

4.Czy koniec? 
Jeżeli 

0

*

k

j

=

 to stop, optymalna długość drogi wynosi S

k0

; inaczej idź do 2.

 

Analiza złożoności obliczeniowej algorytmu: 

[

] [

]

)

1

(

)

1

(

)

(

)

1

(

1

...

)

2

(

)

1

(

1

...

)

2

(

)

1

(

)

(

3

2

2

1

2

2

1

+

+

=

+

+

+

+

+

+

+

+

=

n

c

n

c

c

n

c

n

n

c

n

n

c

n

f

n

 

wielomian 2-go stopnia 

)

(

2

n

O

 SP

 P

 

C

1

, C

2

,C

3

- koszt wykonania odpowiednio punktów 2, 3, 4 

 
 
 
A

LGORYTM 

F

LOYD

A 

– koszt połączenia pomiędzy dwoma węzłami O(n

3

)  

Połączenia  mogą  mieć  wagi  ujemne,  ale  suma  wag  w  każdym  konturze 
(wieloboku skierowanym) musi być dodatnia. 

k

ij

d

-  minimalna  długość  drogi  pomiędzy  wierzchołkami  i,  j,  która 

wykorzystuje jako wierzchołki pośrednie tylko wierzchołki 

}

,...,

2

,

1

{

k

 

algorytm rekurencyjny:

=

E

j

i

E

j

i

a

d

ij

ij

,

,

0

 

0

:

0

=

ii

i

d

 

1.

1

:

=

k

  

=

0

:

,

ij

j

i

r

tablica  pomocnicza,  służy  do  znalezienia  najkrótszej 

drogi  (wyznacza  przez  jakie  wierzchołki  trzeba  przechodzić  szukając  drogi 
pomiędzy 2 zadanymi wierzchołkami) 

2.dla 

n

j

i

,

1

 wykonaj 

oceniamy 

}

,

min{

:

1

1

1

+

=

k

kj

k

ik

k

ij

k

ij

d

d

d

d

; modyfikujemy r

i,j

  

 

 

 

jeżeli k=n to stop; inaczej k++ i przechodzimy do punktu 2. 
 
A

LGORYTM 

CPM (critical path method) 

Procedura 1 – numerowanie wierzchołków grafu tak, ażeby wierzchołek z 
numerem większym nie poprzedzał wierzchołka z numerem mniejszym 
1.przydziel wierzchołkowi swobodnemu (bez poprzedników) nr. i=1 
2.usuwamy łuki łączące wierzchołki ponumerowane z nieponumerowanymi 
3.wierzchołkom swobodnym przydzielamy kolejne numery i+1,i+2... 
4.jeżeli nie ponumerowaliśmy wszystkich wierzchołków to idz do 2. 
Złożoność algorytmu CPM 
Procedura 1: C

1

- numeracja jednego wierzchołka, C

2

- czas usunięcia łuku 

)

(

)

1

(

]

1

...

)

2

(

)

1

[(

)

(

2

2

1

2

1

2

1

n

O

n

n

c

n

c

n

n

c

n

c

n

f

=

+

=

+

+

+

+

=

 

procedury 2, 3, 4 – O(n

2

 
Z

ŁOŻONOŚĆ OBLICZENIOWA 

 PODSUMOWANIE

Teoria złożoności obliczeniowej zajmuje się analizą modeli procesów 
obliczeniowych pod względem ich efektywności 

1.

 

złożoność obliczeniowa algorytmów 

2.

 

ustalanie klas problemów 

 
Tw: 

Problem P ma złożoność obliczeniową wielomianową 

(

)

P

P

 jeżeli  istnieje algorytm A taki, że 

)

(

)

,

(

n

p

n

A

t

<

, gdzie p(n)- 

wielomian n, 

{

}

n

z

P

z

n

z

A

t

n

A

t

=

=

)

(

rozmiar

:

)

,

,

(

max

)

,

(

)

,

,

(

n

z

A

t

- czas rozwiązania zadania o rozmiarze n za pomocą algorytmu A.  

_________________________________________________________________

 

 

 

 

 

 

 

!

log

!

2

n

h

n

h

 

 

n

e

n

c

n

!

 (ze wzorów Stirlinga) 

[

]

)

log

(

4

.

1

log

n

n

O

h

n

n

n

c

k

 

 
Tw: o minimalnej złożoności obliczeniowej algorytmu 
Jeżeli  rozwiązanie  problemu  zależy  istotnie  od  n  danych  to  jego  złożoność 
obliczeniowa jest co najmniej rzędu n. 
Z

AGADNIENIE ZAŁADUNKU

1. Liniowe zagadnienie załadunku (zagadnienie plecakowe -KP) 
a)binarne zagadnienie załadunkowe ( 

0-1 KP ) 

b- udźwig plecaka (lub objętość) 

n

j

,...,

2

,

1

=

- przedmioty 

a

j

- waga j-tego przedmiotu (lub objętość) 

C

j

- zysk z danego przedmiotu 

zmienna decyzyjna 

=

0

1

j

x

 

j

 do plecaka 

w przeciwnym przypadku 

Zysk: 

=

n

j

j

j

x

c

1

max

 

Ograniczenia: 

=

n

j

j

j

b

x

a

1

 

}

1

,

0

{

j

j

x

 

}

1

,

0

{

=

j

X

 

________________________________________________________________ 

v( 0-1 KP )

{

}

=

X

x

x

c

j

j

:

max

 

                        

E 

{

}

=

=

b

x

a

D

x

X

j

j

n

:

}

1

,

0

{

- wartość dopuszczalna 

 
b)uogólnione zagadnienie plecakowe ( 

GKP ) 

b – udźwig plecaka  

n

j

,...,

2

,

1

=

- przedmioty 

a

j

- waga j-tego przedmiotu 

C

j

- zysk z danego przedmiotu 

X

j

- liczba przedmiotów typu j do plecaka 

Zysk: 

=

n

j

j

j

x

c

1

max

 

Ograniczenia: 

 

=

n

j

j

j

b

x

a

1

0

j

j

x

 i całkowite  

j

j

a

b

x

 

v( GKP )   

×

×

=

n

a

b

a

b

D

,...,

1

,

0

...

,...,

1

,

0

1

  

{

}

=

b

x

a

D

x

X

j

j

:

 

2. Nieliniowe zagadnienie załadunku 
funkcja celu: 

max

)

(

)

(

1

=

=

n

j

j

j

x

g

x

Q

 

ograniczenie: 

=

n

j

j

j

j

j

j

x

d

x

b

x

a

1

0

całkowite / ciągłe 

Z

AMIANA PROBLEMU DECYZYJNEGO 

(

NIELINIOWEGO

)

 NA WIELOETAPOWY

         
dj-maksymalna liczba elementów typu j 

 

y-ilość miejsca w plecaku

0

n

y

 

funkcja przejścia 

n

j

x

a

y

y

j

j

j

j

,...,

2

,

1

1

=

=

 

=

=

=

n

n

n

n

n

n

n

n

n

x

n

n

a

y

d

y

x

x

x

g

y

f

b

y

n

n

1

1

0

1

1

1

,

)

(

*

*

)

(

max

)

(

]

,

0

[

ξ

ξ

 

{

} {

}

)

(

)

(

max

)

(

)

(

max

)

(

]

,

0

[

1

1

2

1

1

1

1

1

1

1

0

2

2

2

1

1

+

=

+

=

n

n

n

n

n

n

n

n

x

n

n

x

a

y

f

x

g

y

f

x

g

y

f

b

y

n

n

ξ