Wstęp do programowania

Podobne dokumenty
Wstęp do programowania

Programowanie i projektowanie obiektowe

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

Sortowanie danych. Jolanta Bachan. Podstawy programowania

Programowanie dynamiczne i algorytmy zachłanne

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Wstęp do programowania

Wstęp do programowania

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

Temat: Algorytmy zachłanne

Matematyczne Podstawy Informatyki

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

Wstęp do programowania

Strategia "dziel i zwyciężaj"

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

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 wyznaczania centralności w sieci Szymon Szylko

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Wstęp do programowania

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

Temat: Technika zachłanna. Przykłady zastosowania. Własno wyboru zachłannego i optymalnej podstruktury.

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

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

Wstęp do programowania

Programowanie dynamiczne

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. LABORKA Piotr Ciskowski

Algorytmy i Struktury Danych.

Wstęp do Programowania potok funkcyjny

Algorytmy i Struktury Danych.

Metoda podziału i ograniczeń

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

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

Podejście zachłanne, a programowanie dynamiczne

Wstęp do programowania

Programowanie dynamiczne

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

Lista 4. Kamil Matuszewski 22 marca 2016

Algorytmy i Struktury Danych

Wstęp do programowania

Programowanie dynamiczne cz. 2

Podstawowe własności grafów. Wykład 3. Własności grafów

Algorytm selekcji Hoare a. Łukasz Miemus

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

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

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

Temat: Algorytmy zachłanne

Schemat programowania dynamicznego (ang. dynamic programming)

Działanie algorytmu oparte jest na minimalizacji funkcji celu jako suma funkcji kosztu ( ) oraz funkcji heurystycznej ( ).

Kompresja danych kodowanie Huffmana. Dariusz Sobczuk

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

PROBLEM: SORTOWANIE PRZEZ ODWRÓCENIA METODA: ALGORYTMY ZACHŁANNE

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

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

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

Szukanie najkrótszych dróg z jednym ródłem

INFORMATYKA WYBRANE ALGORYTMY OPTYMALIZACYJNE KRYPTOLOGIA.

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

TEORETYCZNE PODSTAWY INFORMATYKI

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

0-0000, , , itd

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

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

Metody przeszukiwania

Materiały dla finalistów

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Sortowanie przez scalanie

Algorytmy i Struktury Danych.

Efektywna metoda sortowania sortowanie przez scalanie

Rozwiązywanie problemów z użyciem Solvera programu Excel

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova

Minimalne drzewa rozpinające

EGZAMIN MATURALNY Z INFORMATYKI 17 MAJA 2016 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

Algorytmy i struktury danych IS/IO, WIMiIP

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

KARTA MODUŁU KSZTAŁCENIA

Pole wielokąta. Wejście. Wyjście. Przykład

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Znajdowanie wyjścia z labiryntu

Algorytmy i struktury danych.

Zadanie 1. Zadanie 2. Zadanie 3. Zadanie 4. Zadanie 5. Zadanie 6. Zadania przykładowe do pierwszego kolokwium z AA

Ćwiczenie 1 Planowanie trasy robota mobilnego w siatce kwadratów pól - Algorytm A

Algorytmiczna teoria grafów

5. Rekurencja. Przykłady

Algorytmy. Programowanie Proceduralne 1

Wstęp do programowania. Dziel i rządź. Piotr Chrząstowski-Wachtel

TEORETYCZNE PODSTAWY INFORMATYKI

Bukiety matematyczne dla gimnazjum

Struktury Danych i Złożoność Obliczeniowa

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

Ćwiczenie 3 Programowanie dynamiczne

Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński

Programowanie dynamiczne

Programowanie Równoległe i Rozproszone. Algorytm Kung a. Algorytm Kung a. Programowanie Równoległe i Rozproszone Wykład 8. Przygotował: Lucjan Stapp

Wyznaczanie optymalnej trasy problem komiwojażera

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Transkrypt:

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 budowaniu rozwiązania problemu przez dokonywanie lokalnie optymalnych wyborów. P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 2 / 25

Algorytmy zachłanne Strategia polegająca na budowaniu rozwiązania problemu przez dokonywanie lokalnie optymalnych wyborów. W większości przypadków ta strategia nie prowadzi do optymalnego rozwiązania P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 2 / 25

Algorytmy zachłanne Strategia polegająca na budowaniu rozwiązania problemu przez dokonywanie lokalnie optymalnych wyborów. W większości przypadków ta strategia nie prowadzi do optymalnego rozwiązania Analogia Podchodzenie pod górę: P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 2 / 25

Algorytmy zachłanne c.d. Problem wydawania reszty W jaki sposób dysponując monetami o danych nominałach (np. 5/2/1) wydać resztę używając do tego minimalnej liczby monet. Rozwiązanie zachłanne polega na wydawaniu monety o największym możliwym nominale. Np.: 13 = 5 + 5 + 2 + 1 P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 3 / 25

Algorytmy zachłanne c.d. Problem wydawania reszty W jaki sposób dysponując monetami o danych nominałach (np. 5/2/1) wydać resztę używając do tego minimalnej liczby monet. Rozwiązanie zachłanne polega na wydawaniu monety o największym możliwym nominale. Np.: 13 = 5 + 5 + 2 + 1 Metoda zachłanna nie działa dla każdego zestawu monet. Np. dla monet 5/2: 6 = 5+? P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 3 / 25

Zastosowania Własność optymalnej podstruktury Optymalne rozwiązanie problemu jest funkcją optymalnych rozwiązań podproblemów. Rozwiązania dokładne (optymalne) ortogonalizacja układu wektorów kodowanie Huffmana problem wyboru czynności algorytm Dijkstry P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 4 / 25

Zastosowania Własność optymalnej podstruktury Optymalne rozwiązanie problemu jest funkcją optymalnych rozwiązań podproblemów. Rozwiązania dokładne (optymalne) ortogonalizacja układu wektorów kodowanie Huffmana problem wyboru czynności algorytm Dijkstry Heurystyki Algorytmy zachłanne są wydajne. Często się ich używa do znajdowania rozwiązań przybliżonych. P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 4 / 25

Algorytm Dijkstry Problem Dany jest graf nieskierowany z nieujemnymi wagami krawędzi. Wyznaczyć ścieżkę pomiędzy danymi wierzchołkami o najmniejszej wadze. Przykładowe zastosowanie Dane są połączenia drogowe pomiędzy miastami. Wyznaczyć najkrótszą trasę. P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 5 / 25

Algorytm Dijkstry Algorytm Przez s oznaczamy wierzchołek źródłowy, w(i, j) to waga krawędzi (i, j). 1 Stwórz tablicę d odległości od źródła dla wszystkich wierzchołków grafu. Na początku d[s] = 0, zaś d[v] = dla wszystkich pozostałych wierzchołków. 2 Utwórz kolejkę priorytetową Q wszystkich wierzchołków grafu. Priorytetem kolejki jest aktualnie wyliczona odległość od wierzchołka źródłowego s. 3 Dopóki kolejka nie jest pusta: 1 Usuń z kolejki wierzchołek u o najniższym priorytecie (wierzchołek najbliższy źródła, który nie został jeszcze rozważony) 2 Dla każdego sąsiada v wierzchołka u dokonaj relaksacji poprzez u: jeśli d[u] + w(u, v) < d[v] (poprzez u da się dojść do v szybciej niż dotychczasową ścieżką), to d[v] := d[u] + w(u, v). Na końcu tablica d zawiera najkrótsze odległości do wszystkich wierzchołków. P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 6 / 25

Zadanie 1 Segment o maksymalnej sumie Zadanie Napisz program znajdujący w zadanej tablicy A typu int[n], maksymalną sumę segmentu (spójnego fragmentu tablicy). Przyjmujemy, że segment pusty ma sumę 0. P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 7 / 25

Zadanie 1 Segment o maksymalnej sumie Zadanie Napisz program znajdujący w zadanej tablicy A typu int[n], maksymalną sumę segmentu (spójnego fragmentu tablicy). Przyjmujemy, że segment pusty ma sumę 0. Wskazówki Najprostsze rozwiązanie to dla wszystkich możliwych segmentów policzyć ich sumę. P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 7 / 25

Zadanie 1 Segment o maksymalnej sumie Zadanie Napisz program znajdujący w zadanej tablicy A typu int[n], maksymalną sumę segmentu (spójnego fragmentu tablicy). Przyjmujemy, że segment pusty ma sumę 0. Wskazówki Najprostsze rozwiązanie to dla wszystkich możliwych segmentów policzyć ich sumę. W powyższym rozwiązaniu sumę pewnych segmentów liczy się wiele razy. Lepiej dla danego początku l obliczać po kolei sumy coraz dłuższych segmentów zaczynających się w l. P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 7 / 25

Zadanie 1 Segment o maksymalnej sumie Zadanie Napisz program znajdujący w zadanej tablicy A typu int[n], maksymalną sumę segmentu (spójnego fragmentu tablicy). Przyjmujemy, że segment pusty ma sumę 0. Wskazówki Najprostsze rozwiązanie to dla wszystkich możliwych segmentów policzyć ich sumę. W powyższym rozwiązaniu sumę pewnych segmentów liczy się wiele razy. Lepiej dla danego początku l obliczać po kolei sumy coraz dłuższych segmentów zaczynających się w l. Niech Pref(i) oznacza sumę elementów tablicy od 1 do i włącznie. Suma segmentu od l do p to oczywiście Pref(p) - Pref(l-1). Maksymalną sumę segmentu kończącego się w p uzyskamy odejmując od Pref(p) minimalne Pref(i) gdzie i przebiega [1..p]. P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 7 / 25

Zadanie 1 Segment o maksymalnej sumie c.d. Przydatna sztuczka w tym problemie sumy prefiksowe e 1 max 0 s e N i=s T i = k 1 P(k) = i=0 T i e 1 T i = P(e) P(s) i=s max P(e) P(s) = max P(e) min P(s) 0 s e N 0 e N 0 s e P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 8 / 25

Zadanie 2 Sortowanie szybkie (quick sort) Algorytm Algorytm działa rekursywnie - wybierany jest pewien element tablicy, tzw. element osiowy, po czym na początek tablicy przenoszone są wszystkie elementy mniejsze od niego, na koniec wszystkie większe, a w powstałe między tymi obszarami puste miejsce trafia wybrany element. Potem sortuje się osobno początkową i końcową część tablicy. Rekursja kończy się, gdy kolejny fragment uzyskany z podziału zawiera pojedynczy element, jako że jednoelementowa podtablica nie wymaga sortowania. Niech l oznacza indeks pierwszego, r ostatniego elementu sortowanego fragmentu tablicy, zaś i indeks elementu, na którym tablica została podzielona. P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 9 / 25

Zadanie 2 Sortowanie szybkie (quick sort) c.d. Pseudokod PROCEDURE Quicksort(l, r) BEGIN IF l < r THEN { jeśli fragment dłuższy niż 1 element } BEGIN i = PodzielTablice(l, r); { podziel i zapamiętaj punkt Quicksort(l, i-1); { posortuj lewą część } Quicksort(i, r); { posortuj prawą część } END END P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 10 / 25

Zadanie 3 Smith-Waterman Napisz program obliczający optymalne globalne uliniowienie podanych sekwencji. P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 11 / 25

Strona wykładu http://bioexploratorium.pl/wiki/wstęp_do_programowania 2013z P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 12 / 25