Algorytmy i struktury danych IS/IO, WIMiIP

Wielkość: px
Rozpocząć pokaz od strony:

Download "Algorytmy i struktury danych IS/IO, WIMiIP"

Transkrypt

1 Algorytmy i struktury danych IS/IO, WIMiIP Danuta Szeliga AGH Kraków

2 Spis treści I 1 Algorytmy i struktury danych 2 Spis treści 3 Organizacja zajęć 4 Literatura 5 Pojęcia podstawowe Rozwiązywanie problemu Algorytm Zapis algorytmu - schemat blokowy Cechy algorytmu Poprawność algorytmu 6 Metody algorytmiczne Metody konstrukcji algorytmu Klasy metod algorytmicznych Rekurencja Metoda dziel i zwyciężaj Metoda zachłanna

3 Spis treści II Programowanie dynamiczne Redukcja

4 Organizacja zajęć Wykłady - 28h Ćwiczenia audytoryjne - 28h Ćwiczenia laboratoryjne - 28/14h

5 Organizacja zajęć Wykłady - 28h Ćwiczenia audytoryjne - 28h Ćwiczenia laboratoryjne - 28/14h Zaliczenia i egzaminy: szeliga/ menu Dydaktyka Zakres materiału, literatura: syllabus AGH

6 Literatura N. Wirth, Algorytmy + struktury danych = programy D. Knuth, Sztuka programowania T.H. Cormen, C.E. Leiserson, R.L. Rivest, Wprowadzenie do Algorytmów A.V. Aho, J.E. Hopcroft, J.D. Ullman, Algorytmy i struktury danych A. Drozdek, C++ Algorytmy i struktury danych L. Banachowski, K. Diks, W. Rytter, Algorytmy i struktury danych

7 Rozwiązywanie problemu (zagadnienia) Modelowanie rzeczywistości zdefiniowanie zadania wprowadzenie założeń i ograniczeń selekcja informacji Algorytm rozwiązania Zapis: język naturalny pseudokod schemat blokowy Wybór narzędzia programowania Implementacja struktur danych algorytmu rozwiązania

8 Rozwiązywanie problemu (zagadnienia) Modelowanie rzeczywistości zdefiniowanie zadania wprowadzenie założeń i ograniczeń selekcja informacji Algorytm rozwiązania Zapis: język naturalny pseudokod schemat blokowy Wybór narzędzia programowania Implementacja struktur danych algorytmu rozwiązania Dobry algorytm warunek konieczny, ale niewystarczający napisania poprawnego i wydajnego programu

9 Co to jest algorytm? Jeżeli mamy do wykonania pewne zadanie, tworzymy sposób (przepis, proces, metodę, technikę, procedurę) realizacji tego zadania. Taki przepis to algorytm. Przykłady: przepis kucharski instrukcja składania mebla, urządzenia zapis nutowy wykonywanie pisemne dodawania/mnożenia/dzielenia...

10 Co to jest algorytm? Jeżeli mamy do wykonania pewne zadanie, tworzymy sposób (przepis, proces, metodę, technikę, procedurę) realizacji tego zadania. Taki przepis to algorytm. Przykłady: przepis kucharski instrukcja składania mebla, urządzenia zapis nutowy wykonywanie pisemne dodawania/mnożenia/dzielenia... Słowo algorytm (z ang. algorism) pochodzi od nazwiska matematyka perskiego z IX wieku, Muhammada ibn Musa al-chuwarizmi ego i oznaczało pierwotnie wykonywanie działań przy pomocy liczb arabskich

11 Przykład algorytmu - opis słowny Problem najwiekszego wspólnego dzielnika dwóch liczb naturalnych n i m, czyli najwiekszej liczby naturalnej, która dzieli obie liczby bez reszty Algorytm Euklidesa Algorytm Euklidesa (ok. 300 p.n.e) wyznaczania najwiekszego wspólnego dzielnika: K1 podziel n przez m. Niech r będzie resztą z tego dzielenia K2 jeżeli r = 0, wówczas m jest wynikiem, zakończ K3 podstaw n m, m r i wróć do kroku K1

12 Przykład algorytmu - opis słowny Problem najwiekszego wspólnego dzielnika dwóch liczb naturalnych n i m, czyli najwiekszej liczby naturalnej, która dzieli obie liczby bez reszty Algorytm Euklidesa Algorytm Euklidesa (ok. 300 p.n.e) wyznaczania najwiekszego wspólnego dzielnika: K1 podziel n przez m. Niech r będzie resztą z tego dzielenia K2 jeżeli r = 0, wówczas m jest wynikiem, zakończ K3 podstaw n m, m r i wróć do kroku K1 Np. Najwiekszy wspólny dzielnik n=6 i m=4: K1: r 6 modulo 4 K2: r = 2, zatem przechodzimy do K3 K3: n 4, m 2 K1: r 4 modulo 2 K2: r = 0, wynikiem jest m = 2, zakończ

13 Zapis algorytmu - schemat blokowy Schemat blokowy (block diagram, flowchart) to diagram, na którym algorytm jest reprezentowany przez opisane figury geometryczne, połączone liniami zgodnie z kolejnością wykonywania czynności wynikających z przyjętego algorytmu rozwiązania zadania pozwala dostrzec istotne etapy algorytmu i logiczne zależności między nimi Elementy schematu blokowego strzałka wskazuje kierunek przebiegu sterowania algorytmem, łączy inne bloki operand (prostokąt) wszystkie operacje z wyjątkiem instrukcji wyboru predykat (romb, sześciokąt) instrukcja wyboru etykieta (owal) początek lub koniec sekwencji schematu wejście/wyjście (równoległobok) Rysunek: Przykład - algorytm Euklidesa

14 Schematy blokowe instrukcji sterujących instrukcja bezpośredniego następstwa: {instrukcja1; instrukcja2;} instrukcja wyboru: {if (wyrażenie) instrukcja1;} {if (wyrażenie) instrukcja1; else instrukcja2;}

15 Schematy blokowe instrukcji sterujących instrukcje iteracyjne: while (wyrażenie) instrukcja; do {... } while(wyrażenie) for(wyr1; wyr2; wyr3) instrukcja;

16 Algorytm I Algorytm to ściśle określony ciąg kroków obliczeniowych, prowadzący do przekształcenia danych wejściowych w wyjściowe Cechy algorytmu Poprawnie zdefiniowany. Definicja zadania = co algorytm ma zrobić, jakie zadanie wykonać. Definicja problemu określa dane wejściowe (pochodzące z dokładnie określonego zbioru wartości dozwolonych) i dane wyjściowe - tzw. specyfikacja we/wy Precyzyjnie zdefiniowany. Każdy krok jest jednoznacznie określony, obejmuje operacje elementarne. Opis ciągu czynności, które po kolei mają być wykonane. Czynności te muszą być na tyle proste (i możliwe do wykonania), aby wykonawca algorytmu mógł je bez dodatkowego tłumaczenia zrealizować operacje elementarne (odpowiednio dobrany poziom szczegółowości) Skończony. Wyprodukuje wynik w skończonej liczbie kroków.

17 Algorytm II Jednoznaczny (powtarzalny). Algorytm dostaje pewne informacje (dane we) i zwraca (oczekiwane) wyniki dane wy. Wielokrotne wykonywanie dla identycznych danych we daje zawsze taki sam wynik. Kompletny. Uwzględnia wszystkie możliwe przypadki, jakie mogą wystąpić podczas jego wykonywania. Uniwersalny. Umożliwia rozwiązanie całej klasy zadań, a nie tylko pojedynczego, ustalonego zadania. Może istnieć kilka przepisów, które dają te same wyniki

18 Poprawność algorytmu Jeżeli: algorytm zatrzymuje się po skończonej liczbie kroków (posiada własność stopu) dla danych spełniajacych warunek poczatkowy (WP), algorytm generuje dane spełniajęce warunek końcowy (WK) algorytm jest poprawny

19 Poprawność algorytmu Jeżeli: algorytm zatrzymuje się po skończonej liczbie kroków (posiada własność stopu) dla danych spełniajacych warunek poczatkowy (WP), algorytm generuje dane spełniajęce warunek końcowy (WK) algorytm jest poprawny Poprawność algorytmu Algorytm jest częściowo poprawny względem danego warunku WP i danego warunku WK, gdy dla dowolnych danych wejściowych spełniających WP, jeżeli algorytm się zatrzymuje, to dane wyjściowe algorytmu spełniają warunek WK Algorytm jest całkowicie poprawny względem danego warunku WP i danego warunku WK, gdy dla dowolnych danych wejściowych spełniających warunek WP algorytm zatrzymuje się i dane wyjściowe tego algorytmu spełniaja warunek WK

20 Tworzenie algorytmu Definicja problemu (najlepiej w postaci modelu matematycznego) Koncepcja rozwiązania i wybór struktur danych Zapis algorytmu (stopniowe precyzowanie od koncepcji do pseudo-kodu lub kodu) Dowód poprawności i analiza złożoności obliczeniowej (Implementacja w wybranym języku programowania)

21 Klasy metod algorytmicznych Metoda TOP-DOWN (zstępująca, analityczna) problem jest dzielony na podproblemy podproblemy są rozwiązywane, a wyniki zapamiętywane, jeżeli będą użyte później używana jest rekursja i spamiętywanie Metoda BOTTOM-UP (wstępująca, syntetyczna) najpierw są rozwiązywane wszystkie (elementarne) podproblemy, które mogą być potrzebne następnie ich wyniki są używane do rozwiązywania większych podproblemów

22 Podstawowe metody rozwiązywania zadań algorytmicznych Metoda dziel i zwyciężaj Algorytmy zachłanne Planowanie dynamiczne

23 Rekurencja I Rekurencja / rekursja odwoływanie się funkcji lub definicji do samej siebie Silnia { 1 n = 0 n! = n (n 1)! n > 0 integer silnia(integer n){ if (n=0) then return 1; else return n*silnia(n-1); } Ciąg Fibbonacciego 0 n = 0 F n = 1 n = 1 F n 1 + F n 2 n > 1 integer Fib(integer n){ if (n=0) then return 0; else if (n=1) then return 1; else return Fib(n-1)+Fib(n-2); }

24 Rekurencja II Każda definicja rekurencyjna potrzebuje przynajmniej jednego przypadku bazowego (nie rekurencyjnego) w przeciwnym wypadku nigdy się nie zakończy Należy zachować ostrożność przy stosowaniu rekurencji!

25 Metoda dziel i zwyciężaj Problem dzieli się na mniejsze zadania tego samego typu i rozwiązuję się zdefiniowane podzadania Następnie łączy się częściowe rozwiązania w rozwiązanie całościowe problemu wyjściowego Jeżeli zdefiniowane podzadania są dokładnie takie same jak zadanie wyjściowe, lecz postawione dla mniejszych lub prostszych danych, to algorytm rozwiązania może być rekurencyjny Metoda jest przykładem zastosowania podejścia top-down konstrukcji algorytmu

26 Metoda dziel i zwyciężaj. Przykład: problem wież Hanoi Algorytm rozwiązuje zadanie dla N krążków, dzieląc problem na dwa problemy dla N-1 krążków i rozwiązując je Dane są trzy wieże (kołki): A, B, C. Na kołku A znajdują się trzy krążki ułożone malejąco, pozostałe kołki są puste Zadanie: przenieś krążki z kołka A na B, można korzystać z kołka C. Zachowane muszą być następujące zasady jednocześnie można przenieść tylko jeden kołek kołek większy nigdy nie może znaleźć się na kołku mniejszym Rozwiązanie dla trzech krążków: A B, A C, B C, A B, C A, C B, A B

27 Metoda dziel i zwyciężaj. Przykład: problem wież Hanoi - cd Algorytm rozwiązania problemu Wież Hanoi dla N N + krążków i trzech kołków A, B, C. WieżeHanoi(N,X,Y,Z){ //przenieś N krążków z X na Y używając Z if(n==1) przenieś(x," -> ", Y); else{ WieżeHanoi(N-1,X,Z,Y); //przenieś N-1 krążków z X na Z używając Y przenieś(x," -> ", Y); WieżeHanoi(N-1,Z,Y,X); //przenieś N-1 krążków z Z na Y używając X } }

28 Metoda dziel i zwyciężaj. Przykład: wyszukiwanie binarne Dane: posortowany ciąg liczb przechowywany w tablicy Zadanie: wyszukać w ciągu element o zadanej wartości Zastosowanie metody dziel i zwyciężaj dla tablicy o rozmiarze N i elementu x: dziel: weź element środkowy y (pozycja N/2); porównaj x z elementem środkowym zwyciężaj: jeżeli x = y zwróć pozycję; jeżeli x < y szukaj w lewej podtablicy, w przeciwnym przypadku szukaj w prawej podtablicy. integer WyszukajBin(ELEM T[N], ELEM x){ l = 1; p = N; integer m; do{ m = (l + p) / 2; if( T[m]=x) return m; else if( T[m]<x ) l = m + 1; else p = m - 1; } while( l<=p ); return -1; }

29 Metoda Dziel i zwyciężaj. Cechy Umożliwia często rozwiązywanie skomplikowanych problemów Daje efektywne algorytmy jeżeli: danych jest p podproblemów o rozmiarze n/p, podział i scalenie O(n) rozwiązanie trywialne O(1) wtedy metoda daje algorytm o złożoności O(nlogn) Algorytmy można łatwo zrównoleglić Wykorzystanie rekurencji do konstrukcji algorytmu metodą dziel i zwyciężaj może być nieefektywne Jeżeli podproblemy na siebie zachodzą, wtedy powtarzające się rozwiązania należy zapamiętywać (np. jak w przypadku ciągu Fibonacciego).

30 Metoda zachłanna Zastosowanie znajdowanie dla danego problemu rozwiązania pod pewnymi względami najlepszego z wszystkich możliwych rozwiązań Własność zachłannego wyboru Za pomocą lokalnie optymalnych (zachłannych) wyborów można uzyskać optymalne rozwiązanie całego zadania Optymalny wybór dokonany przez algorytm zachłanny może zależeć od poprzednich wyborów, ale nie zależy od wyborów kolejnych

31 Metoda zachłanna Zastosowanie znajdowanie dla danego problemu rozwiązania pod pewnymi względami najlepszego z wszystkich możliwych rozwiązań Własność zachłannego wyboru Za pomocą lokalnie optymalnych (zachłannych) wyborów można uzyskać optymalne rozwiązanie całego zadania Optymalny wybór dokonany przez algorytm zachłanny może zależeć od poprzednich wyborów, ale nie zależy od wyborów kolejnych Algorytm zachłanny konstruuje iteracyjnie rozwiązanie w sposób zachłanny, tzn. najbardziej obiecujący w danej chwili wybór rozwiązania częściowego Algorytm zachłanny nie przewiduje, czy w kolejnych krokach wykonywane działania będą miały sens, ale dokonuje decyzji lokalnie optymalnej, czyli w danej chwili najlepszej, kontynuując rozwiązywanie podproblemu wynikające z podjętej decyzji

32 Algorytmy zachłanne. Cechy Problem nie jest rozpatrywany globalnie Typowe zadanie rozwiązywane metodą zachłanną ma charakter optymalizacyjny Musi być znane kryterium pozwalające oceniać jakość rozwiązania Istnieje wiele problemów, dla których udowodnić można, że rozwiązanie zachłanne jest zawsze optymalne (np. algorytm Prima, Kruskala). W przypadku innych problemów zachłanność się nie opłaca lub może być problematyczna (np. problem wydawania reszty) Nie istnieje ogólna metoda dowodzenia, czy dla danego problemu rozwiązanie zachłanne (zawsze) odnajduje poprawny (i optymalny) wynik.

33 Algorytmy zachłanne. Budowa rozwiązania Niech Z będzie zbiorem skończonym, takim, że wszystkie możliwe rozwiązania R problemu P są podzbiorami Z Budowa rozwiązania zachłannego Na początku R = Aż do znalezenia rozwiązania, w każdej iteracji wybierane jest rozwiązanie częściowe z Z, które jest dołączane do rozwiązania problemu, takie, że: R = R {z} : R jest optymalne przy czym wybrane rozwiązanie z jest usuwane ze zbioru (Z = Z\ {z})

34 Algorytmy zachłanne. Przykład Dane: zbiór miast Zadanie: połącz miasta w sieć w ten sposób, aby z dowolnego miasta można było dotrzeć do każdego innego w najtańszy (np. najkrótszy) sposób Założenia: znane są tylko odległości dla par miast, dla których jest możliwe bezpośrednie połączenie

35 Algorytmy zachłanne. Przykład Dane: zbiór miast Zadanie: połącz miasta w sieć w ten sposób, aby z dowolnego miasta można było dotrzeć do każdego innego w najtańszy (np. najkrótszy) sposób Założenia: znane są tylko odległości dla par miast, dla których jest możliwe bezpośrednie połączenie Sieć połączeń między miastami nazywana jest grafem etykietowanym Rozwiązanie zadania sprowadza się do znalezienia minimalnego drzewa rozpinającego grafu Minimalne drzewo rozpinające grafu (MDR) To drzewo, które dociera do każdego węzła grafu dokładnie raz suma etykiet krawędzi grafu jest najmniejsza z możliwych

36 Algorytmy zachłanne. Przykład - cd

37 Algorytmy zachłanne. Przykład - cd Algorytm Prima: zbuduj drzewo zdegenerowane, składające się z dowolnego wierzchołka grafu utwórz kolejkę priorytetową zawierającą wierzchołki osiągalne z MDR (w pierwszym kroku MDR zawiera tylko jeden wierzchołek na początku w kolejce będą sąsiedzi tylko tego wierzchołka) - priorytetem jest najmniejszy kosztu dotarcia do danego wierzchołka z MDR w każdym kolejnym kroku aż do przetworzenia wszystkich wierzchołków: wśród nieprzetworzonych wierzchołków (spoza dotychczasowego MDR) wybierz ten, dla którego koszt dojścia z dotychczasowego MDR jest najmniejszy dodaj do obecnego MDR wybrany wierzchołek i krawędź (uwaga! dodanie nowej krawędzi nie może prowadzić do powstania cyklu, w takim przypadku przejdź do nastepnej krawędzi w kolejce) aktualizuj kolejkę priorytetową uwzględniając nowe krawędzie wychodzące z dodanego wierzchołka

38 Algorytmy zachłanne. Przykład - cd

39 Algorytmy zachłanne. Przykład - cd

40 Algorytmy zachłanne. Przykład - cd

41 Algorytmy zachłanne. Przykład - cd

42 Algorytmy zachłanne. Przykład - cd

43 Algorytmy zachłanne. Przykład - cd

44 Algorytmy zachłanne. Przykład - cd

45 Algorytmy zachłanne. Przykład - cd

46 Algorytmy zachłanne. Przykład - cd

47 Programowanie (planowanie) dynamiczne Własność optymalnej podstruktury Optymalne rozwiązanie całego problemu jest możliwe tylko przy optymalnym rozwiązaniu jego podproblemów. (Optymalne rozwiązanie całego problemu zawiera optymalne rozwiązania podproblemów).

48 Programowanie (planowanie) dynamiczne Własność optymalnej podstruktury Optymalne rozwiązanie całego problemu jest możliwe tylko przy optymalnym rozwiązaniu jego podproblemów. (Optymalne rozwiązanie całego problemu zawiera optymalne rozwiązania podproblemów). Spamiętywanie [Donald Michie, 1968] Technika optymalizacyjna przyspieszająca działanie algorytmów, polegająca na zapamiętywaniu wyników zwracanych przez funkcje do późniejszego ich wykorzystania, zamiast ponownego wywołania tych funkcji.

49 Programowanie (planowanie) dynamiczne Programowanie dynamiczne [Richard Bellman, 1940] W każdym kroku rozważamy wszystkie kombinacje powstałe z: dokonania konkretnego wyboru znalezienia optymalnych rozwiązań dla pozostałych dla pozostałych wyborów Optymalny wybór dokonany przez metodę programowania dynamicznego może zależeć od poprzednich wyborów oraz od wyborów kolejnych wtedy rozwiązanie optymalne jest modyfikowane

50 Programowanie dynamiczne Podproblemy cechują się następującymi własnościami: 1 nie są na ogół rozłączne - te same podproblemy są używane do rozwiązywania wielu większych podproblemów Rysunek: Kolejne wyrazy ciągu Fibbonaciego 2 z tego powodu należy zapamiętać rozwiązanie danego podproblemu, aby go ponownie użyć (spamiętywanie) 3 posiadają własność optymalnej podstruktury

51 Algorytmy i struktury danych Spis treści Organizacja zajęć Literatura Pojęcia podstawowe Metody algorytmiczne Programowanie dynamiczne. Przykład Poszukiwanie najtańszej drogi od początkowego węzła do węzła przeznaczenia w etykietowanym grafie skierowanym

52 Algorytmy i struktury danych Spis treści Organizacja zajęć Literatura Pojęcia podstawowe Metody algorytmiczne Programowanie dynamiczne. Przykład Poszukiwanie najtańszej drogi od początkowego węzła do węzła przeznaczenia w etykietowanym grafie skierowanym W algorytmie planowania dynamicznego długość najkrótszej ścieżki wiodącej z A do B powstaje przez znalezienie: K1 Najmniejszej z trzech odległości z A do C, D, G K2 Dodanie do tych odległości długości najkrótszej ścieżki prowadzącej z C, D i G do B K3 Wybór najkrótszej z nich

53 Programowanie dynamiczne. Przykład - cd Niech L(X ) oznacza najkrótszą ścieżkę prowadzącą z X do B. Wtedy: L(A) = min(5 + L(C), 14 + L(G), 3 + L(D)) Najpierw znajdowane są trzy mniejsze ścieżki optymalne: L(C), L(G), L(D), a później wykonując dodawania i porównania otrzymywana jest całkowita ścieżka optymalna: L(C) = min(2 + L(F ); 3 + L(E)) L(G) = min(7 + L(E); 6 + L(B)) L(D) = min(6 + L(G); 11 + L(C)) L(B) = 0

54 Programowanie dynamiczne. Przykład - cd Algorytm znajdowania najkrótszej ścieżki w grafie Jeśli węzłami są C i,..., C n i ścieżka ma się rozpocząć w C 1 i skończyć w C N, to algorytm wymaga obliczenia optymalnej ścieżki częściowej L(C i ), przedstawiającej najkrótszą ścieżkę z C i do C n, dla każdego i = 1... n: L(C i ) = min(odległość(c i, C k ) + L(C k )) przy czym C k to wszystkie węzły, do których prowadzą bezpośrednio krawędzie z C i Z założenia graf jest acykliczny, możliwe jest więc obliczenie wszystkich L(C i ), posuwając się z B4 do tyłu: 1 L(F ) = 7, L(E) = 5, L(G) = 6 2 L(C) = min(2 + L(F ), 3 + L(E)) = 3 + L(E) = 8 3 L(D) = min(11 + L(C), 6 + L(G)) = 6 + L(G) = 12 4 L(A) = min(5 + L(C), 3 + L(D), 14 + L(G)) = 5 + L(C) = 13 Optymalna ścieżka z A do B to: A C E B

55 Programowanie dynamiczne. Przykłady Algorytmy operujących na ciągach znaków, np. longest common subsequence, longest increasing subsequence Algorytm Floyda-Warshalla - poszukiwanie najkrótszych ścieżek pomiędzy wszystkimi parami wierzchołków w grafie etykietowanym Alorytm Cocke-Younger-Kasami (CYK) - sprawdzanie, czy słowo należy do języka bezkontekstowego Problem optymalnego nawiasowania macierzy Wybór instrukcji niskiego poziomu w kompilatorach

56 Redukcja Redukcja Technika rozwiązywania trudnego problemu poprzez jego transformację do innego problemu, dla którego znamy asymptotycznie optymalne algorytmy Kluczowe jest znalezienie takiego algorytmu redukującego, którego złożoność jest mniejsza niż złożoność algorytmu dla problemu zredukowanego

57 Redukcja Redukcja Technika rozwiązywania trudnego problemu poprzez jego transformację do innego problemu, dla którego znamy asymptotycznie optymalne algorytmy Kluczowe jest znalezienie takiego algorytmu redukującego, którego złożoność jest mniejsza niż złożoność algorytmu dla problemu zredukowanego Przykład: problem znalezienia mediany 1 Posortowanie elementów (kosztowna część algorytmu) 2 Wybór środkowego elementu (tania część algorytmu)

Algorytmy i struktury danych IS/IO, WIMiIP

Algorytmy i struktury danych IS/IO, WIMiIP Algorytmy i struktury danych IS/IO, WIMiIP Danuta Szeliga AGH Kraków I Algorytmy i struktury danych 1 Algorytmy i struktury danych 2 Spistreści 3 Organizacjazajęć 4 5 Pojęciapodstawowe Rozwiązywanie problemu

Bardziej szczegółowo

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek Algorytmy i str ruktury danych Metody algorytmiczne Bartman Jacek jbartman@univ.rzeszow.pl Metody algorytmiczne - wprowadzenia Znamy strukturę algorytmów Trudność tkwi natomiast w podaniu metod służących

Bardziej szczegółowo

Programowanie dynamiczne cz. 2

Programowanie dynamiczne cz. 2 Programowanie dynamiczne cz. 2 Wykład 7 16 kwietnia 2019 (Wykład 7) Programowanie dynamiczne cz. 2 16 kwietnia 2019 1 / 19 Outline 1 Mnożenie ciągu macierzy Konstruowanie optymalnego rozwiązania 2 Podstawy

Bardziej szczegółowo

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 7 Algorytmy

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 7 Algorytmy Podstawy Informatyki Inżynieria Ciepła, I rok Wykład 7 Algorytmy Programowanie Sformułowanie problemu. Opracowanie metodyki rozwiązania. Opracowanie algorytmu. Napisanie kodu źródłowego (zakodowanie) w

Bardziej szczegółowo

1 Wprowadzenie do algorytmiki

1 Wprowadzenie do algorytmiki Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności

Bardziej szczegółowo

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne Algorytmy i struktury danych Wykład VIII Elementarne techniki algorytmiczne Co dziś? Algorytmy zachłanne (greedyalgorithms) 2 Tytułem przypomnienia metoda dziel i zwyciężaj. Problem można podzielić na

Bardziej szczegółowo

Wykład 8. Drzewo rozpinające (minimum spanning tree)

Wykład 8. Drzewo rozpinające (minimum spanning tree) Wykład 8 Drzewo rozpinające (minimum spanning tree) 1 Minimalne drzewo rozpinające - przegląd Definicja problemu Własności minimalnych drzew rozpinających Algorytm Kruskala Algorytm Prima Literatura Cormen,

Bardziej szczegółowo

Programowanie dynamiczne i algorytmy zachłanne

Programowanie dynamiczne i algorytmy zachłanne Programowanie dynamiczne i algorytmy zachłanne Tomasz Głowacki tglowacki@cs.put.poznan.pl Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia na Politechnice Poznańskiej w zakresie technologii

Bardziej szczegółowo

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1 Wykład Algorytmy grafowe metoda zachłanna. Właściwości algorytmu zachłannego:. W przeciwieństwie do metody programowania dynamicznego nie występuje etap dzielenia na mniejsze realizacje z wykorzystaniem

Bardziej szczegółowo

INFORMATYKA WYBRANE ALGORYTMY OPTYMALIZACYJNE KRYPTOLOGIA.

INFORMATYKA WYBRANE ALGORYTMY OPTYMALIZACYJNE KRYPTOLOGIA. INFORMATYKA WYBRANE ALGORYTMY OPTYMALIZACYJNE KRYPTOLOGIA http://www.infoceram.agh.edu.pl Klasy metod algorytmicznych Metoda TOP-DOWN (zstępująca, analityczna) Metoda BOTTOM-UP (wstępująca, syntetyczna)

Bardziej szczegółowo

Algorytmy i struktury danych.

Algorytmy i struktury danych. Kod przedmiotu: ASD Rodzaj przedmiotu: Wydział: Informatyki Kierunek: Informatyka Specjalność (specjalizacja): - Algorytmy i struktury danych. kierunkowy ; obowiązkowy Poziom studiów: pierwszego stopnia

Bardziej szczegółowo

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy ALGORYTMY 1. Podstawowe definicje Algorytm (definicja nieformalna) to sposób postępowania (przepis) umożliwiający rozwiązanie określonego zadania (klasy zadań), podany w postaci skończonego zestawu czynności

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Algorytmy zachłanne, programowanie dynamiczne Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk(Wydział Fizyki) WP w. IX Jesień 2014 1 / 26 Algorytmy zachłanne Strategia polegająca

Bardziej szczegółowo

Strategia "dziel i zwyciężaj"

Strategia dziel i zwyciężaj Strategia "dziel i zwyciężaj" W tej metodzie problem dzielony jest na kilka mniejszych podproblemów podobnych do początkowego problemu. Problemy te rozwiązywane są rekurencyjnie, a następnie rozwiązania

Bardziej szczegółowo

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE Nazwa przedmiotu: I KARTA PRZEDMIOTU CEL PRZEDMIOTU PRZEWODNIK PO PRZEDMIOCIE C1. Podniesienie poziomu wiedzy studentów z zagadnień dotyczących analizy i syntezy algorytmów z uwzględnieniem efektywności

Bardziej szczegółowo

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy: Temat: Powtórzenie wiadomości z PODSTAW INFORMATYKI I: Pojęcia: złożoność czasowa algorytmu, rząd funkcji kosztu. Algorytmy. Metody programistyczne. Struktury danych. Literatura. A. V. Aho, J.E. Hopcroft,

Bardziej szczegółowo

Techniki konstruowania algorytmów. Metoda dziel i zwyciężaj

Techniki konstruowania algorytmów. Metoda dziel i zwyciężaj Techniki konstruowania algorytmów Metoda dziel i zwyciężaj Technika dziel i zwyciężaj Aby rozwiązać problem techniką dziel i zwyciężaj musi on wykazywać własność podstruktury rozwiązanie problemu można

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Rekurencja, metoda dziel i zwyciężaj Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk(Wydział Fizyki) WP w. VIII Jesień 2014 1 / 27 Rekurencja Recursion See Recursion. P. Daniluk(Wydział

Bardziej szczegółowo

Algorytm. Krótka historia algorytmów

Algorytm. Krótka historia algorytmów Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy ALGORYTMY 1. Podstawowe definicje Algorytm (definicja nieformalna) to sposób postępowania (przepis) umożliwiający rozwiązanie określonego zadania (klasy zadań), podany w postaci skończonego zestawu czynności

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 14c 2 Definicje indukcyjne Twierdzenia dowodzone przez indukcje Definicje indukcyjne Definicja drzewa

Bardziej szczegółowo

Schemat programowania dynamicznego (ang. dynamic programming)

Schemat programowania dynamicznego (ang. dynamic programming) Schemat programowania dynamicznego (ang. dynamic programming) Jest jedną z metod rozwiązywania problemów optymalizacyjnych. Jej twórcą (1957) był amerykański matematyk Richard Ernest Bellman. Schemat ten

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Algorytmy zachłanne, algoritme Dijkstry Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 1 / 25 Algorytmy zachłanne Strategia polegająca na

Bardziej szczegółowo

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew 1. ( pkt) Dany jest algorytm, który dla dowolnej liczby naturalnej n, powinien wyznaczyd sumę kolejnych liczb naturalnych mniejszych od n. Wynik algorytmu jest zapisany w zmiennej suma. Algorytm i=1; suma=0;

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Metoda Dziel i zwyciężaj. Problem Sortowania, cd. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 2 Bożena Woźna-Szcześniak (AJD) Algorytmy

Bardziej szczegółowo

Podstawy Informatyki. Programowanie. Inżynieria Ciepła, I rok. Co to jest algorytm? Istotne cechy algorytmu

Podstawy Informatyki. Programowanie. Inżynieria Ciepła, I rok. Co to jest algorytm? Istotne cechy algorytmu Podstawy Informatyki Inżyria Ciepła, I rok Wykład 7 Algorytmy Sformułowa problemu. Programowa Opracowa metodyki rozwiązania. Opracowa algorytmu. Napisa kodu źródłowego (zakodowa) w wybranym języku (Pascal,

Bardziej szczegółowo

KARTA MODUŁU KSZTAŁCENIA

KARTA MODUŁU KSZTAŁCENIA KARTA MODUŁU KSZTAŁCENIA I. Informacje ogólne 1 Nazwa modułu kształcenia Algorytmy i struktury danych 2 Nazwa jednostki prowadzącej moduł Instytut Informatyki, Zakład Informatyki Stosowanej 3 Kod modułu

Bardziej szczegółowo

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji. Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji. Maria Górska 9 stycznia 2010 1 Spis treści 1 Pojęcie algorytmu 3 2 Sposób

Bardziej szczegółowo

Wykład 3. Metoda dziel i zwyciężaj

Wykład 3. Metoda dziel i zwyciężaj Wykład 3 Metoda dziel i zwyciężaj 1 Wprowadzenie Technika konstrukcji algorytmów dziel i zwyciężaj. przykładowe problemy: Wypełnianie planszy Poszukiwanie (binarne) Sortowanie (sortowanie przez łączenie

Bardziej szczegółowo

a) 7 b) 19 c) 21 d) 34

a) 7 b) 19 c) 21 d) 34 Zadanie 1. Pytania testowe dotyczące podstawowych własności grafów. Zadanie 2. Przy każdym z zadań może się pojawić polecenie krótkiej charakterystyki algorytmu. Zadanie 3. W zadanym grafie sprawdzenie

Bardziej szczegółowo

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II Wykład 6. Drzewa cz. II 1 / 65 drzewa spinające Drzewa spinające Zliczanie drzew spinających Drzewo T nazywamy drzewem rozpinającym (spinającym) (lub dendrytem) spójnego grafu G, jeżeli jest podgrafem

Bardziej szczegółowo

Złożoność obliczeniowa zadania, zestaw 2

Złożoność obliczeniowa zadania, zestaw 2 Złożoność obliczeniowa zadania, zestaw 2 Określanie złożoności obliczeniowej algorytmów, obliczanie pesymistycznej i oczekiwanej złożoności obliczeniowej 1. Dana jest tablica jednowymiarowa A o rozmiarze

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Metody konstrukcji algorytmów: Siłowa (ang. brute force), Dziel i zwyciężaj (ang. divide-and-conquer), Zachłanna (ang.

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Algorytmy i Struktury Danych www.pk.edu.pl/~zk/aisd_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład 9: Programowanie

Bardziej szczegółowo

Poprawność semantyczna

Poprawność semantyczna Poprawność składniowa Poprawność semantyczna Poprawność algorytmu Wypisywanie zdań z języka poprawnych składniowo Poprawne wartościowanie zdań języka, np. w języku programowania skutki wystąpienia wyróżnionych

Bardziej szczegółowo

Algorytmy. wer Wojciech Myszka 30 listopada 2008

Algorytmy. wer Wojciech Myszka 30 listopada 2008 Algorytmy Część IV wer. 1.2 Wojciech Myszka 30 listopada 2008 Spis treści I Spis treści Jak się tworzy algorytmy? Poszukiwania i wędrówki Dziel i zwyciężaj Rekurencja Definicje Przykład Schemat blokowy

Bardziej szczegółowo

Projektowanie i analiza algorytmów

Projektowanie i analiza algorytmów POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Projektowanie i analiza algorytmów www.pk.edu.pl/~zk/piaa_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład

Bardziej szczegółowo

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n ) SORTOWANIE 1 SORTOWANIE Proces ustawiania zbioru elementów w określonym porządku. Stosuje się w celu ułatwienia późniejszego wyszukiwania elementów sortowanego zbioru. 2 Definicja Ciąg wejściowy: a 1,

Bardziej szczegółowo

Podstawy Informatyki. Metalurgia, I rok niestacjonarne. Wykład 2 Algorytmy

Podstawy Informatyki. Metalurgia, I rok niestacjonarne. Wykład 2 Algorytmy Podstawy Informatyki Metalurgia, I rok niestacjonarne Wykład 2 Algorytmy Programowanie Sformułowanie problemu. Opracowanie metodyki rozwiązania. Opracowanie algorytmu. Napisanie kodu źródłowego (zakodowanie)

Bardziej szczegółowo

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Algorytmy komputerowe. dr inŝ. Jarosław Forenc Rok akademicki 2009/2010, Wykład nr 8 2/24 Plan wykładu nr 8 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2009/2010

Bardziej szczegółowo

Programowanie dynamiczne

Programowanie dynamiczne Programowanie dynamiczne Ciąg Fibonacciego fib(0)=1 fib(1)=1 fib(n)=fib(n-1)+fib(n-2), gdzie n 2 Elementy tego ciągu stanowią liczby naturalne tworzące ciąg o takiej własności, że kolejny wyraz (z wyjątkiem

Bardziej szczegółowo

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA Realizacja w roku akademickim 2016/17

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA Realizacja w roku akademickim 2016/17 Załącznik nr 4 do Uchwały Senatu nr 430/01/2015 SYLABUS DOTYCZY CYKLU KSZTAŁCENIA 2016 2020 Realizacja w roku akademickim 2016/17 1.1. Podstawowe informacje o przedmiocie/module Nazwa przedmiotu/ modułu

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Algorytm 1. Termin algorytm jest używany w informatyce

Bardziej szczegółowo

Sortowanie przez scalanie

Sortowanie przez scalanie Sortowanie przez scalanie Wykład 2 12 marca 2019 (Wykład 2) Sortowanie przez scalanie 12 marca 2019 1 / 17 Outline 1 Metoda dziel i zwyciężaj 2 Scalanie Niezmiennik pętli - poprawność algorytmu 3 Sortowanie

Bardziej szczegółowo

Metody algortmiczne (Algorytmy Część IV)

Metody algortmiczne (Algorytmy Część IV) Metody algortmiczne (Algorytmy Część IV) wer. 9 z drobnymi modyfikacjami! Wojciech Myszka 2018-10-02 17:27:45 +0200 Jak się tworzy algorytmy? Moja odpowiedź jest krótka: Jak się tworzy algorytmy? Moja

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH ALGORYTMY I STRUKTURY DANYCH wykład 1 wprowadzenie, struktury sterujace, projektowanie algorytmów dr hab. inż. Andrzej Obuchowicz, prof. UZ Instytut Sterowania i Systemów Informatycznych UZ p. 425 A2 tel.

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 03/0 Przeszukiwanie w głąb i wszerz I Przeszukiwanie metodą

Bardziej szczegółowo

Algorytmy. Programowanie Proceduralne 1

Algorytmy. Programowanie Proceduralne 1 Algorytmy Programowanie Proceduralne 1 Przepis Warzenie piwa Brunświckiego Programowanie Proceduralne 2 Przepis Warzenie piwa Brunświckiego składniki (dane wejściowe): woda, słód, itd. wynik: beczka piwa

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 2 2 Problemy algorytmiczne Klasy problemów algorytmicznych Liczby Fibonacciego Przeszukiwanie tablic Największy

Bardziej szczegółowo

Programowanie w VB Proste algorytmy sortowania

Programowanie w VB Proste algorytmy sortowania Programowanie w VB Proste algorytmy sortowania Sortowanie bąbelkowe Algorytm sortowania bąbelkowego polega na porównywaniu par elementów leżących obok siebie i, jeśli jest to potrzebne, zmienianiu ich

Bardziej szczegółowo

POLITECHNIKA OPOLSKA

POLITECHNIKA OPOLSKA POLITECHNIKA OPOLSKA WYDZIAŁ MECHANICZNY Katedra Technologii Maszyn i Automatyzacji Produkcji Laboratorium Podstaw Inżynierii Jakości Ćwiczenie nr 2 Temat: Schemat blokowy (algorytm) procesu selekcji wymiarowej

Bardziej szczegółowo

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p. Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Co to jest algorytm? Zapis algorytmów Algorytmy

Bardziej szczegółowo

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski Algorytmy i złożoność obliczeniowa Wojciech Horzelski 1 Tematyka wykładu Ø Ø Ø Ø Ø Wprowadzenie Poprawność algorytmów (elementy analizy algorytmów) Wyszukiwanie Sortowanie Elementarne i abstrakcyjne struktury

Bardziej szczegółowo

Algorytmy. Programowanie Proceduralne 1

Algorytmy. Programowanie Proceduralne 1 Algorytmy Programowanie Proceduralne 1 Przepis Warzenie piwa Brunświckiego Programowanie Proceduralne 2 Przepis Warzenie piwa Brunświckiego składniki (dane wejściowe): woda, słód, itd. wynik: beczka piwa

Bardziej szczegółowo

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 4a: Rozwiązywanie rekurencji http://kiwi.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Czas działania programu Dla konkretnych

Bardziej szczegółowo

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 5 i 6. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 5 i 6. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie Algorytmy Grafowe dr hab. Bożena Woźna-Szcześniak, prof. UJD Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie b.wozna@ujd.edu.pl Wykład 5 i 6 B. Woźna-Szcześniak (UJD) Algorytmy

Bardziej szczegółowo

Algorytm. Krótka historia algorytmów

Algorytm. Krótka historia algorytmów Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

Bardziej szczegółowo

POLITECHNIKA OPOLSKA

POLITECHNIKA OPOLSKA POLITECHNIKA OPOLSKA WYDZIAŁ MECHANICZNY Katedra Technologii Maszyn i Automatyzacji Produkcji Laboratorium Podstaw Inżynierii Jakości Ćwiczenie nr 2 Temat: Schemat blokowy (algorytm) procesu selekcji wymiarowej

Bardziej szczegółowo

Wprowadzenie do algorytmiki

Wprowadzenie do algorytmiki Wprowadzenie do algorytmiki Pojecie algorytmu Powszechnie przyjmuje się, że algorytm jest opisem krok po kroku rozwiązania postawionego problemu lub sposób osiągnięcia jakiegoś celu. Wywodzi się z matematyki

Bardziej szczegółowo

Rekurencja. Przykład. Rozważmy ciąg

Rekurencja. Przykład. Rozważmy ciąg Rekurencja Definicje rekurencyjne Definicja: Mówimy, iż ciąg jest zdefiniowany rekurencyjnie, jeżeli: (P) Określony jest pewien skończony zbiór wyrazów tego ciągu, zwykle jest to pierwszy wyraz tego ciągu

Bardziej szczegółowo

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA Realizacja w roku akademickim 2016/17

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA Realizacja w roku akademickim 2016/17 Załącznik nr 4 do Uchwały Senatu nr 430/01/2015 SYLABUS DOTYCZY CYKLU KSZTAŁCENIA 2015 2019 Realizacja w roku akademickim 2016/17 1.1. Podstawowe informacje o przedmiocie/module Nazwa przedmiotu/ modułu

Bardziej szczegółowo

Rekurencja/rekursja. Iluzja istnienia wielu kopii tego samego algorytmu (aktywacji) Tylko jedna aktywacja jest aktywna w danej chwili

Rekurencja/rekursja. Iluzja istnienia wielu kopii tego samego algorytmu (aktywacji) Tylko jedna aktywacja jest aktywna w danej chwili rekurencja 1 Rekurencja/rekursja Alternatywny dla pętli sposób powtarzania pewnych czynności; kolejny etap podzadanie poprzedniego Rekursja może być zamieniona na iteracje Cechy rekurencji Rozłożenie problemu

Bardziej szczegółowo

Wykład 8. Rekurencja. Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. L. Peter Deutsch

Wykład 8. Rekurencja. Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. L. Peter Deutsch Wykład 8 Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. Smok podsuszony zmok (patrz: Zmok). Zmok zmoczony smok (patrz: Smok). L. Peter Deutsch Stanisław Lem Wizja lokalna J. Cichoń, P. Kobylański

Bardziej szczegółowo

Algorytmy zachłanne. dr inż. Urszula Gałązka

Algorytmy zachłanne. dr inż. Urszula Gałązka Algorytmy zachłanne dr inż. Urszula Gałązka Algorytm zachłanny O Dokonuje wyboru, który w danej chwili wydaje się najkorzystniejszy. O Mówimy, że jest to wybór lokalnie optymalny O W rzeczywistości nie

Bardziej szczegółowo

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 6 Podstawy programowania 2 Temat: Funkcje i procedury rekurencyjne Przygotował: mgr inż. Tomasz Michno Wstęp teoretyczny Rekurencja (inaczej nazywana rekursją, ang. recursion)

Bardziej szczegółowo

Algorytmy i struktury danych. Wykład 4

Algorytmy i struktury danych. Wykład 4 Wykład 4 Różne algorytmy - obliczenia 1. Obliczanie wartości wielomianu 2. Szybkie potęgowanie 3. Algorytm Euklidesa, liczby pierwsze, faktoryzacja liczby naturalnej 2017-11-24 Algorytmy i struktury danych

Bardziej szczegółowo

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Technologie cyfrowe Artur Kalinowski Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.pl Semestr letni 2014/2015 Zadanie algorytmiczne: wyszukiwanie dane wejściowe:

Bardziej szczegółowo

Programowanie dynamiczne (optymalizacja dynamiczna).

Programowanie dynamiczne (optymalizacja dynamiczna). Programowanie dynamiczne (optymalizacja dynamiczna). W wielu przypadkach zadania, których złożoność wynikająca z pełnego przeglądu jest duża (zwykle wyk ładnicza) można rozwiązać w czasie wielomianowym

Bardziej szczegółowo

Podstawy Informatyki. Algorytmy i ich poprawność

Podstawy Informatyki. Algorytmy i ich poprawność Podstawy Informatyki Algorytmy i ich poprawność Błędy Błędy: językowe logiczne Błędy językowe Związane ze składnią języka Wykrywane automatycznie przez kompilator lub interpreter Prosty sposób usuwania

Bardziej szczegółowo

INFORMATYKA. Algorytmy.

INFORMATYKA. Algorytmy. INFORMATYKA Algorytmy http://www.infoceram.agh.edu.pl ALGORYTM ALGORYTM to skończony ciąg jasno zdefiniowanych czynności, wskazujący kolejność operacji koniecznych do rozwiązania zadanego problemu. Słowo

Bardziej szczegółowo

Algorytmy. Paweł Dudzik, Adrian Guzik. Kraków, 6 lipca AGH Kraków. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca / 37

Algorytmy. Paweł Dudzik, Adrian Guzik. Kraków, 6 lipca AGH Kraków. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca / 37 Algorytmy Paweł Dudzik, Adrian Guzik AGH Kraków Kraków, 6 lipca 2011 Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 1 / 37 Plan wykładu 1 Czym jest algorytm? 2 Budowa algorytmu

Bardziej szczegółowo

Sortowanie danych. Jolanta Bachan. Podstawy programowania

Sortowanie danych. Jolanta Bachan. Podstawy programowania Sortowanie danych Podstawy programowania 2013-06-06 Sortowanie przez wybieranie 9 9 9 9 9 9 10 7 7 7 7 7 10 9 1 3 3 4 10 7 7 10 10 10 10 4 4 4 4 4 4 3 3 3 3 2 2 2 2 2 2 2 3 1 1 1 1 1 1 Gurbiel et al. 2000

Bardziej szczegółowo

Podejście zachłanne, a programowanie dynamiczne

Podejście zachłanne, a programowanie dynamiczne Podejście zachłanne, a programowanie dynamiczne Algorytm zachłanny pobiera po kolei elementy danych, za każdym razem wybierając taki, który wydaje się najlepszy w zakresie spełniania pewnych kryteriów

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI 16/01/2017 WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Repetytorium złożoność obliczeniowa 2 Złożoność obliczeniowa Notacja wielkie 0 Notacja Ω i Θ Rozwiązywanie

Bardziej szczegółowo

Metody Programowania

Metody Programowania POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Metody Programowania www.pk.edu.pl/~zk/mp_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład 8: Wyszukiwanie

Bardziej szczegółowo

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL Studia Podyplomowe INFORMATYKA Podstawy Informatyki Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL 1 Część 1 Pojęcie algorytmu 2 I. Pojęcie algorytmu Trochę historii Pierwsze

Bardziej szczegółowo

Algorytmy i struktury danych.

Algorytmy i struktury danych. Algorytmy i struktury danych. Wykład 4 Krzysztof M. Ocetkiewicz Krzysztof.Ocetkiewicz@eti.pg.gda.pl Katedra Algorytmów i Modelowania Systemów, WETI, PG Problem plecakowy mamy plecak o określonej pojemności

Bardziej szczegółowo

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010 1/1 Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010 Kierunek: INFORMATYKA Specjalność: PRZEDMIOT OBOWIĄZKOWY DLA WSZYSTKICH STUDENTÓW. Tryb studiów: NIESTACJONARNE PIERWSZEGO STOPNIA

Bardziej szczegółowo

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki. 1. Podaj definicję informatyki. 2. W jaki sposób można definiować informatykę? 3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki. 4. Co to jest algorytm? 5. Podaj neumanowską architekturę

Bardziej szczegółowo

Algorytmy i struktury danych. wykład 2

Algorytmy i struktury danych. wykład 2 Plan wykładu: Pojęcie algorytmu. Projektowanie wstępujące i zstępujące. Rekurencja. Pojęcie algorytmu Pojęcie algorytmu Algorytm skończony zbiór operacji, koniecznych do wykonania zadania z pewnej klasy

Bardziej szczegółowo

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA Zad. 1 (12p.)Niech n 3k > 0. Zbadać jaka jest najmniejsza możliwa liczba krawędzi w grafie, który ma dokładnie n wierzchołków oraz dokładnie k składowych, z których

Bardziej szczegółowo

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

Egzamin, AISDI, I termin, 18 czerwca 2015 r. Egzamin, AISDI, I termin, 18 czerwca 2015 r. 1 W czasie niezależnym do danych wejściowych działają algorytmy A. sortowanie bąbelkowego i Shella B. sortowanie szybkiego i przez prosty wybór C. przez podział

Bardziej szczegółowo

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott Struktury danych i złozoność obliczeniowa Prof. dr hab. inż. Jan Magott Formy zajęć: Wykład 1 godz., Ćwiczenia 1 godz., Projekt 2 godz.. Adres strony z materiałami do wykładu: http://www.zio.iiar.pwr.wroc.pl/sdizo.html

Bardziej szczegółowo

Sortowanie - wybrane algorytmy

Sortowanie - wybrane algorytmy Sortowanie - wybrane algorytmy Aleksandra Wilkowska Wydział Matematyki - Katedra Matematyki Stosowanej Politechika Wrocławska 2 maja 2018 1 / 39 Plan prezentacji Złożoność obliczeniowa Sortowanie bąbelkowe

Bardziej szczegółowo

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów. Rekurencja Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów. Zgodnie ze znaczeniem informatycznym algorytm rekurencyjny to taki który korzysta z samego

Bardziej szczegółowo

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy Informatyka wprowadze do algorytmów (II) dr hab. inż. Mikołaj Morzy plan wykładu cechy algorytmów sposoby zapisu algorytmów klasyfikacja algorytmów przykłady algorytmów sumowa przeszukiwa ciągu liczb sortowa

Bardziej szczegółowo

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne. Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

Bardziej szczegółowo

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane: Wykład 4 grafy Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, E zbiór krawędzi, Grafy dzielimy na grafy skierowane i nieskierowane: Formalnie, w grafach skierowanych E jest podzbiorem

Bardziej szczegółowo

Programowanie dynamiczne

Programowanie dynamiczne Programowanie dynamiczne Patryk Żywica 5 maja 2008 1 Spis treści 1 Problem wydawania reszty 3 1.1 Sformułowanie problemu...................... 3 1.2 Algorytm.............................. 3 1.2.1 Prosty

Bardziej szczegółowo

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)! Rekurencja Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)! Pseudokod: silnia(n): jeżeli n == 0 silnia = 1 w przeciwnym

Bardziej szczegółowo

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania Politechnika Poznańska Modele i narzędzia optymalizacji w systemach informatycznych zarządzania Joanna Józefowska POZNAŃ 2010/11 Spis treści Rozdział 1. Metoda programowania dynamicznego........... 5

Bardziej szczegółowo

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2015/2016. Forma studiów: Stacjonarne Kod kierunku: 11.

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2015/2016. Forma studiów: Stacjonarne Kod kierunku: 11. Państwowa Wyższa Szko la Zawodowa w Nowym Sa czu Karta przedmiotu Instytut Techniczny obowiązuje studentów rozpoczynających studia w roku akademickim 201/2016 Kierunek studiów: Informatyka Profil: Ogólnoakademicki

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 1 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan wykładów (1) Algorytmy i programy Proste typy danych Rozgałęzienia

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Kierunek Profil kształcenia Nazwa jednostki realizującej moduł/przedmiot: Kontakt (tel./email): Osoba odpowiedzialna za przedmiot: Osoba(y) prowadząca(e) Przedmioty wprowadzające wraz z wymaganiami wstępnymi

Bardziej szczegółowo

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques KARTA KURSU Nazwa Nazwa w j. ang. Algorytmy, struktury danych i techniki programowania Algorithms, Data Structures and Programming Techniques Kod Punktacja ECTS* 3 Koordynator dr Paweł Pasteczka Zespół

Bardziej szczegółowo

Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I

Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I Uniwersytet Śląski w Katowicach str. 1 Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I Sylabus modułu: Informatyka A (03-MO1S-12-InfoA) 1. Informacje ogólne koordynator modułu

Bardziej szczegółowo

Programowanie dynamiczne

Programowanie dynamiczne Programowanie dynamiczne Programowanie rekurencyjne: ZALETY: - prostota - naturalność sformułowania WADY: - trudność w oszacowaniu zasobów (czasu i pamięci) potrzebnych do realizacji Czy jest możliwe wykorzystanie

Bardziej szczegółowo

2.8. Algorytmy, schematy, programy

2.8. Algorytmy, schematy, programy https://app.wsipnet.pl/podreczniki/strona/38766 2.8. Algorytmy, schematy, programy DOWIESZ SIĘ co oznaczają pojęcia: algorytm, schemat blokowy, język programowania, jakie są sposoby obliczania największego

Bardziej szczegółowo