2017-10-18
1
Algorytmika w bioinformatyce
Kurs dla kierunku BIOINFORMATYKA 2017/2018 Prowadzący: Prof. Danuta Makowiec [email protected] IFTiA, pok. 353, tel.: 58 523 2466
Motywacja 2
Cztery etapy rekonstrukcji genomu: cięcie DNA na fragmenty tworzenie milionów kopii każdego fragmentu odczytanie każdej pary w każdym fragmencie zestawienie wszystkich fragmentów we właściwym porządku
Fragmenty DNA są uzyskiwane poprzez enzymy restrykcyjne
Klonowanie Reakcja łańcuchowa polimerazy
Techniki sekwencjonowania Macierze DNA
Algorytmy bioinformatyki usiłują zrekonstruować oryginalne sekwencje.
2017-10-18
2
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
2017-10-18
3
A1: PODSTAWOWE TECHNIKI ALGORYTMICZNE
Algorytmika dla bioinformatyki
Prowadzący: Prof. Danuta Makowiec
IFTiA, pok. 353, tel.: 58 523 2466
Algorytmika D. Makowiec: A - Podstawowe techniki algorytmiczne
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
2017-10-18
4
Algorytmika D. Makowiec: A - Podstawowe techniki algorytmiczne
7
Poprawność algorytmu
Problem kasjera
wydać resztę optymalnie czyli wykorzystując możliwie najmniejszą liczbę monet przy zadanym zestawie monet.
Wydawaj możliwie największą monetę z aktualnej reszty
D. Makowiec: A - Podstawowe techniki algorytmiczne
8
2017-10-18
5
strategia zachłanna versus strategia wyczerpująca
Algorytm BetterChange jest niepoprawny. Źle oblicza resztę dla np.: M=40, c=(25 , 20, 10, 5, 1)
Algorytm zawsze poprawny, ale też i zawsze niewydajny
Algorytm mięśniaka
Ile tych możliwie najwiekszych monet można wypłacić
D. Makowiec: A - Podstawowe techniki algorytmiczne
9
Strategia wyczerpująca: kolejno rozważ wszystkie możliwe kombinacje monet
Strategia zachłanna: wydawaj resztę aktualnie największym nominałem
Algorytmika D. Makowiec: A - Podstawowe techniki algorytmiczne
10
Złożoność algorytmu
2017-10-18
6
Problem Fibonacciego ( z roku 1202)
[11]
Algorytm dynami-czny:
11
Algorytm rekuren-cyjny
nn
nF2
51
2
51
5
1Bezpośrednie obliczenie
D. Makowiec: A - Podstawowe techniki algorytmiczne
Problem sortowania D. Makowiec: A - Podstawowe techniki algorytmiczne
12
Definicja: Wejście: dany jest ciąg n elementów A= (A1, A2,…., An) = A[1..n] Wyjście: permutacja ciągu wejściowego A’=A’[1..n] taka, że A’[1] ≤ A’[2] ≤ … ≤ A’[n]
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
MET
A K
OD
ALG
OR
YTM
ÓW
Rozważamy n-1 elementów
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
//pobierz kolejny element A[j]
//wstaw A[j] do posortowanego ciągu A[1..j-1]
2017-10-18
7
Analiza wydajności algorytmu 13
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
D. Makowiec: A - Podstawowe techniki algorytmiczne
Analiza asymptotyczna 14
ANALIZA ASYMPTOTYCZNA 1. zignoruj stałe wielkości zależne od maszyny
2. obserwuj jedynie WZROST przebiegu T(n), gdy n →
Sedno algorytmiki
Pomysł na ilościową ocenę wydajności algorytmu:
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 n0 takie, że 0 ≤ |f(n)| ≤ C |g(n)| dla wszystkich dostatecznie dużych n ≥ n0 } co piszemy f(n)=O(g(n)) Wniosek: Notacja O( ) służy szacowaniu funkcji z góry.
D. Makowiec: A - Podstawowe techniki algorytmiczne
2017-10-18
8
Oszacowania asymptotyczne 15
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”
D. Makowiec: A - Podstawowe techniki algorytmiczne
A2: PODSTAWOWE TECHNIKI ALGORYTMICZNE
Algorytmika dla bioinformatyki
Prowadzący: Prof. Danuta Makowiec
IFTiA, pok. 353, tel.: 58 523 2466
2017-10-18
9
Funkcje ważne dla oszacowań asymptotycznych D. Makowiec: A: podstawowe techniki algorytmiczne
O(n)
nn nnnnnnnnnnnn ,!,2,....,,,,lg,,,,,...,lg,1 43234
O(1)
O(lg n)
Złożoność logaryt-miczna
Złożoność liniowa
O(n2)
Złożoność kwadra-
towa
O(n lg n)
O(2n)
Złożoność wykład-
nicza
Złożoność wielomia-
nowa
O(n!)
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
17
Różnice pomiędzy funkcjami rosnącymi 18 D. Makowiec: A - Podstawowe techniki
algorytmiczne
Big-O: O(n2) = „oznacza że dana funkcja rośnie nie szybciej niż n2”
Jak długo będziemy czekać na wynik przetwarzania?
2017-10-18
10
Wyznaczanie O() 19
ANALIZA ASYMPTOTYCZNA 1. zignoruj stałe wielkości zależne od maszyny 2. obserwuj jedynie WZROST przebiegu T(n), gdy n →
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?
Zliczanie: f(d)< 1+2*d = O(d)
Zliczanie: F(d) <1+ M/c1*M/c2*….*M/cd = O(Md)
D. Makowiec: A - Podstawowe techniki algorytmiczne
Problemy obliczalne i NP-zupełne
Problem jest obliczalny (tractable) jeśli jest rozwiązywalny przez algorytm o złożoności wielomianowej czyli jest O(nk) 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: (2n) ) Problem NP-zupełny: nie istnieje dowód, że problem jest nieobliczalny
D. Makowiec: A - Podstawowe techniki algorytmiczne
20
2017-10-18
11
Strategia rekurencji 21
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
Lucas i legenda wieży Brahmy w Hanoi
D. Makowiec: A - Podstawowe techniki algorytmiczne
https://pl.wikipedia.org/wiki/Wie%C5%BCe_Hanoi
Algorytmika, wykład iV
Danuta Makowiec:
[22]
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
„ Wieże Hanoi” (1883) – rozwiązanie rekurencyjne D. Makowiec: A - Podstawowe techniki
algorytmiczne
2017-10-18
12
Algorytmika, wykład iV
Danuta Makowiec:
[23]
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
„ Wieże Hanoi” (1883) – rozwiązanie rekurencyjne D. Makowiec: A - Podstawowe techniki
algorytmiczne
Algorytmika, wykład iV
Danuta Makowiec:
[24]
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
„ Wieże Hanoi” (1883) – rozwiązanie rekurencyjne D. Makowiec: A - Podstawowe techniki
algorytmiczne
2017-10-18
13
Algorytmika, wykład iV
Danuta Makowiec:
[25]
Przypadek wieży zbudowanej z trzech klocków
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
2013-11-04
„ Wieże Hanoi” (1883) – rozwiązanie rekurencyjne
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.
D. Makowiec: A - Podstawowe techniki algorytmiczne
Algorytmika, wykład iV
Danuta Makowiec:
[26]
Przypadek wieży zbudowanej z trzech klocków
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
2013-11-04
„ Wieże Hanoi” (1883) – rozwiązanie rekurencyjne
2017-10-18
14
Algorytmika, wykład iV
Danuta Makowiec:
[27]
Przypadek wieży zbudowanej z trzech klocków
A co jeśli wieża zbudowana jest jest z 4 i więcej klocków?
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
2013-11-04
„ Wieże Hanoi” (1883) – rozwiązanie rekurencyjne
Przenieśliśmy wieżę dwu-klockową z patyka 2 na patyk 3 korzystając patyka 1
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?
2017-10-18
15
Strategia rekurencji 29
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
D. Makowiec: A - Podstawowe techniki algorytmiczne
Algorytmika, wykład iV
2013-11-04
„ Wieże Hanoi” (1883) – przykład algorytmu rekukencyjnego
Ile ruchów trzeba wykonać?
D. Makowiec: A - Podstawowe techniki algorytmiczne
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
2017-10-18
16
Algorytmika, wykład iV
Rzędy wielkości 31 D. Makowiec: A - Podstawowe techniki
algorytmiczne
Nauczka: Sensowne porównania liczb to tylko takie, które są tego samego rzędu
Drzewo rekurencji – metoda szacowania złożoności algorytmów rekurencyjnych
32
HT(n,…)
HT(n-1,…) HT(n-1,…)
HT(n-2,…) HT(n-2,…) HT(n-2,…) HT(n-2,…)
HT(1,…) HT(1,…) HT(1,…) HT(1,…) HT(1,…) HT(1,…)
Czas obliczeń: T(n) =2*T(n-1) +c =4*T(n-2) +c =2i *T(n-i) +c =2n-1*T(1) +c =O(2n)
D. Makowiec: A - Podstawowe techniki algorytmiczne
2017-10-18
17
Gdzie jest telefon? D. Makowiec: A - Podstawowe techniki algorytmiczne
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
Monte Carlo
wyczerpujący
zachłanny
D. Makowiec: A - Podstawowe techniki algorytmiczne
35
2017-10-18
18
Programowanie dynamiczne
Bob 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
Czy istnieje tu strategia zwyciężania? Czy Alicja, jako startująca, ma jakieś korzyści?
36 D. Makowiec: A - Podstawowe techniki
algorytmiczne
Więcej informacji : rozdział 1 i 2 z podręcznika
Programowanie dynamiczne
Bob
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
A: B:
Strategia zwycięstwa: ^ - ściągnij klocek z A < - ściągnij klocek z B \ - ściągnij oba klocki * - poddaj się
A B
37 D. Makowiec: A - Podstawowe techniki
algorytmiczne
2017-10-18
19
Programowanie dynamiczne
B: A:
38 D. Makowiec: A - Podstawowe techniki
algorytmiczne
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.