Metody algorytmiczne Metoda poszukiwania i wędrówki

Transkrypt

Metody algorytmiczne Metoda poszukiwania i wędrówki
Technologia Informacyjna
Wykład 5
Strona 1 z 24
Metody algorytmiczne
Metoda poszukiwania i wędrówki
Należy „obejść” wszystkie elementy pewnej
struktury danych: wektora, macierzy, drzewa.
- algorytm sumowania zarobków, należało sprawdzić listę wszystkich pracowników;
- algorytm sortowania drzewiastego, należało
obejść binarne drzewo poszukiwań.
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
1
Technologia Informacyjna
Wykład 5
Strona 2 z 24
Metoda poszukiwania i wędrówki
Znajdowanie najdłuższej przekątnej wielokąta
algorytm naiwny
5
4
6
3
2
1
Wiersz
/Kolumna
1
2
3
4
5
6
1
-
1-2
1-3
1-4
1-5
1-6
2
2-1
-
2-3
2-4
2-5
2-6
3
3-1
3-2
-
3-4
3-5
3-6
4
4-1
4-2
4-3
-
4-5
4-6
5
5-1
5-2
5-3
5-4
-
5-6
6
6-1
6-2
6-3
6-4
6-5
-
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
2
Technologia Informacyjna
Wykład 5
Strona 3 z 24
Metoda poszukiwania i wędrówki
Znajdowanie najdłuższej przekątnej wielokąta
5
4
6
3
2
1
Porównujemy przekątne 5-2 i 5-1
Pierwsze przybliżenie: L := 5-2
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
3
Technologia Informacyjna
Wykład 5
Strona 4 z 24
Metoda poszukiwania i wędrówki
Znajdowanie najdłuższej przekątnej wielokąta
Dokonujemy pierwszego obrotu prostymi równoległymi w kierunku zgodnym z ruchem wskazówek
zegara
5
4
6
3
2
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
1
4
Technologia Informacyjna
Wykład 5
Strona 5 z 24
Metoda poszukiwania i wędrówki
Znajdowanie najdłuższej przekątnej wielokąta
Porównujemy wskazaną przekątną 5-3 z dotychczasowym przybliżeniem rozwiązania zadania L = 5-2
5
4
6
3
2
1
Jeśli wskazana przekątna jest dłuższa od dotychczasowego rozwiązania przyjmujemy je za nowe przybliżenie. Przyjmujemy L := 5-3
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
5
Technologia Informacyjna
Wykład 5
Strona 6 z 24
Metoda poszukiwania i wędrówki
Znajdowanie najdłuższej przekątnej wielokąta
5
4
6
3
A
2
4
3
4
3
2
3
1
C
3
1
D
4
6
1
6
2
5
E
1
5
4
6
6
B
2
5
2
5
4
3
2
1
5
F
6
1
Pełne obejście wielokąta w kierunku zgodnym z ruchem wskazówek zegara
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
6
Technologia Informacyjna
Wykład 5
Strona 7 z 24
Metoda dzielenia
Rozwiązywane zadanie dzielimy na kilka mniejszych zadań tego samego rodzaju. Uzyskane rozwiązania częściowe łączymy w jedną całość.
1. Algorytm „Wieże Hanoi”;
2. Algorytm sortowania drzewiastego;
3. Znajdowanie minimum i maksimum na nie posortowanej liście;
4. Sortowanie przez scalanie.
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
7
Technologia Informacyjna
Wykład 5
Strona 8 z 24
Metoda dzielenia
Znajdowanie minimum i maksimum na nieposortowanej liście – interpretacja graficzna
15 5 64 8 2
Min:=2
Max:=64
15 5 64
8 2
Min:=5
Max:=64
Min:=2
Max:=8
15 5
64
Min:=5
Max:=15
Min:=64
Max:=64
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
8
Technologia Informacyjna
Wykład 5
Strona 9 z 24
Metoda dzielenia
Znajdowanie minimum i maksimum na nieposortowanej liście – algorytm rekurencyjny
procedura znajdź-min-i-maks-w L:
1. jeśli lista L składa się z jednego elementu, to nadaj MIN
i MAX właśnie jego wartość; jeśli L składa się z dwóch
elementów, to nadaj MIN wartość mniejszego z nich, a
MAX - większego;
2. w przeciwnym razie wykonaj, co następuje:
2.1. podziel listę L na dwie części, L1 oraz L2; w
przypadku gdy lista L zawiera parzystą liczbę
elementów, obie części są równo liczne, w przeciwnym razie lista L1 zawiera o jeden element
więcej aniżeli lista L2;
2.2. wywołaj znajdź-min-i-maks-w L1, umieszczając
otrzymane w wyniku wartości w MIN1, MAX1;
2.3. wywołaj znajdź-min-i-maks-w L2, umieszczając
otrzymane w wyniku wartości w MIN2, MAX2;
2.4. nadaj MIN mniejszą wartość z MIN1 oraz MIN2;
2.5. nadaj MAX większą wartość z MAX1 oraz MAX2;
3. wróć z wartościami MIN i MAX.
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
9
Technologia Informacyjna
Wykład 5
Strona 10 z 24
Metoda dzielenia
Algorytm sortowania przez scalanie –
sposób postępowania
15 5 64 8 12 11 4 35 86 2
15 5 64 8 12
15 5 64
15 5
64
5 15
64
5 15 64
Podział
8 12
8 12
8 12
5 8 12 15 64
11 4 35 86 2
11 4 35
11 4
35
4 11
35
86 2
2 86
4 11 35
Scalanie
2 86
2 4 11 35 86
2 4 5 8 11 12 15 35 64 86
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
10
Technologia Informacyjna
Wykład 5
Strona 11 z 24
Metoda zachłanna
Poszukujemy rozwiązania, które w każdym momencie jest najlepsze z wszystkich możliwych (uzyskiwane rozwiązania są optymalne lokalnie).
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
11
Technologia Informacyjna
Wykład 5
Strona 12 z 24
Metoda zachłanna
Problem oszczędnego budowniczego linii kolejowych –
problem znajdowania minimalnego drzewa rozpinającego
Mamy sieć miast, które należy połączyć liniami kolejowymi.
- Wszystkie miasta należy połączyć linią kolejową;
- Sumaryczna długość wszystkich połączeń kolejowych powinna być jak najmniejsza;
- Nie każde miasto musi mieć bezpośrednie połączenie z innymi miastami;
- Odległości podano jedynie dla par miast możliwych do bezpośredniego połączenia;
- Wszystkie skrzyżowania i rozjazdy realizować
można jedynie w węzłach – miastach.
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
12
Technologia Informacyjna
Wykład 5
Strona 13 z 24
Metoda zachłanna
Problem oszczędnego budowniczego linii kolejowych – sieć miast (graf etykietowany)
26
3
17
13
12
10
14
7
15
9
8
4
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
6
16
11
13
Technologia Informacyjna
Wykład 5
Strona 14 z 24
Metoda zachłanna
Problem oszczędnego budowniczego linii kolejowych – wybór pierwszego odcinka linii kolejowej
26
3
17
13
12
10
14
7
15
9
8
4
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
6
16
11
14
Technologia Informacyjna
Wykład 5
Strona 15 z 24
Metoda zachłanna
Problem oszczędnego budowniczego linii kolejowych – wybór drugiego odcinka linii kolejowej
26
3
17
13
12
10
14
7
15
9
8
4
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
6
16
11
15
Technologia Informacyjna
Wykład 5
Strona 16 z 24
Metoda zachłanna
Problem oszczędnego budowniczego linii kolejowych – wybór trzeciego, czwartego i piątego odcinka linii kolejowej
26
3
17
13
12
10
14
7
15
9
8
4
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
6
16
11
16
Technologia Informacyjna
Wykład 5
Strona 17 z 24
Metoda zachłanna
Problem oszczędnego budowniczego linii kolejowych – wybór szóstego odcinka linii kolejowej
26
3
17
13
12
10
14
7
15
9
8
4
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
6
16
11
17
Technologia Informacyjna
Wykład 5
Strona 18 z 24
Metoda zachłanna
Problem oszczędnego budowniczego linii kolejowych – minimalna sieć (drzewo) rozpinająca;
całkowity koszt: 63
26
3
17
13
12
10
14
7
15
9
8
4
6
16
11
- Jest to drzewo, na którym rozpięty jest graf;
- Jest to najtańsze z drzew (suma etykiet znajdujących się przy krawędziach jest najmniejsza);
- Nie zawiera cykli.
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
18
Technologia Informacyjna
Wykład 5
Strona 19 z 24
Algorytmy dynamiczne
Znajdujemy rozwiązanie optymalne w sensie globalnym.
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
19
Technologia Informacyjna
Wykład 5
Strona 20 z 24
Algorytmy dynamiczne
Problem zmęczonego wędrowca –
problem znajdowania minimalnej ścieżki
Mamy układ miast połączonych siecią dróg
- Należy znaleźć najkrótsze połączenie z punktu A
do B;
- Linie w grafie są skierowane (graf skierowany);
- Z dowolnego miasta można dostać się do dowolnego innego miasta (graf jest spójny);
- Nie można wędrować w kółko, brak cykli (graf
acykliczny).
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
20
Technologia Informacyjna
Wykład 5
Strona 21 z 24
Algorytmy dynamiczne
Problem zmęczonego wędrowca – sieć miast
C
5
2
3
A
F
11
3
E
7
7
5
14
D
6
7
6
B
G
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
21
Technologia Informacyjna
Wykład 5
Strona 22 z 24
Algorytmy dynamiczne
Problem zmęczonego wędrowca – rozwiązanie
metodą zachłanną
C
5
2
3
A
F
11
3
E
7
7
5
14
D
6
7
6
B
G
Całkowity koszt przejścia z miasta A do miasta B –
15 jednostek
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
22
Technologia Informacyjna
Wykład 5
Strona 23 z 24
Algorytmy dynamiczne
Problem zmęczonego wędrowca – rozwiązanie
metodą dynamiczną
C
5
2
3
A
F
11
3
E
7
7
5
14
D
6
7
6
B
G
Całkowity koszt przejścia z miasta A do miasta B –
13 jednostek
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
23
Technologia Informacyjna
Wykład 5
Strona 24 z 24
Algorytmy dynamiczne
Problem zmęczonego wędrowca – rozwiązanie
metodą dynamiczną
Wprowadźmy L(X) – oznacza długość najkrótszej
ścieżki z miasta X do docelowego miasta B.
C
5
2
3
A
F
11
3
E
7
7
5
14
D
6
7
6
B
G
Odległość z A do B zapisać możemy w następujący
sposób:
L(A) = min(5+L(C), 3+L(D), 14+L(G))
Gdzie:
L(C) = min(2+L(F), 3+L(E))
L(D) = min(6+L(G), 7+L(E), 11+L(C))
L(G) = min(6, 7+L(E))
Mariusz B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
24