Wstęp do programowania

Podobne dokumenty
Wstęp do programowania

Wstęp do programowania

Wstęp do programowania

Wstęp do programowania

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

Programowanie dynamiczne

Programowanie dynamiczne cz. 2

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

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

Algorytmy i struktury danych.

Wstęp do programowania

Algorytmy i Struktury Danych

Strategia "dziel i zwyciężaj"

Projektowanie i analiza algorytmów

Programowanie dynamiczne i algorytmy zachłanne

Temat: Algorytmy zachłanne

Wstęp do programowania

Wstęp do Programowania potok funkcyjny

Schemat programowania dynamicznego (ang. dynamic programming)

Wykład 5 Dopasowywanie lokalne

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Programowanie dynamiczne (optymalizacja dynamiczna).

Zaawansowane algorytmy i struktury danych

INFORMATYKA WYBRANE ALGORYTMY OPTYMALIZACYJNE KRYPTOLOGIA.

Sortowanie przez scalanie

Dopasowanie par sekwencji

Optymalizacja. Algorytmy dokładne

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

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

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 )

D: Dopasowanie sekwencji. Programowanie dynamiczne

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

Algorytmy i Struktury Danych.

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

Zadania laboratoryjne i projektowe - wersja β

Ćwiczenie 3 Programowanie dynamiczne

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

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

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

TEORETYCZNE PODSTAWY INFORMATYKI

Analiza algorytmów zadania podstawowe

Optymalizacja. Algorytmy dokładne

Matematyczne Podstawy Informatyki

Politechnika Wrocławska. Dopasowywanie sekwencji Sequence alignment

Uwaga: Funkcja zamień(a[j],a[j+s]) zamienia miejscami wartości A[j] oraz A[j+s].

Efektywna metoda sortowania sortowanie przez scalanie

Wstęp do programowania

Transformata Fouriera. Sylwia Kołoda Magdalena Pacek Krzysztof Kolago

Wstęp do programowania

TEORETYCZNE PODSTAWY INFORMATYKI

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

Programowanie dynamiczne

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

Zadanie 5 - Algorytmy genetyczne (optymalizacja)

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podejście zachłanne, a programowanie dynamiczne

Teoretyczne podstawy informatyki

ALGORYTMY I STRUKTURY DANYCH

Wstęp do programowania

Programowanie liniowe całkowitoliczbowe

Sortowanie danych. Jolanta Bachan. Podstawy programowania

Wykład 4: Iteracja, indukcja i rekurencja

Rekurencja. Przygotowała: Agnieszka Reiter

Programowanie dynamiczne. Tadeusz Trzaskalik

Algorytmika Problemów Trudnych

TEORETYCZNE PODSTAWY INFORMATYKI

Teoretyczne podstawy informatyki

wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.)

Wykład 10 Grafy, algorytmy grafowe

Teoretyczne podstawy informatyki

Efektywność Procedur Obliczeniowych. wykład 5

Szeregowanie zadań. Wykład nr 3. dr Hanna Furmańczyk

1. Algorytmika. WPROWADZENIE DO ALGORYTMIKI Wprowadzenie do algorytmów. Pojęcie algorytmu.

Wymagania egzaminacyjne z matematyki. Klasa 3C. MATeMATyka. Nowa Era. Klasa 3

Programowanie liniowe

Programowanie - wykład 4

Wykład 5: Iteracja, indukcja i rekurencja Sortowanie

Analiza algorytmów zadania podstawowe

Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).

Sylabus modułu: Matematyczne podstawy informatyki (kod modułu:03-mo2n-12-mpln)

podać definicję metody zachłannej stosowaną w algorytmice; wymienić cechy algorytmów zachłannych;

Algorytmy i Struktury Danych.

Algorytmy aproksymacyjne i parametryzowane

Kurs MATURA Z INFORMATYKI

Sortowanie. LABORKA Piotr Ciskowski

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

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

Wykład VII. Kryptografia Kierunek Informatyka - semestr V. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

Programowanie liniowe całkowitoliczbowe

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

Algorytmika w bioinformatyce

Wstęp do programowania

EGZAMIN MATURALNY 2012 INFORMATYKA

Algorytmika w bioinformatyce

zadaniem programowania liniowego całkowitoliczbowego. nazywamy zadaniem programowania liniowego 0-1. Zatem, w

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

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

Podstawy Informatyki. Metalurgia, I rok. Rekurencja. skomplikowane zadanie. Rekurencja

Podstawy Informatyki. Metalurgia, I rok. Wykład 5 Rekurencja

Transkrypt:

Wstęp do programowania Programowanie dynamiczne Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 1 / 21

Dziel i zwyciężaj przypomnienie 1 Podział problemu na 2 lub więcej części 2 Rozwiązanie każdej z części niezależnie 3 Scalenie rozwiązań części w rozwiązanie problemu pierwotnego Każdy z podproblemów rozwiązywany jest tą samą metodą. Naturalna implementacja przy pomocy rekurencji. Hanoi 1 Podział: Hanoi(n, f, t, h) Hanoi(n-1, f, h, t), Hanoi(n-1, h, t, f) 2 Scalenie: Hanoi(n-1, f, h, t), f t, Hanoi(n-1, h, t, f) P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 2 / 21

Dziel i zwyciężaj przypomnienie Nie każdy podział jest dobry. F n+1 = F n + F n 1 F n zawiera F n 1. P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 3 / 21

Programowanie dynamiczne Rozwiązania podproblemów są zapamiętywane. Gwarantuje to, że nic nie jest liczone dwa razy. Top-down Strategia analogiczna do rekurencji z tym, że wyniki wywołań funkcji są zapamiętywane. Przykład d ={0:0, 1 : 1 } d ef f i b ( n, d ) : i f n i n d : r e t u r n d [ n ] e l s e : r e s=f i b ( n 1,d)+ f i b ( n 2,d ) d [ n]= r e s r e t u r n r e s f i b ( 5, d ) P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 4 / 21

Programowanie dynamiczne Rozwiązania podproblemów są zapamiętywane. Gwarantuje to, że nic nie jest liczone dwa razy. Bottom-up Wiadomo, że trzeba rozważyć wszystkie podproblemy, więc zaczyna się od najmniejszego. Przykład f =[0,1] f o r i i n range ( 2, 6 ) : f. append ( f [ i 1]+ f [ i 2]) P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 5 / 21

Podciąg ściśle rosnący Dany jest ciąg liczb całkowitych. Podać maksymalną długość ściśle rosnącego podciągu. Przykład 5 2 8 6 3 6 9 7 P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 6 / 21

Podciąg ściśle rosnący Dany jest ciąg liczb całkowitych. Podać maksymalną długość ściśle rosnącego podciągu. Przykład 5 2 8 6 3 6 9 7 s i i-ty element ciągu L(i) długość maksymalnego rosnącego podciągu kończącego się s i L(0) = 1 L(1) = 1 L(2) = 2... P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 6 / 21

Podciąg ściśle rosnący Dany jest ciąg liczb całkowitych. Podać maksymalną długość ściśle rosnącego podciągu. Przykład 5 2 8 6 3 6 9 7 s i i-ty element ciągu L(i) długość maksymalnego rosnącego podciągu kończącego się s i L(0) = 1 L(1) = 1 L(2) = 2... L(k) = 1 + max L(i) i<k,s i <s k P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 6 / 21

Podciąg ściśle rosnący Dany jest ciąg liczb całkowitych. Podać maksymalną długość ściśle rosnącego podciągu. Przykład 5 2 8 6 3 6 9 7 P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 7 / 21

Podciąg ściśle rosnący Dany jest ciąg liczb całkowitych. Podać maksymalną długość ściśle rosnącego podciągu. Przykład 5 2 8 6 3 6 9 7 s i i-ty element ciągu L(i) długość maksymalnego rosnącego podciągu kończącego się s i L(0) = 1 L(1) = 1 L(2) = 2... P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 7 / 21

Podciąg ściśle rosnący Dany jest ciąg liczb całkowitych. Podać maksymalną długość ściśle rosnącego podciągu. Przykład 5 2 8 6 3 6 9 7 s i i-ty element ciągu L(i) długość maksymalnego rosnącego podciągu kończącego się s i L(0) = 1 L(1) = 1 L(2) = 2... L(k) = 1 + max L(i) i<k,s i <s k P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 7 / 21

Podciąg ściśle rosnący c.d. Algorytm 1 Dla k = 0,..., n 1: 1 oblicz L(k) (używając L(i) dla i < k) 2 Oblicz max k L(k) P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 8 / 21

Problem plecakowy Złodziej dysponuje workiem, który może pomieścić przedmioty o łącznej wadze w. W jaki sposób może zmaksymalizować wartość łupu, jeżeli ma do wyboru n rodzajów przedmiotów o wagach i wartościach zadanych ciągami w i, v i. Rozważ dwa przypadki: Apple store liczba dostępnych przedmiotów każdego rodzaju jest nieograniczona Galeria sztuki każdy przedmiot występuje w dokładnie jednym egzemplarzu Przykład i w i v i 1 6 $30 2 3 $14 3 4 $16 4 2 $9 P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 9 / 21

Problem plecakowy Przykład i w i v i 1 6 $30 2 3 $14 3 4 $16 4 2 $9 Apple store 1, 4, 4 $48 Galeria 1, 3 $46 P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 10 / 21

Problem plecakowy z powtórzeniami (AS) Jaka dekompozycja problemu? po rozmiarze plecaka po zbiorze przedmiotów P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 11 / 21

Problem plecakowy z powtórzeniami (AS) Jaka dekompozycja problemu? po rozmiarze plecaka po zbiorze przedmiotów K(w) maksymalny łup osiągalny przy pomocy plecaka o pojemności w P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 11 / 21

Problem plecakowy z powtórzeniami (AS) Jaka dekompozycja problemu? po rozmiarze plecaka po zbiorze przedmiotów K(w) maksymalny łup osiągalny przy pomocy plecaka o pojemności w K(w) = max i:w i w K(w w i) + v i P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 11 / 21

Problem plecakowy z powtórzeniami (AS) Jaka dekompozycja problemu? po rozmiarze plecaka po zbiorze przedmiotów K(w) maksymalny łup osiągalny przy pomocy plecaka o pojemności w K(w) = max i:w i w K(w w i) + v i Algorytm wypełnia jednowymiarową tablicę. P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 11 / 21

Problem plecakowy bez powtórzeń (galeria) Jaka dekompozycja problemu? po rozmiarze plecaka po zbiorze przedmiotów P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 12 / 21

Problem plecakowy bez powtórzeń (galeria) Jaka dekompozycja problemu? po rozmiarze plecaka po zbiorze przedmiotów K(w, i) maksymalny łup osiągalny przy pomocy plecaka o pojemności w i przedmiotów 0,..., i P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 12 / 21

Problem plecakowy bez powtórzeń (galeria) Jaka dekompozycja problemu? po rozmiarze plecaka po zbiorze przedmiotów K(w, i) maksymalny łup osiągalny przy pomocy plecaka o pojemności w i przedmiotów 0,..., i K(w, i) = max {K(w, i 1), K(w w i, i 1) + v i } Druga wartość jest brana pod uwagę wtw. gdy w i w. P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 12 / 21

Problem plecakowy bez powtórzeń (galeria) Jaka dekompozycja problemu? po rozmiarze plecaka po zbiorze przedmiotów K(w, i) maksymalny łup osiągalny przy pomocy plecaka o pojemności w i przedmiotów 0,..., i K(w, i) = max {K(w, i 1), K(w w i, i 1) + v i } Druga wartość jest brana pod uwagę wtw. gdy w i w. Algorytm wypełnia dwuwymiarową tablicę. P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 12 / 21

Uliniowienie sekwencji Para sekwencji DNA ACACACTA AGCACACA Uliniowienie sekwencji Wstawienie odstępów, tak aby zmaksymalizować jakość uliniowienia mierzoną podobieństwem aminokwasów i ilością odstępów. A-CACACTA AGCACAC-A P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 13 / 21

Uliniowienie sekwencji c.d. Miara jakości uliniowienia w : Σ { } Σ { } R Na przykład: 2 a = b w(a, b) = 0 a = lub b = 1 w p.p. P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 14 / 21

Algorytm Smitha-Watermana S 1 = a 1 a 2... a n S 2 = b 1 b 2... b m H(i, j) miara najlepszego uliniowienia sekwencji a 1 a 2... a i, b 1 b 2... b j Definicja rekurencyjna H(i, 0) = ik=1 w(a k, ), 0 i m H(0, j) = j k=1 w(, b k), 0 j n H(i 1, j 1) + w(a i, b j ) H(i, j) = max H(i 1, j) + w(a i, ) H(i, j 1) + w(, b j ) m, 1 j n dopasowanie delecja, 1 i insercja P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 15 / 21

Algorytm Smitha-Watermana c.d. Przykład A C A C A C T A 0 0 0 0 0 0 0 0 0 A 0 2 1 2 1 2 1 0 2 G 0 1 1 1 1 1 1 0 1 H = C 0 0 3 2 3 2 3 2 1 A 0 2 2 5 4 5 4 3 4 C 0 1 4 4 7 6 7 6 5 A 0 2 3 6 6 9 8 7 8 C 0 1 4 5 8 8 11 10 9 A 0 2 3 6 7 10 10 10 12 P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 16 / 21

Jak wybierać podproblemy? Kilka standardowych podejść 1 Wejście postaci x 0, x 1,..., x n podproblemy postaci x 0, x 1,..., x i 2 Wejście postaci x 0, x 1,..., x n i y 0, y 1,..., y m podproblemy postaci x 0, x 1,..., x i i y 0, y 1,..., y j 3 Wejście postaci x 0, x 1,..., x n podproblemy postaci x i, x i+1,..., x j 4 Wejście postaci drzewa (ukorzenionego) podproblemy postaci ukorzenionych poddrzew P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 17 / 21

Zadanie 1 Zaimplemetuj znajdowanie maksymalnego rosnącego podciągu. P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 18 / 21

Zadanie 2, 3 problem plecakowy Zaimplementuj algorytm rozwiązujący problem plecakowy w wariancje z powtórzeniami i bez. P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 19 / 21

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

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