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

Teoretyczne podstawy informatyki

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

Podstawy Informatyki. Sprawność algorytmów

Algorytmika i pseudoprogramowanie

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

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

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

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

Zasady analizy algorytmów

Wykład 2. Poprawność algorytmów

Wprowadzenie do złożoności obliczeniowej

Wstęp do programowania

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

Algorytmy i Struktury Danych, 2. ćwiczenia

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

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

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

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

TEORETYCZNE PODSTAWY INFORMATYKI

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

Efektywność algorytmów

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

Algorytmy i Struktury Danych.

Laboratorium nr 1. i 2.

TEORETYCZNE PODSTAWY INFORMATYKI

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

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

Temat: Algorytmy zachłanne

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

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

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

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

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

Analiza algorytmów zadania podstawowe

Podyplomowe Studium Informatyki

Kurs MATURA Z INFORMATYKI

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

Wybrane wymagania dla informatyki w gimnazjum i liceum z podstawy programowej

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

INFORMATYKA SORTOWANIE DANYCH.

Programowanie dynamiczne

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

KARTA PRZEDMIOTU. Algorytmy i struktury danych, C4

Algorytmy i Struktury Danych

Technologie informacyjne Wykład VII-IX

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

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

Teoretyczne podstawy informatyki

Sortowanie przez wstawianie

Algorytm i złożoność obliczeniowa algorytmu

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

Wstęp do programowania

Algorytmy sortujące i wyszukujące

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

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

Złożoność Obliczeniowa Algorytmów

Algorytmy komputerowe. dr inż. Jarosław Forenc

Algorytmy w teorii liczb

Sortowanie danych. Jolanta Bachan. Podstawy programowania

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

Liczby pierwsze - wstęp

Algorytmy i Struktury Danych.

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

Rekurencja. Przygotowała: Agnieszka Reiter

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

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

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

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

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i 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:

Algorytmy i Struktury Danych

Efektywność Procedur Obliczeniowych. wykład 5

Wstęp do programowania

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

Algorytmy i Struktury Danych

Programowanie dynamiczne cz. 2

Algorytmy i struktury danych Matematyka III sem.

Projektowanie i analiza algorytmów

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

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

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

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

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

Sortowanie w czasie liniowym

PRZEWODNIK PO PRZEDMIOCIE

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

Programowanie dynamiczne

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

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

Algorytmy i Struktury Danych.

TEORETYCZNE PODSTAWY INFORMATYKI

Strategia "dziel i zwyciężaj"

Analiza algorytmów zadania podstawowe

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

Transkrypt:

Algorytmika w bioinformatyce Kurs dla kierunku BIOINFORMATYKA 2017/2018 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 Wykłady Środy, godz.: 12.15 do 14.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: 31 stycznia 2018, godz. 12: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

A1: 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

Algorytmika 7 Poprawność algorytmu Problem kasjera 8 wydać resztę optymalnie czyli wykorzystując możliwie najmniejszą liczbę monet przy zadanym zestawie monet. Wydawaj możliwie największą monetę z aktualnej reszty 4

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 9 Algorytmika 10 Złożoność algorytmu 5

META KOD ALGORYTMÓW 2017-10-18 Problem Fibonacciego ( z roku 1202) 11 Algorytm rekurencyjny Algorytm dynamiczny: Bezpośrednie obliczenie F n 1 5 1 5 2 n n 1 5 2 [11] 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] 12 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 Rozważamy n-1 elementów //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 6

13 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 14 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): istnieje stała C oraz n 0 takie, że 0 f(n) C g(n) dla wszystkich dostatecznie dużych n n 0 } co piszemy f(n)=o(g(n)) Wniosek: Notacja O( ) służy szacowaniu funkcji z góry. 7

15 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 A2: PODSTAWOWE TECHNIKI ALGORYTMICZNE Algorytmika dla bioinformatyki Prowadzący: Prof. Danuta Makowiec danuta.makowiec@gmail.com IFTiA, pok. 353, tel.: 58 523 2466 8

Funkcje ważne dla oszacowań asymptotycznych D. Makowiec: A: podstawowe techniki 17 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 Różnice pomiędzy funkcjami rosnącymi 18 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 9

19 Wyznaczanie O() Jak znaleźć funkcję f(n): ilość elementarnych operacji w algorytmie, dla której następnie znajdujemy O()? Przykłady: jak ocenić złożoność rozważanych wcześniej algorytmów? ANALIZA ASYMPTOTYCZNA 1. zignoruj stałe wielkości zależne od maszyny 2. obserwuj jedynie WZROST przebiegu T(n), gdy n Zliczanie: f(d)< 1+2*d = O(d) Zliczanie: F(d) <1+ M/c 1 *M/c 2 *.*M/c d = O(M d ) Problemy obliczalne i NP-zupełne 20 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 10

21 Strategia rekurencji Strategia rekurencji: rozwiąż problem o rozmiarze n zakładając, że znasz rozwiązanie problemu o rozmiarze mniejszym niż n 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: brać tylko 1 klocek kłaść klocek mniejszy na większy https://pl.wikipedia.org/wiki/wie%c5%bce_hanoi 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: brać tylko 1 klocek kłaść klocek mniejszy na większy Przypadek wieży zbudowanej z dwóch klocków 2013-11-04 Danuta Makowiec: Algorytmika, wykład iv [22] 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: brać tylko 1 klocek kłaść klocek mniejszy na większy Przypadek wieży zbudowanej z dwóch klocków 2013-11-04 Danuta Makowiec: Algorytmika, wykład iv [23] 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: brać tylko 1 klocek kłaść klocek mniejszy na większy Przypadek wieży zbudowanej z trzech klocków 2013-11-04 Danuta Makowiec: Algorytmika, wykład iv [24] 12

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: brać tylko 1 klocek kłaść klocek mniejszy na większy 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 [25] 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: brać tylko 1 klocek kłaść klocek mniejszy na większy Przypadek wieży zbudowanej z trzech klocków 2013-11-04 Danuta Makowiec: Algorytmika, wykład iv [26] 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: brać tylko 1 klocek kłaść klocek mniejszy na większy 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 [27] Strategia rekurencji D. Makowiec: A - złożoność obliczeniowa 28 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: brać tylko 1 klocek kłaść klocek mniejszy na większy A co jeśli wieża zbudowana jest jest z 4 i więcej klocków? 14

29 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: brać tylko 1 klocek kłaść klocek mniejszy na większy 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 15

31 Rzędy wielkości Nauczka: Sensowne porównania liczb to tylko takie, które są tego samego rzędu Algorytmika, wykład iv Drzewo rekurencji metoda szacowania złożoności algorytmów rekurencyjnych 32 Czas obliczeń: HT(n, ) T(n) HT(n-1, ) HT(n-1, ) =2*T(n-1) +c HT(n-2, ) HT(n-2, ) HT(n-2, ) HT(n-2, ) =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 ) 16

Gdzie jest telefon? 34 Podstawowe techniki projektowania algorytmów 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) składanie rozwiązań mniejszych problemów by uzyskać rozwiązanie problemu większego. Algorytm dziel-i-zwyciężaj ( divide-conquer-combine) rozkładanie problemu większego na mniejsze, które umiemy rozwiązać 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 35 wyczerpujący zachłanny Monte Carlo 17

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 Wygrywa ten, kto zdejmuje ostatni klocek. Zaczyna Alicja. Alicja Bob 36 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 Programowanie dynamiczne 37 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ę 18

Programowanie dynamiczne 38 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: 19