Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Algorytmy – c.d. złożoność algorytmów struktury danych Przy opracowywaniu wykładu wykorzystano m.in.:

Коpie: 1
Algorytmy – c.d. struktury danych złożoność algorytmów Przy opracowywaniu wykładu wykorzystano m.in.:

Podobne prezentacje


Prezentacja na temat: "Algorytmy – c.d. złożoność algorytmów struktury danych Przy opracowywaniu wykładu wykorzystano m.in.:"— Zapis prezentacji:

1 Algorytmy – c.d. złożoność algorytmów struktury danych Przy opracowywaniu wykładu wykorzystano m.in.: Wstęp do informatyki (materiały Wyższej Szkoły Informatyki) J. Sikorski

2 Przypomnienie Schematy blokowe Służą one do zapisu algorytmu w obrazowy sposób podając kierunek procesu obliczeń. Najważniejsze używane symbole: BLOK DECYZYJNY ODCZYT LUB ZAPIS DANYCH START, STOP PROCES (CZYNNOŚĆ)

3 Zmienne to informacje, której nadano strukturę. Związane są z obszarem pamięci przechowującym tę zmienną w postaci ciągu bitów. O sposobie prezentacji tych danych decyduje typ zmiennej. Najbardziej oczywistym typem są zmienne liczbowe (przechowujące liczby). - zmienne całkowite; - zmienne zmiennoprzecinkowe; Typy zmiennych charakteryzują się: - zakresem (np. od -128 do + 127) - dokładnością (np. maksymalnie do 10 liczb po przecinku) - zbiorem operacji, które można na zmiennych wykonywać (np. dzielenie zmiennoprzecinkowe jest niedozwolone (problematyczne) dla zmiennych całkowitych). Pojęcie zmiennej Przypomnienie

4 Zmienne w informatyce symbolizowane są przez ciąg znaków i cyfr (ciąg alfanumeryczny), bez odstępów (spacji), bez polskich znaków, z możliwym znakiem podkreślenia, nie zaczynający się od cyfry. Dokładne zasady związane są z przyjęciem konkretnego systemu (np. danego języka programowania). Poprawne ciągi, które mogą symbolizować zmienne to np.: ala, nazwa_zmiennej, zmienna3, malyKotek, pi Pojęcie zmiennej Przypomnienie

5 Najważniejszą cechą zmiennych jest to, że mogą one przechowywać DANE, które musimy przypisać. Bardzo ważne jest określenie tzw. instrukcji przypisania, symbolizowana najczęściej przez symbol := (dwukropek i równa się). Kompletne instrukcje na ogół kończy się znakiem ; (średnik). Na przykład: Liczba := 5;// przypisaliśmy zmiennej o nazwie Liczba wartość 5 Liczba := 10;// zmieniliśmy zdanie i teraz ma wartość 10 Liczba := Liczba + 2; // Teraz do poprzedniej wartości dodaliśmy 2, więc Razem 12 Pojęcie zmiennej Przypomnienie

6 Struktury danych Algorytmy wymagają danych początkowych i tworzą nowe dane.

7 Co to są dane? Znamy już wstępnie pojęcie tzw. zmiennej… Ogólnie dane są zdefiniowane jako to wszystko co może być przetwarzane umysłowo lub komputerowo. Są to więc informacje, które posiadają określoną strukturę.

8 Struktury danych Jedna z gałęzi informatyki zajmuje się strukturami danych, czyli organizacją danych różnych typów w logicznie powiązane ze sobą struktury.

9 Dane numeryczne: całkowite, rzeczywiste –posiadają określony zakres i dokładność Tablice Listy Stosy Kolejki Drzewa Grafy Sposoby reprezentacji danych Przykłady tablic Przykłady list Przykład stosu Przykład kolejki Przykład drzewa Przykład grafu

10 Tablice Tablicą nazywamy złożoną strukturę danych, która zawiera zbiór elementów tego samego typu. Wyróżniamy: tablice jednowymiarowe tablice wielowymiarowe

11 Tablice jednowymiarowe Elementy tego samego typu znajdują się pod wspólną nazwą. Konkretny element wskazujemy za pomocą tzw. indeksu. 15 [0] 5 [1] [2] 12 [3] 55 [4] 51 [5] 8 [6] 12 [7] Tablica o nazwie TAB, 8 elementów (liczby całkowite, ze znakiem), numerowane od 1 Jeśli chcemy w polu o indeksie [3] wpisać inną wartość (np. 20), to piszemy: TAB[3] := 20; 15 [0] 5 [1] [2] 20 [3] 55 [4] 51 [5] 8 [6] 12 [7]

12 Tablice jednowymiarowe – wyszukiwanie minimum 15 [0] 5 [1] [2] 12 [3] 55 [4] 51 [5] 8 [6] 12 [7] min:=tablica[0]; i:=1; i >= N min>tablica[i] min:=tablica[i]; i:=i+1; START STOP WYPISZ min TAK NIE Do zastanowienia: Jak wyglądałoby wyszukiwanie maksymalnego (minimalnego) elementu w tablicy uporządkowanej rosnąco?

13 Tablice wielowymiarowe Np. jeśli chcemy zapisać tzw. tabliczkę mnożenia możemy utworzyć tablicę dwuwymiarową (macierz) 10 na Do poszczególnych elementów odwołujemy się poprzez podanie indeksu kolumny i wiersza. Np.: TAB_2D[4][5] := 20; TAB_2D[7][8] := 56;

14 Tablice wielowymiarowe Tablice wielowymiarowe nie muszą ograniczać się do dwuwymiarowych. Mogą posiadać także nieregularne kształty. Przykłady tablic wielowymiarowych

15 Drzewa Struktury drzewiaste są stosowane, gdy chcemy uporządkować dane zgodnie z ich hierarchiczną strukturą. Przykłady drzew: Drzewo genealogiczne Układ plików na dysku

16 Drzewa Dla każdego drzewa wyróżniony jest jeden, charakterystyczny element- korzeń. Korzeń nie posiada elementów poprzednich. Dla każdego innego elementu określony jest dokładnie jeden element poprzedni. Dla każdego elementu oprócz ostatnich, tzw. liści istnieje co najmniej jeden element następny (jest to węzeł). Jeżeli liczba następnych elementów wynosi dokładnie 2 to drzewo nazywamy binarnym. Znaczenie drzew jest bardzo duże i ze względu na swoje własności drzewa są stosowane praktycznie w każdej dziedzinie informatyki.

17 Grafy W informatyce grafem nazywamy strukturę składającą się z węzłów (wierzchołków, oznaczanych przez V) wzajemnie połączonych za pomocą krawędzi (oznaczonych przez E). Grafy dzielimy na grafy skierowane i nieskierowane: Graf nieskierowanyGraf skierowany Jak można się domyślić, drzewa są szczególnym przypadkiem grafów. Grafy są bardzo popularne w nowoczesnej algorytmice.

18 Przykłady grafów Sieć komputerowa

19 Przykłady grafów Schemat metra w Moskwie

20 Przykłady grafów Drzewo genealogiczne

21 Przykłady grafów Pajęczyna

22 Przykłady grafów Historia systemu LINUX

23 STOS Stos to struktura umożliwiająca wstawianie i usuwanie danych dostępnych jedynie w tzw. wierzchołku stosu. Czyli w wierzchołku stosu znajdują się zawsze dane, które zostały wstawione do stosu w trakcie ostatnio wykonanej operacji wstawiania. Operacje to: POP (pobierz ze stosu) PUSH (połóż na stosie) Struktury takie jak stosy, listy i kolejki mogą być różnie realizowane. Jedną z możliwości jest wykorzystanie tablic, inną struktur dynamicznych.

24 KOLEJKA Kolejka, to struktura w której można wstawić element za tym, który trafił do struktury jako ostatni, a usuwać ten, który został wstawiony jako pierwszy. Operacje to: WSTAW(na koniec kolejki) POBIERZ(z początku kolejki) WSTAW POBIERZ

25 LISTY LISTY to uogólniony przypadek kolejek, stosów i podobnych struktur. Opisuje ona liniową strukturę elementów, powiązanych ze sobą. Przykłady list

26 Złożoność algorytmów

27 Który algorytm jest lepszy? Do danego rozwiązania prowadzi zwykle więcej niż jedna droga. Jak więc oceniać alternatywne sposoby rozwiązania problemu? Podstawowym parametrem algorytmu jest jego złożoność.

28 Złożoność Algorytmy efektywne dają rozwiązania w rozsądnym czasie oraz zużywają rozsądną ilość zasobów. Co to jest rozsądny czas? –Milisekunda, godzina, rok…?

29 Złożoność jest to ilość zasobów potrzebnych do działania algorytmu. W zależności od rozważanego zasobu mówimy o złożoności czasowej lub pamięciowej. Ilość potrzebnych zasobów będzie się różnić w zależności od konkretnego przypadku. Złożoność Złożoność czasowa mówi, ile kroków obliczeniowych trzeba wykonać dla zakończenia algorytmu. Za podstawę określania złożoności przyjmuje się najbardziej operację, której trzeba wykonać najwięcej. Np. mnożenie, dzielenie, pierwiastek… Jest to OPERACJA PODSTAWOWA Złożoność pamięciowa mówi, jaką maksymalnie część danych i wyników pośrednich trzeba w ramach danego algorytmu przechowywać w pamięci operacyjnej.

30 Przykład 3 liczby – a, b, c zapisane w trzech komórkach pamięci (zmiennych) x, y, z Zadanie: Przemieścić liczby tak, aby spełnione było (x) <= (y) <= (z) czyli uporządkować rosnąco. Np. (1, 5, 2); (2, 6, 1) itp.

31 Przykład Jakie są więc wszystkie możliwości uporządkowania? Aby rozwiązać zadanie będą nam potrzebne operacje testu oraz zamiany

32 Przykład Przedstawmy sekwencje testów, które pozwolą stwierdzić, z jakim przypadkiem mamy do czynienia?

33 Przykład Teraz, w zależności od konkretnego przypadku, wybieramy odpowiednią sekwencję zamian.

34 Przykład Ile wykonamy poszczególnych operacji? TestyZamiany Najgorzej Najlepiej

35 Przykład Czas wykonania tego zadania zależy więc od ułożenia danych wejściowych. Możemy określić przypadki najgorszego ułożenia i najlepszego ułożenia. Mówi się o pesymistycznej i optymistycznej złożoności. Dla algorytmów najczęściej przyjmuje się tzw. złożoność średnią (2,7 testów, 1,2 permutacji) W przykładzie rozmiar danych zawsze był taki sam (3 liczby). Zmieniła się konfiguracja danych. Dla większości algorytmów rozmiar danych też może się zmieniać. Problemem jest wówczas określenia złożoności w zależności od rozmiaru danych.

36 Przykład Na przyjęciu dyplomatycznym bawi się N ambasadorów. Ich uściski rąk są rejestro- wane przez fotografa po kolei. Ile czasu zajmie taka sesja zdjęciowa? Algorytm: Ambasador 1 podaje rękę amba- sadorom 2, 3, 4... aż do N. Ambasador 2 po-daje rękę ambasadorom 3,4,...,N. W ten spo-sób dochodzimy do ambasadorów N-1 i N, którzy jako ostatni wymieniają uścisk. Złożoność czasowa: N(N-1)/2 jednostek (suma ciągu arytmetycznego)

37 Złożoność Problemy do których rozwiązania potrzebna jest podobna ilość zasobów łączymy w klasy złożoności.

38 Złożoność Bierzemy pod uwagę asymptotyczne tempo wzrostu, czyli to jak zachowuje się funkcja określająca złożoność dla odpowiednio dużych, granicznych rozmiarów danych wejściowych, ignorując zachowanie dla małych danych.

39 Złożoność W algorytmice najczęściej pojawia się tzw. O-notacja. Jeśli F(N) jest funkcją złożoności algorytmu to spełnienie zależności oznacza, że algorytm ma złożoność rzędu f(N) (O (f(N) )

40 Złożoność – funkcja f(x) jest ograniczonaograniczona – funkcja f(x) jest ograniczona przez funkcję logarytmicznąfunkcję logarytmiczną – funkcja f(x) jest ograniczona przez funkcję liniowąfunkcję liniową – funkcja f(x) jest ograniczona przez funkcję potęgową lub wielomianfunkcję potęgowąwielomian – funkcja f(x) jest ograniczona przez funkcję wykładnicząfunkcję wykładniczą – funkcja f(x) jest ograniczona przez silnięsilnię IDEAŁ TO ZŁOŻONOŚĆ LINIOWA

41 Porównanie niektórych złożoności:

42 Zapotrzebowanie na czas

43 Trudne zadania Dla pierwszoklasisty: 7 * 8 = ??? Dla faceta: Jak umówić się z Dodą? Dla studenta: wszystko jest łatwe…

44 Trudne zadania Czy istnieją zadania trudne dla komputerów?

45 Baaardzo trudne zadania - NP Problem P to problem decyzyjny, dla którego rozwiązanie można znaleźć w czasie wielomianowym. Problem NP to problem decyzyjny, dla którego rozwiązanie można zweryfikować w czasie wielomianowym.

46 Baaardzo trudne zadania - NP Przykłady problemów NP. – układanki 2D

47 Baaardzo trudne zadania - NP Przykłady problemów NP. – problem komiwojażera

48 Baaardzo trudne zadania - NP Przykłady problemów NP. – droga Hamiltona

49 Baaardzo trudne zadania - NP Przykłady problemów NP. – przydział ograniczonego miejsca

50 Baaardzo trudne zadania - NP Pytanie, czy klasa P jest tym samym, co NP jest prawdopodobnie najważniejszym otwartym problemem w całej teorii informatyki. Dla pierwszej osoby, która rozwiąże ten problem przewidziano nagrodę w wysokości miliona dolarów

51 Rekurencja

52 Funkcję rekurencyjną nazywamy taką funkcję która wywołuje samą siebie. Funkcja taka musi posiadać warunek zakończenia rekurencji. Jeżeli takiego warunku by nie posiadała funkcja wywoływała by siebie bez końca. Funkcja taka jest wykonywana trochę wolniej niż funkcja nierekurencyjna, ale kod jest zdecydowanie krótszy i prostszy w niektórych wypadkach.

53 Silnia wczytaj n; n = 0 zwróć n*(n-1)! zwróć 1 POWRÓT START TAK NIE

54 Wieże Hanoi Problem: Przełożyć krążki, przenosząc po jednym, z jednego patyka na drugi z zachowaniem docelowej kolejności (mniejsze na większych). Dla 3:

55 Wieże Hanoi Rozwiązanie sprowadza się do odpowiedniego podziału problemu w sposób rekurencyjny.

56 Ciąg Fibonacciego F = … F(5)= F(4) + F(3) = F(3) + F(2) + F(2) + F(1) = F(2) + F(1) + F(1) + F(0) + F(1) + F(0) + F(1)= F(1) + F(0) + F(1) + F(1) + F(0) + F(1) + F(0) + F(1) = = 5 - pułapka rekurencji! Ciąg Fibonacciego używany jest do określanie idealnej populacji zwierząt (pszczoły,króliki), jest również używany w pseudogeneratorach liczb losowych oraz w zaawansowanych obliczeniach matematycznych.

57 Stabilność numeryczna Określa ona wrażliwość wyniku końcowego na błędy zaokrągleń w trakcie obliczeń oraz na dokładność danych początkowych. Przykłady: Komputer wykonuje operacje liczbowe ze skończoną precyzją. Może się okazać, że wynik działania to dalej Podobnie, realizacja dzielenia jako mnożenie przez odwrotność jest mało stabilna numerycznie dla argumentów bliskich zeru.

58 Problem STOPU Problemem stopu nazywamy sytuację, gdy dla danego algorytmu należy stwierdzić, czy program realizujący dany algorytm zatrzyma się. Pytanie może odnosić się albo do konkretnych danych wejściowych, albo do wszystkich możliwych danych. Jeśli program zatrzymuje się dla wszystkich danych, to mówimy, że ma własność stopu. Problem stopu jest często bardzo trudny do rozstrzygnięcia dla niektórych algorytmów.

59 Świat nie jest czarno-biały… W latach 60-tych naszego stulecia logikę rozszerzono na pojęcia logiki rozmytej (fuzzy logic) oraz zbiorów przybliżonych. W obu przypadkach chodzi o opis wiedzy niepewnej, nieprecyzyjnej. W klasycznej teorii zbiorów obiekty należą do zbioru lub nie. W teorii zbiorów rozmytych możliwa jest częściowa przynależność do zbioru, np. zbiór osób określanych jako wysokie nie jest precyzyjnie określony i można o kimś powiedzieć, że jest w pewnym stopniu wysoki. Wnioski wyciągane w oparciu o logikę rozmytą nie mają takiego stopnia pewności jak wnioski oparte o logikę klasyczną, możliwe jest jednakże rozumowanie w warunkach niepewnej czy nieprecyzyjnie określonej informacji. W oparciu o logikę rozmytą działa coraz więcej urządzeń technicznych. Sposób rozumowania tych urządzeń i sposób komunikacji z nimi jest z punktu widzenia człowieka bardziej naturalny, gdyż logika rozmyta oprócz stwierdzeń tak i nie pozwala na używanie takich określeń, jak być może, chyba tak, prawie na pewno. Teoria zbiorów przybliżonych stworzona została przez profesora Zdzisława Pawlaka.

60 Podsumowanie, wnioski ?

61 Przykłady algorytmów…


Pobierz ppt "Algorytmy – c.d. złożoność algorytmów struktury danych Przy opracowywaniu wykładu wykorzystano m.in.:"

Podobne prezentacje


Reklamy Google