Algorytmika w bioinformatyce

Podobne dokumenty
Algorytmika w bioinformatyce

Zaawansowane algorytmy i struktury danych

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

Matematyczne Podstawy Informatyki

TEORETYCZNE PODSTAWY INFORMATYKI

Złożoność algorytmów. Wstęp do Informatyki

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

Teoretyczne podstawy informatyki

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,

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

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

Podstawy Informatyki. Sprawność algorytmów

Algorytmika i pseudoprogramowanie

Wprowadzenie do złożoności obliczeniowej

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

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Wykład 2. Poprawność algorytmów

Zasady analizy algorytmów

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Algorytmy i struktury danych, C3

Efektywność algorytmów

Algorytmy i Struktury Danych.

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

Laboratorium nr 1. i 2.

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

1. Analiza algorytmów przypomnienie

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

Szczegółowy program kursów szkoły programowania Halpress

TEORETYCZNE PODSTAWY INFORMATYKI

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

Wstęp do programowania

Algorytmy i Struktury Danych, 2. ćwiczenia

TEORETYCZNE PODSTAWY INFORMATYKI

KARTA PRZEDMIOTU. Algorytmy i struktury danych, C4

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

Temat: Algorytmy zachłanne

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

Algorytmy i Struktury Danych

Analiza algorytmów zadania podstawowe

Podstawy programowania. Podstawy C# Przykłady algorytmów

Podyplomowe Studium Informatyki

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

Kurs MATURA Z INFORMATYKI

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

Wybrane wymagania dla informatyki w gimnazjum i liceum z podstawy programowej

Teoria obliczeń i złożoność obliczeniowa

Technologie informacyjne Wykład VII-IX

Zaliczenie. Egzamin. lub. Wykład. Zaliczenie. Ćwiczenie. 3 zadania. Projekty. Ocena. Na ocenę

Sortowanie przez wstawianie

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

Programowanie dynamiczne

Algorytmy i Struktury Danych

Wstęp do programowania

Efektywność Procedur Obliczeniowych. wykład 5

Programowanie dynamiczne cz. 2

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

Algorytmy komputerowe. dr inż. Jarosław Forenc

Projektowanie i analiza algorytmów

Teoretyczne podstawy informatyki

Rozkład materiału do realizacji informatyki w szkole ponadgimnazjalnej w zakresie rozszerzonym

INFORMATYKA SORTOWANIE DANYCH.

Algorytm i złożoność obliczeniowa algorytmu

Algorytmy w teorii liczb

Algorytmy i Struktury Danych.

PRZEWODNIK PO PRZEDMIOCIE

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

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

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

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

Algorytmy i Struktury Danych

Złożoność Obliczeniowa Algorytmów

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

Wstęp do programowania

Schemat programowania dynamicznego (ang. dynamic programming)

koordynator modułu dr hab. Michał Baczyński rok akademicki 2012/2013

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

Algorytmy i struktury danych Matematyka III sem.

Sortowanie danych. Jolanta Bachan. Podstawy programowania

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

Sortowanie w czasie liniowym

Liczby pierwsze - wstęp

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

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 9 Rekurencja

TEORETYCZNE PODSTAWY INFORMATYKI

Struktura danych. Sposób uporządkowania informacji w komputerze.

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

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

KARTA MODUŁU KSZTAŁCENIA

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Algorytmy i Struktury Danych.

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

Analiza algorytmów zadania podstawowe

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

Algorytmy sortujące i wyszukujące

TEORETYCZNE PODSTAWY INFORMATYKI

Programowanie dynamiczne i algorytmy zachłanne

Zadania obliczeniowe, algorytmy i złożoność obliczeniowa

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

Rekurencja. Przygotowała: Agnieszka Reiter

Transkrypt:

Algorytmika w bioinformatyce Kurs dla kierunku BIOINFORMATYKA 2016/2017 Prowadzący: Prof. Danuta Makowiec danuta.makowiec@gmail.com IFTiA, pok. 353, tel.: 58 523 2466 Motywacja 2 Cztery etapy rekonstrukcji genomu: cięcie DNA na fragmenty Fragmenty DNA są uzyskiwane poprzez enzymy restrykcyjne tworzenie milionów kopii każdego fragmentu Klonowanie Reakcja łańcuchowa polimerazy odczytanie każdej pary w każdym fragmencie Techniki sekwencjonowania Macierze DNA zestawienie wszystkich fragmentów we właściwym porządku Algorytmy bioinformatyki usiłują zrekonstruować oryginalne sekwencje. 1

Rozkład jazdy 3 XXX 153 Wykłady Czwartek, godz.: 11.15 do 13.00 Na stronie będą sukcesywnie pojawiać się materiały z wykładów http://www.fizdm.strony.ug.edu.pl/me/materialy.html Warunek uzyskania zaliczenia wykładu: pozytywne napisanie kolokwium zaliczającego. termin kolokwium: 25 stycznia 2016, godz. 11:15. Podręczniki 4 http://www.bioalgorithms.info http://www.cs.unc.edu/~prins/classes/555/ Schemat omawianych treści: problem biologiczny algorytmiczna technika rozwiązania : ćwiczenia audytoryjne praktyczne kodowanie rozwiązania : laboratoria programistyczne analiza złożoności 2

WYKŁAD A: PODSTAWOWE TECHNIKI ALGORYTMICZNE Algorytmika dla bioinformatyki Prowadzący: Prof. Danuta Makowiec danuta.makowiec@gmail.com IFTiA, pok. 353, tel.: 58 523 2466 Algorytmika 6 Algorytm to zestaw dobrze zdefiniowanych instrukcji, które należy wykonać, aby rozwiązać określony problem. To, co decyduje o jakości algorytmu to jego poprawność i wydajność (złożoność) Mamy wypracowane różne strategie projektowania algorytmów takie jak na przykład: wyczerpująca, zachłanna, dynamiczna czy rekurencyjna Mamy wypracowany sposób oceny złożoności algorytmów: analiza asymptotyczna 3

Problem kasjera 7 wydać resztę optymalnie czyli wykorzystując możliwie najmniejszą liczbę monet przy zadanym zestawie monet. Wydawaj możliwie największą monetę z aktualnej reszty strategia zachłanna versus strategia wyczerpująca Strategia zachłanna: wydawaj resztę aktualnie największym nominałem Strategia wyczerpująca: kolejno rozważ wszystkie możliwe kombinacje monet Algorytm zawsze poprawny, ale też i zawsze niewydajny Ile tych możliwie najwiekszych monet można wypłacić Algorytm BetterChange jest niepoprawny. Źle oblicza resztę dla np.: M=40, c=(25, 20, 10, 5, 1) Algorytm mięśniaka 8 4

9 Strategia rekurencji Strategia rekurencji: rozwiąż dany problem zakładając, że znasz rozwiązanie jego prostszej wersji Wieże Hanoi (1883) Oblicz, ile ruchów co najmniej musisz wykonać, aby przenieść wszystkie klocki z patyka 1 na patyk 3, przy czym wolno Ci: Lucas i legenda wieży Brahmy w Hanoi Wieże Hanoi (1883) rozwiązanie rekurencyjne Oblicz ile ruchów co najmniej musisz wykonać, aby przenieść wszystkie klocki z patyka 1 na patyk 3, przy czym wolno Ci: Przypadek wieży zbudowanej z dwóch klocków 2013-11-04 Danuta Makowiec: Algorytmika, wykład iv [10] 5

Wieże Hanoi (1883) rozwiązanie rekurencyjne Oblicz ile ruchów co najmniej musisz wykonać, aby przenieść wszystkie klocki z patyka 1 na patyk 3, przy czym wolno Ci: Przypadek wieży zbudowanej z dwóch klocków 2013-11-04 Danuta Makowiec: Algorytmika, wykład iv [11] Wieże Hanoi (1883) rozwiązanie rekurencyjne Oblicz ile ruchów co najmniej musisz wykonać, aby przenieść wszystkie klocki z patyka 1 na patyk 3, przy czym wolno Ci: Przypadek wieży zbudowanej z trzech klocków 2013-11-04 Danuta Makowiec: Algorytmika, wykład iv [12] 6

Wieże Hanoi (1883) rozwiązanie rekurencyjne Oblicz ile ruchów co najmniej musisz wykonać, aby przenieść wszystkie klocki z patyka 1 na patyk 3, przy czym wolno Ci: Przypadek wieży zbudowanej z trzech klocków Przenieśliśmy wieżę dwu-klockową z patyka 1 na patyk 2 korzystając z patyka 3. Przenieśliśmy największy klocek na jego miejsce patyk 3. 2013-11-04 Danuta Makowiec: Algorytmika, wykład iv [13] Wieże Hanoi (1883) rozwiązanie rekurencyjne Oblicz ile ruchów co najmniej musisz wykonać, aby przenieść wszystkie klocki z patyka 1 na patyk 3, przy czym wolno Ci: Przypadek wieży zbudowanej z trzech klocków 2013-11-04 Danuta Makowiec: Algorytmika, wykład iv [14] 7

Wieże Hanoi (1883) rozwiązanie rekurencyjne Oblicz ile ruchów co najmniej musisz wykonać, aby przenieść wszystkie klocki z patyka 1 na patyk 3, przy czym wolno Ci: Przenieśliśmy wieżę dwu-klockową z patyka 2 na patyk 3 korzystając patyka 1 Przypadek wieży zbudowanej z trzech klocków A co jeśli wieża zbudowana jest jest z 4 i więcej klocków? 2013-11-04 Danuta Makowiec: Algorytmika, wykład iv [15] Strategia rekurencji D. Makowiec: A - złożoność obliczeniowa 16 Strategia rekurencji: rozwiąż dany problem zakładając, że znasz rozwiązanie jego prostszej wersji Wieże Hanoi (1883) Oblicz, ile ruchów co najmniej musisz wykonać, aby przenieść wszystkie klocki z patyka 1 na patyk 3, przy czym wolno Ci: A co jeśli wieża zbudowana jest jest z 4 i więcej klocków? 8

17 Strategia rekurencji Strategia rekurencji: rozwiąż dany problem zakładając, że znasz rozwiązanie jego prostszej wersji Wieże Hanoi (1883) Oblicz, ile ruchów co najmniej musisz wykonać, aby przenieść wszystkie klocki z patyka 1 na patyk 3, przy czym wolno Ci: Lucas i legenda wieży Brahmy w Hanoi Wieże Hanoi (1883) przykład algorytmu rekukencyjnego Ile ruchów trzeba wykonać? 2013-11-04 Algorytmika, wykład iv Czy to dużo? 1 dysk 1 ruch 2 dyski 3 ruchy 3 dyski 7 ruchów 4 dyski 15 ruchów 5 dysków 31 ruchów.. 20 dysków 1 048 575 ruchów 32 dyski 4 294 967 295 ruchów 64 dyski 18 446 744 073 709 551 615 9

META KOD ALGORYTMÓW 10/11/2016 19 Rzędy wielkości Nauczka: Sensowne porównania liczb to tylko takie, które są tego samego rzędu Algorytmika, wykład iv Problem sortowania Definicja: Wejście: Wyjście: dany jest ciąg n elementów A= (A 1, A 2,., A n ) = A[1..n] permutacja ciągu wejściowego A =A [1..n] taka, że A [1] A [2] A [n] 20 Rozważamy n-1 elementów INSERTION_SORT (A[1..n]) for j = 2 to n key = A[j] i = j 1 while i > 0 and A[i] > key A[i+1] = A[i] i = i 1 A[i+1] = key //pobierz kolejny element A[j] //wstaw a[j] do posortowanego ciągu A[1..j-1] i-ty pobrany element porównujemy co najwyżej (i-1) razy Przybliżona ilość maksymalnej liczby elementarnych operacji 1+ 2+ 3+ (n-1)= n*(n-1)/2 10

21 Analiza wydajności algorytmu Analiza wydajności algorytmu to ocena czasu przetwarzania I tak, czas przebiegu Insertion_Sort zależy od: wielkości danych wejściowych: czy mamy 6 czy 6 milionów liczb do wysortowania? jakości danych wejściowych: czy są już częściowo posortowane i jak? ile umownych jednostek czasowych potrzeba na przetworzenie n-elementowego zbioru: analiza najgorszego przypadku: T(n)=max { czas sortowania danych o rozmiarze n} analiza średniego przypadku: T(n)= E { wszystkie możliwe dane o rozmiarze n} analiza najlepszego przypadku: możliwość oszukania się i innych 22 Analiza asymptotyczna Pomysł na ilościową ocenę wydajności algorytmu: Sedno algorytmiki ANALIZA ASYMPTOTYCZNA 1. zignoruj stałe wielkości zależne od maszyny 2. obserwuj jedynie WZROST przebiegu T(n), gdy n Definicja notacji asymptotycznej O( ) : Dla danej funkcji g(n) przez O(g(n)) oznaczamy następujący zbiór funkcji: O(g(n))={ f(n): istnieją stałe c oraz n 0 takie, że 0 f(n) c g(n) dla wszystkich n n 0 } co piszemy f(n)=o(g(n)) Wniosek: Notacja O( ) służy szacowaniu funkcji z góry. 11

23 Oszacowania asymptotyczne Notacja asymptotyczna Jak wartości dowolnej funkcji f(n) mają się do wartości znanej funkcji g(n)? notacja theta notacja duże O notacja omega Funkcje ważne dla oszacowań asymptotycznych D. Makowiec: A: podstawowe techniki 24 O(n lg n) Złożoność wielomianowa 1,lg 4 3 2 3 4 n n,..., n, n, n, n, nlg n, n, n, n,...,2, n!, n n O(1) O(lg n) O(n) O(n 2 ) O(2 n ) O(n!) Złożoność logarytmiczna Złożoność liniowa Złożoność kwadratowa Złożoność wykładnicza Hierarchia ważnych ciągów uporządkowanych w ten sposób, że każdy z nich jest O() od wszystkich ciągów na prawo od niego 12

Różnice pomiędzy funkcjami rosnącymi 25 Jak długo będziemy czekać na wynik przetwarzania? Big-O: O(n 2 ) = oznacza że dana funkcja rośnie nie szybciej niż n 2 Problemy obliczalne i NP-zupełne 26 Problem jest obliczalny (tractable) jeśli jest rozwiązywalny przez algorytm o złożoności wielomianowej czyli jest O(n k ) dla pewnego k Problem jest nieobliczalny (intractable) jeśli nie może być obliczony przez jakikolwiek algorytm o złożoności wielomianowej (ograniczenie dolne jest wykładnicze: (2 n ) ) Problem NP-zupełny: nie istnieje dowód, że problem jest nieobliczalny 13

27 Wyznaczanie O() Jak znaleźć funkcję f(n): iloś ć elementarnych operacji w algorytmie, dla której następnie znajdujemy O()? Przyklady: jak ocenić złożoność rozważanych wcześniej algorytmów? Zliczanie: f(d)< 1+2*d = O(d) Algorytm rekurencyjny Metoda Drzewo rekurencji: O(2 n ) przypominajka Zliczanie: F(d) <1+ M/c 1 *M/c 2 *.*M/c d = O(M d ) ANALIZA ASYMPTOTYCZNA 1. zignoruj stałe wielkości zależne od maszyny 2. obserwuj jedynie WZROST przebiegu T(n), gdy n Drzewo rekurencji metoda szacowania złożoności algorytmów rekurencyjnych 28 Czas obliczeń: HT(n, ) T(n) HT(n-1, ) HT(n-1, ) =2*T(n-1) +c HT(n-1, ) HT(n-1, ) HT(n-1, ) HT(n-1, ) =4*T(n-2) +c =2 i *T(n-i) +c HT(1, ) HT(1, ) HT(1, ) HT(1, ) HT(1, ) HT(1, ) =2 n-1 *T(1) +c =O(2 n ) 14

Problem Fibonacciego ( z roku 1202) 29 Algorytm rekurencyjny O(2 n ) Algorytm dynamiczny: O(n) Bezpośrednie obliczenie [29] F n 1 5 1 5 2 n n 1 5 2 O(1) Gdzie jest telefon? 30 15

Podstawowe techniki projektowania algorytmów 31 Algorytm wyczerpujący (exhaustive lub brute-force) systematyczne sprawdzenie wszystkich możliwości Algorytm podziału i ograniczeń (branch-and-bound ) wyeliminowanie szeregu opcji algorytmu wyczerpującego Algorytm zachłanny (greedy) iteracyjne tworzenie rozwiązania w oparciu o aktualnie atrakcyjne alternatywy Algorytm dynamiczny (dynamic programming) organizowanie rozwiązań mniejszych problemów w celu uzyskania rozwiązania problemu większego. Algorytm dziel-i-zwyciężaj ( divide-conquer-combine) algorytm rekurencyjnego rozwiązywania problemu Algorytm maszynowego uczenia się (machine learning) korzysta z wiedzy zgromadzonej w poprzednich tego typu zdarzeniach Algorytm losowy (randomized, Monte Carlo ) realizacja algorytmu związana jest z eksperymentem losowym wyczerpujący zachłanny Monte Carlo Programowanie dynamiczne Gra ROCKS: w każdym ruchu każdy gracz musi zdjąć albo 1 klocek z dowolnie wybranego stosu albo po 1 klocku z każdego stosu Alicja Bob 32 Wygrywa ten, kto zdejmuje ostatni klocek. Zaczyna Alicja. Czy istnieje tu strategia zwyciężania? Czy Alicja, jako startująca, ma jakieś korzyści? Więcej informacji : rozdział 1 i 2 z podręcznika 16

Programowanie dynamiczne 33 Gra ROCKS: w każdym ruchu każdy gracz musi zdjąć albo 1 klocek z dowolnie wybranego stosu albo po 1 klocku z każdego stosu Wygrywa ten, kto zdejmuje ostatni klocek. Zaczyna Alicja. A: B: Alicja A Bob B Strategia zwycięstwa: ^ - ściągnij klocek z A < - ściągnij klocek z B \ - ściągnij oba klocki * - poddaj się Programowanie dynamiczne 34 A: Rozwiązanie powstaje z rozwiązania problemów mniejszych, przy czym w odróżnieniu od strategii rekurencyjnej, rozwiązanie problemów mniejszych składają się iteracyjnie na rozwiązanie problemu większego. B: 17