• Nie Znaleziono Wyników

wybierz z aktualnego ciągu ostatni wierzchołek, który nie ma etykiety „zamknięty”, 2.2

N/A
N/A
Protected

Academic year: 2021

Share "wybierz z aktualnego ciągu ostatni wierzchołek, który nie ma etykiety „zamknięty”, 2.2"

Copied!
4
0
0

Pełen tekst

(1)

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

WSTĘP DO INFORMATYKI (4) J.Sikorski Strona 1 / 4

Metody algorytmiczne W ę d r u j i s p r a w d z a j

Prosty przegląd struktury danych np. w celu znalezienia największego elementu ze zbioru danych przechowywanych w tej strukturze:

iteracja → np. wektor, lista

iteracje zagnieżdżone → np. tablice wielowymiarowe, listy list itp.

rekurencja → np. drzewa

Przegląd struktury = budowanie ciągu zawierającego wszystkie obiekty w strukturze Drzewa można przeglądać iteracyjnie:

Algorytm przeglądu drzewa w głąb (budowanie ciągu zawierającego wszystkie wierzchołki drzewa):

1. wstaw korzeń jako pierwszy element ciągu,

2. powtarzaj co następuje, aż do nadania korzeniowi etykiety „zamknięty”:

2.1. wybierz z aktualnego ciągu ostatni wierzchołek, który nie ma etykiety „zamknięty”,

2.2. jeśli wybrany wierzchołek nie ma potomstwa, które jeszcze nie zostało dopisane do ciągu, to nadaj mu etykietę „zamknięty”, w przeciwnym przypadku dopisz do ciągu pierwszego (licząc od lewej) jego potomka, który jeszcze nie występuje w ciągu.

Algorytm przeglądu drzewa wszerz (budowanie ciągu zawierającego wszystkie wierzchołki drzewa):

1. nadaj etykietę „nowy” wszystkim wierzchołkom drzewa, 2. wstaw korzeń jako pierwszy element ciągu,

3. dopóki w tworzonym ciągu występuje wierzchołek z etykietą „nowy”, powtarzaj co następuje:

3.1. wybierz z aktualnego ciągu pierwszy wierzchołek, który ma etykietę „nowy”, dodaj do ciągu wszystkich jego potomków w kolejności od lewej i usuń dla tego wierzchołka etykietę „nowy”.

1 2

3 4

5 6 7

8 1

9

10 11

Przegląd drzewa w głąb

1

2 3 4

5 6 7 8

1

9 10 11

Przegląd drzewa wszerz

Przykład metody ”wędruj i sprawdzaj” - znajdowanie największej przekątnej w wielokącie wypukłym

1

2

4 3 5

6

N - liczba wierzchołków

Struktura danych dla opisu wielokąta - tablica dwuwymiarowa:

1 2 3 ... N X x1 x2 x3 ... xN

Y y1 y2 y3 ... yN

Co przeglądamy? Np. tablicę długości wszystkich odcinków pomiędzy wierzchołkami.

1 2 3 ... N 1 d12 d13 ... d1N

2 d21 d23 d2N

3 d31 d32 d3N

N dN1 dN2 dN3 ...

Przejrzenie górnej trójkątnej połowy tablicy (liczba elementów N(N − 1)/2) pozwala znaleźć element o największej wartości.

(2)

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

WSTĘP DO INFORMATYKI (4) J.Sikorski Strona 2 / 4

Ale można inaczej:

1 2

3 4

5 6

1 2

4 3 5

6

1 2

3 4

5 6

1 2

3 4

5 6

1 2

4 3 5

6

1 2

4 3 5

6 d24

d25

d35

d36 d13

d14

A B C

D E F

Czyli dla 6 wierzchołków wystarczy 6 zamiast 15 kroków ( 15 = 6(6−1)/2 )

D z i e l i z w y c i ę ż a j

Jeśli nie możesz uporać się z rozwiązaniem zadania w całości, to spróbuj dzielić je na mniejsze o takiej samej strukturze i stosuj rekurencyjnie algorytm rozwiązywania. Uzyskane rozwiązania małych zadań łącz w rozwiązania tych zadań, które były wcześniej dzielone.

Przykład metody ”dziel i zwyciężaj” - sortowanie przez scalanie Dane: nieuporządkowana N elementowa lista

procedura sortuj-listę L;

1. jeśli L zawiera tylko jeden element, to jest posortowana;

2. w przeciwnym razie wykonaj co następuje:

2.1. podziel listę L na dwie połowy L1 i L2; 2.2. wywołaj sortuj-listę L1;

2.3. wywołaj sortuj-listę L2;

2.4. scal posortowane listy L1 i L2 w jedną posortowaną listę;

3. wróć do poziomu wywołania.

Przykładowy schemat scalania:

5 12 17 7 20 21

5 7 12 17 20 21

Przykładowy schemat metody:

15 7 45 11 4 34

15 7 45 8 12 11 4 34

8 12

15 7 45 8 12 11 4 34

15 7 45 8 12 11 4 34

PODZIAŁ

PODZIAŁ PODZIAŁ

7 15 8 45 11 12 4 34

7 8 15 45 4 11 12 34

SCALANIE SCALANIE

4 7 8 11 12 15 34 45 SCALANIE

S S S S

P P P P

(3)

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

WSTĘP DO INFORMATYKI (4) J.Sikorski Strona 3 / 4

M e t o d a z a c h ł a n n a

Istnieją zadania, których rozwiązanie może być budowane z elementów dobieranych kolejno według zasady „idź naprzód, łap najlepsze z tego co pod ręką i nigdy potem nie oddawaj tego co już masz”.

Przykład metody „zachłannej”- wyznaczanie minimalnego drzewa rozpinającego w grafie Problem polega na znalezieniu najtańszej sieci połączeń wiążącej wszystkie podane punkty.

3

10

26

7

4

12 17 14

13 15

8 6 16

9 11

Spójny graf z wagami krawędzi

3

10 7

4

13

6 9

11

Minimalne drzewo rozpinające (koszt: 63)

Przykładowa realizacja metody zachłannej:

3

10 3

3

10 7

4 6

9 3

10 7

4 6

3

10

4 6 3

10

4

3

10 7

4

13

6 9

11 3

10 7

4 6

9 11

A B C D

E F G H

Algorytm:

1. wybierz najkrótszy odcinek drogi

2. powtarzaj co następuje, aż do połączenia wszystkich punktów:

2.1. wybierz najkrótszy odcinek spośród tych odcinków, które łączą jedno z już połączonych miast z jakimkolwiek miastem jeszcze nie połączonym

P r o g r a m o w a n i e d y n a m i c z n e Zasada (optymalności Bellmana):

jeżeli znamy najlepszą drogę przejścia od punktu początkowego do punktu końcowego prowadzącą przez kolejne punkty, to każdy fragment tej drogi pomiędzy dowolnym punktem pośrednim a punktem końcowym jest najlepszą drogą przejścia od tego punktu do punktu końcowego.

Przykład metody ”programowania dynamicznego” - znajdowanie najkrótszej ścieżki w grafie

Problem polega na znalezieniu najkrótszej ścieżki, która wykorzystuje dostępne połączenia i łączy dwa wskazane punkty w podanej sieci połączeń jednokierunkowych.

A B

C E

F

D

G 5

3 14

2 3 11

6 7

6 5

7 7

Skierowany graf acykliczny (spójny)

A B

C E

F

D

G 3

6 6 Ścieżka wyznaczona metodą

zachłanną (koszt: 15)

A B

C E

F

D

G

5 3

5

Ścieżka najkrótsza (koszt: 13)

(4)

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

WSTĘP DO INFORMATYKI (4) J.Sikorski Strona 4 / 4

Realizacja metody:

L(X) – oznacza długość najkrótszej drogi z punktu X do punktu G ; chcemy wyznaczyć L(A).

Algorytm:

1 faza

Dla każdego punktu w sieci połączeń wyznacz wartość L(X), zaczynając od punktu docelowego i cofając się w każdym kroku o jedno połączenie dalej od punktu docelowego (zapamiętuj przy tym dla każdego punktu, jakie połączenie należy wybrać, aby przejść najkrótszą drogę od niego do punktu docelowego);

2 faza

Zacznij budować ścieżkę od punktu początkowego posługując się kolejno wskazaniami jakie połączenia tworzą najkrótszą ścieżkę od przechodzonych punktów do punktu docelowego.

Działanie algorytmu dla przykładowego zadania:

• L(G) = 0

• L(F) = 7,

• L(E) = 5,

• L(D) = min ( 6, 7 + L(E) ) = min ( 6, 12 ) = 6,

• L(B) = min ( 3 + L(E), 2 + L(F) ) = min ( 8, 9) = 8,

• L(C) = min ( 11 + L(B), 6 + L(D), 7 + L(E) ) = min ( 19, 12, 12) = 12,

• L(A) = min ( 14 + L(D), 3 + L(C), 5 + L(B) ) = min ( 20, 15, 13) = 13.

Cytaty

Powiązane dokumenty

Tego typu uwaga z miejsca dyskwalifikuje całe wywody — w sensie Wittgensteina obrazem nie jest wyrażenie, a zdanie, a, co więcej, autor myli „ma miejsce” z „może

zapotrzebowania dziennego na ilość spożywanych kalorii, spisz co jesz w ciągu.. jednego dnia wejdź na stronę : https://kalkulatorkalorii.net/kalkulator-kalorii i oblicz ile

Dowolna komórka w dywanie, znajdująca się w i-tej kolumnie i j-tym wierszu, to nic innego niż iloczyn najniższego elementu w kolumnie (liczby Fibonacciego f i ) i wartości

Założenie: najefektywniejsze rozwiązanie stosu za pomocą tablicy – szczyt stosu to ostatni element wstawiony tablicy począwszy od miejsca o indeksie 0 (jeśli liczba elementów

FAKT: Na ogół jest to działanie bez sensu, bo i tak musimy wpisać punkt na li- stę kandydatów do najmniejszej i największej wartości funkcji, wyliczyć wartość funkcji w tym

Jeśli chcemy wyrównać tekst do lewej strony dokumentu, wybierzemy Wyrównaj do lewej, lub skrót klawiszowy Ctrl + L, a jeśli do prawej – wybieramy Wyrównaj do prawej lub

1.Wyskok na dowolne podwyższenie z lądowaniem stabilnym - obunóż 2.Wyskok na dowolne podwyższenie z lądowaniem stabilnym - jednonóż 3.Wyskok na dowolne podwyższenie z

że obecność tak się nieobecnością wypełnia że chłód tak od dawnego ciepła taje ze dni tak się dniami minionymi krzepią że zieleń zawsze tamtą zieleń przypomina...