Uliniawianie całych genomów
|
|
- Beata Adamczyk
- 7 lat temu
- Przeglądów:
Transkrypt
1 Uliniawianie całych genomów 7 czerwca Wprowadzenie Dzięki postępowi technologicznemu jesteśmy w stanie sekwencjonować całe genomy organizmów. Pojawia się zatem zapotrzebowanie na narzędzia umożliwiające ich porównywanie. Standardowe metody uliniawiania sekwencji są w tym kontekście stosunkowo mało użyteczne z dwóch powodów: biorą pod uwagę jedynie punktowe mutacje, insercje i delecje, a chcemy również zwracać uwagę na transpozycje, insercje i delecje dużych fragmentów łańcucha DNA, potrzebują zbyt wiele zasobów, by mogły działać na tak dużą skalę. Omówimy na tym wykładzie podejście do problemu uliniawiania całych genomów bazujące na następującej definicji. Definicja 1. Dane są dwa słowa v i w. MUMem 1 nazwiemy każde wspólne podsłowo v i w, spełniające warunki: jest dłuższe niż pewien ustalony parametr, jest maksymalne w sensie zawierania (tzn. nie jest zawarte w żadnym innym wspólnym podsłowie v i w), występuje dokładnie raz w każdym ze słów v i w. Z dużym prawdopodobieństwem MUMy są częścią uliniowienia dwóch genomów. Podstawowym zadaniem będzie więc znajdywanie MUMów (zajmiemy się tym w sekcji 2). 2 Znajdywanie MUMów Wiele problemów dotyczących słów (w tym problem znajdywania MUMów) można rozwiązać efektywnie wykorzystując drzewa sufiksowe. W ostatnich latach pojawiło się wiele prac pokazujących jak algorytmy działające na drzewach sufiksowych przekształcać w algorytmy wykorzystujące tablice sufiksowe 1 ang. Maximal Unique Match 1
2 wzbogacone o pewne dodatkowe struktury danych. Nowe wersje tych algorytmów mają mniejsze zapotrzebowanie na pamięć (mniejsza stała przy złożoności pamięciowej) i działają szybciej ze względu na większą lokalność odwołań do pamięci. W pracach [AKO04, AKO02] autorzy pokazują w jaki sposób można wykorzystać wzbogacone tablice sufiksowe 2 do znajdywania MUMów. Poniżej wprowadzamy odpowiednie definicje i przedstawiamy algorytm rozwiązujący to zadanie w czasie liniowym względem długości słów (przy odpowiednich założeniach dotyczących alfabetu). 2.1 Notacja Będziemy używali oznaczenia u[i, j] na podsłowo słowa u składające się z liter na pozycjach 3 od i do j włącznie. Przez t oznaczamy długość tablicy lub słowa t. Jeśli t jest tablicą, to t 1 oznacza tablicę taką, że t 1 [i] = j t[j] = i. Tam gdzie będziemy korzystali z tej notacji, tablica t będzie zawierać liczby ze zbioru {0,..., t 1}. Jest jasne, że w takim przypadku znając tablicę t można utworzyć tablicę t 1 w czasie i pamięci liniowej względem t. 2.2 Tablice sufiksowe Definicja 2. Dane jest słowo u nad alfabetem {1,..., u }. Tablicą sufiksową suf nazywamy tablicę długości u zawierającą indeksy początków sufiksów słowa u w kolejności leksykograficznej. Tabela 1: Tablica sufiksowa dla słowa MISSISSIPPI. i suf[i] Algorytm 1 Budowanie tablicy suf. 1: if u 3 then 2: zbuduj tablicę suf bezpośrednio 3: else 4: posortuj sufiksy u zaczynające się na pozycjach {i i mod 3 0} {powyższy krok może wymagać rekurencyjnego wywołania} 5: posortuj sufiksy u zaczynające się na pozycjach {i i mod 3 = 0} 6: zbuduj tablicę suf scalając obydwa porządki 7: end if 2 ang. enhenced suffix arrays 3 indeksujemy od 0 2
3 Pochodzący z pracy [KS03] algorytm 1 służy do budowy tablicy sufiksowej. Aby wykonać krok 4 znajdujemy etykiety e i {1,..., 2n 4 3 }, dla i mod 3 0, takie że e i e j u[i, i + 2] u[j, j + 2]. Odzwierciedlają one porządek leksykograficzny na podsłowach słowa u długości 3, zaczynających się na pozycjach {i i mod 3 0} (zakładamy przy tym, że dla i = u 2 oraz i = u 1 bierzemy odpowiednio podsłowa u[i, i + 1]0 oraz u[i]00). Aby etykiety te znaleźć, wystarczy posortować opisane wyżej podsłowa algorytmem radix sort (czas liniowy) i nadać im kolejne numery. Jeśli etykiety są parami różne, to odzwierciedlają porządek leksykograficzny na sufiksach słowa u zaczynających się na pozycjach {i i mod 3 0} i krok 4 jest zakończony. W przeciwnym przypadku budujemy słowo u [e i i mod 3 = 1][e i i mod 3 = 2] (zobacz rysunek 1) i znajdujemy rekurencyjnie tablicę sufiksową suf tego słowa. Dzięki dopisa- Rysunek 1: Dla słowa u = MISSISSIPPI, słowo u ma następującą postać (etykiety e i odpowiadają trójliterowym podsłowom). ISS ISS IPP I00 SSI SSI PPI niu na końcu słowa u liter 00, tablica suf opisuje porządek leksykograficzny na sufiksach słowa u zaczynających się na pozycjach {i i mod 3 0}. Krok 5 wykonujemy sortując pary (u[i], u[i + 1, u 1]), dla i mod 3 = 0. Porządek na drugich elementach tych par został wyliczony w poprzednim kroku, więc sortowanie możemy przeprowadzić w czasie liniowym za pomocą algorytmu radix sort. W kroku 6 musimy umieć porównywać słowa u[i, u 1] dla pewnego i mod 3 0 oraz u[j, u 1] dla pewnego j mod 3 = 0. Jeśli i mod 3 = 1, to porównujemy pary (u[i], u[i + 1, u 1]) oraz (u[j], u[j + 1, u 1]), jeśli natomiast i mod 3 = 2, to porównujemy trójki (u[i], u[i + 1], u[i + 2, u 1]) oraz (u[j], u[j +1], u[j + 2, u 1]). Porządek na drugich elementach powyższych par i trzecich elementach powyższych trójek został wyliczony w kroku 4. Czas działania algorytmu 1 spełnia równanie rekurencyjne T ( u ) = O( u ) + T ( 2 3 u ), dla u 3 i T ( u ) = O(1), dla u < 3, zatem algorytm działa w czasie liniowym względem długości wejściowego słowa. 2.3 Tablice najdłuższych wspólnych prefiksów Definicja 3. Dane jest słowo u. Tablica najdłuższych wspólnych prefiksów lcp 4 na i-tej pozycji, dla i {1,..., u 1} przechowuje długość najdłuższego wspólnego prefiksu słów u[suf[i 1], u 1] i u[suf[i], u 1]. Przyjmujemy dodatkowo, że lcp[0] = 0. Łatwo zinterpretować tablicę lcp patrząc na drzewo sufiksowe danego słowa (tabela 2 i rysunek 2). 4 ang. longest common prefix 3
4 Tabela 2: Tablica najdłuższych wspólnych prefiksów dla słowa MISSISSIPPI. i lcp[i] Rysunek 2: Drzewo sufiksowe dla słowa MISSISSI (znak $ jest jedynie po to, by każdemu sufiksowi odpowiadał liść w drzewie). W liściach znajdują się indeksy początków odpowiadających im sufiksów. Liście są uporządkowane od lewej do prawej zgodnie z porządkiem leksykograficznym na sufiksach. Dla każdych dwóch kolejnych liści tablica lcp zawiera długość ścieżki (liczoną w literach) od korzenia do najdalszego wspólnego przodka tych liści. I P S $ $ SSI MISSISSI I$ PI$ I SI 7 4 SSI SSI SSI Algorytm 2 buduje tablicę lcp. Pochodzi on z pracy [KLA + 01]. W głównej pętli badamy kolejno sufiksy zaczynające się na pozycjach i = 0,..., u 1. Dla ustalonego i zmienna j jest pozycją początku sufiksu, który jest bezpośrednio leksykograficznie mniejszy. Szukamy długości najdłuższego wspólnego prefiksu tych sufiksów. Jest ona liczona w krokach 6-8. Zauważmy, że w kolejnym obrocie głównej pętli nie musimy porównywać sufiksów od początku. Skoro bowiem sufiks na pozycji i pokrywał się z sufiksem na pozycji j na pierwszych p literach, to sufiks na pozycji i + 1 pokrywa się z sufiksem na pozycji j + 1 na pierwszych p 1 literach. Zatem sufiks leksykograficznie bezpośrednio poprzedzający sufiks na pozycji i + 1 pokrywa się z sufiksem na pozycji i + 1 na co najmniej p 1 pierwszych literach. 2.4 Wykorzystanie tablicy sufiksowej i tablicy najdłuższych wspólnych prefiksów do znajdywania MUMów W celu wyznaczenia MUMów słów u i v budujemy tablice suf i lcp dla słowa u#v, dzie # jest symbolem, który nie występuje w u ani v. Każdy MUM jest prefiksem dwóch sąsiadujących ze sobą leksykograficznie sufiksów. Jeden z tych sufiksów musi się zaczynać na pozycji 0 i < u, 4
5 Algorytm 2 Budowanie tablicy lcp. 1: p 0 2: lcp[0] 0 3: for i = 0,..., u 1 do 4: if suf 1 [i] > 0 then 5: j suf[suf 1 [i] 1] 6: while u[i + p] = u[j + p] do 7: p p + 1 8: end while 9: lcp[suf 1 [i]] p 10: if p > 0 then 11: p p 1 12: end if 13: end if 14: end for a drugi na pozycji u + 1 j < u + v, przy czym suf 1 [i] + 1 = suf 1 [j] lub suf 1 [j] + 1 = suf 1 [i]. Przyjmijmy, że zachodzi pierwszy przypadek rozważania dla drugiego są analogiczne. Żeby zapewnić maksymalność MUMa musi być spełniony warunek u[i 1] v[j u 2] oraz max(lcp[suf 1 [j] 1], lcp[suf 1 [j] + 1]) < lcp[suf 1 [j]]. Łatwo również sprawdzić ewentualne ograniczenie na długość MUMa (jest ona zapisana w lcp[suf 1 [j]]). Jeśli warunki te wydają się niejasne, warto wyobrazić sobie jaką interpretację miałyby dla drzew sufiksowych. Algorytm znajdywania MUMów wyszukuje w tablicy lcp lokalne maksima, a następnie dla każdego z nich w czasie stałym sprawdza, czy zachodzą warunki opisane w poprzednim akapicie. 3 Uliniawianie genomów (program MUMmer) Dla zadanej pary genomów liczba wykrywanych MUMów jest dużo większa niż liczba znanych zakonserwowanych odpowiadających sobie par genów. Wiele z tych MUMów stanowi szum, dlatego próbuje się wybrać te, które wydają się bardziej znaczące. W tym celu program MUMmer1 szuka najdłuższego wspólnego podciągu ciągów MUMów w dwóch genomach. Postępowanie takie jest uzasadniane faktem, że kolejność zakonserwowanych genów na chromosomach u dwóch blisko spokrewnionych gatunków jest zazwyczaj bardzo podobna (w przypadku chromosomu 16 myszy i chromosomu 16 człowieka na 31 zakonserwowanych par genów wystarczy usunąć tylko 1 parę, aby pozostałe miały taką samą kolejność). Łatwo jest zrealizować powyższy algorytm. Ponumerujmy znalezione MUMy na pierwszym genomie kolejnymi liczbami naturalnymi. Wyznacza to pewien ciąg liczb na drugim genomie. Wystarczy teraz znaleźć w tym ciągu najdłuższy 5
6 podciąg monotoniczny. Można to zrobić w czasie O(n ln n), gdzie n jest długością ciągu. Niestety takie podejście nie zadziała dobrze, gdy w genomie nastąpiły znaczące przesunięcia. W programie MUMmer2 (oprócz poprawek algorytmicznych) dodano moduł, który grupuje kolejne leżące blisko siebie MUMy. Najdłuższy wspólny podciąg MUMów jest obliczany w każdej grupie oddzielnie. Program MUMmer3 to dalsze poprawki algorytmiczne i implementacyjne. Wszystkie trzy wymienione programy korzystają z drzew sufiksowych. W czasie kiedy powstawały nie były znane algorytmy umożliwiające konstrukcję tablicy sufiksowej w czasie liniowym bez konstruowania drzewa sufiksowego. Literatura [AKO02] [AKO04] Mohamed Ibrahim Abouelhoda, Stefan Kurtz, and Enno Ohlebusch. The enhanced suffix array and its applications to genome analysis. In 2nd Workshop on Algorithms in Bioinformatics, LNCS, Mohamed Ibrahim Abouelhoda, Stefan Kurtz, and Enno Ohlebusch. Replacing suffix trees with enhanced suffix arrays. J. of Discrete Algorithms, 2(1):53 86, [KLA + 01] Toru Kasai, Gunho Lee, Hiroki Arimura, Setsuo Arikawa, and Kunsoo Park. Linear-time longest-common-prefix computation in suffix arrays and its applications. In CPM 01: Proceedings of the 12th Annual Symposium on Combinatorial Pattern Matching, pages , London, UK, Springer-Verlag. [KS03] [Sun05] J. Kärkkäinen and P. Sanders. Simple linear work suffix array construction. In Proc. 13th International Conference on Automata, Languages and Programming. Springer, Wing-Kin Sung. Whole genome alignment, (notatki do wykładu). 6
Wykład 6. Wyszukiwanie wzorca w tekście
Wykład 6 Wyszukiwanie wzorca w tekście 1 Wyszukiwanie wzorca (przegląd) Porównywanie łańcuchów Algorytm podstawowy siłowy (naive algorithm) Jak go zrealizować? Algorytm Rabina-Karpa Inteligentne wykorzystanie
Algorytmy i struktury danych. wykład 8
Plan wykładu: Kodowanie. : wyszukiwanie wzorca w tekście, odległość edycyjna. Kodowanie Kodowanie Kodowanie jest to proces przekształcania informacji wybranego typu w informację innego typu. Kod: jest
Programowanie w VB Proste algorytmy sortowania
Programowanie w VB Proste algorytmy sortowania Sortowanie bąbelkowe Algorytm sortowania bąbelkowego polega na porównywaniu par elementów leżących obok siebie i, jeśli jest to potrzebne, zmienianiu ich
Nierówność Krafta-McMillana, Kodowanie Huffmana
Nierówność Krafta-McMillana, Kodowanie Huffmana Kodowanie i kompresja informacji - Wykład 2 1 marca 2010 Test na jednoznaczna dekodowalność Kod a jest prefiksem kodu b jeśli b jest postaci ax. x nazywamy
Algorytmy sortujące i wyszukujące
Algorytmy sortujące i wyszukujące Zadaniem algorytmów sortujących jest ułożenie elementów danego zbioru w ściśle określonej kolejności. Najczęściej wykorzystywany jest porządek numeryczny lub leksykograficzny.
E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne
E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne Przypominajka: 152 drzewo filogenetyczne to drzewo, którego liśćmi są istniejące gatunki, a węzły wewnętrzne mają stopień większy niż jeden i reprezentują
Analiza algorytmów zadania podstawowe
Analiza algorytmów zadania podstawowe Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r 0 Jaka wartość zostanie zwrócona przez powyższą
Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.
Sortowanie Dane wejściowe: ciąg n-liczb (kluczy) (a 1, a 2, a 3,..., a n 1, a n ) Dane wyjściowe: permutacja ciągu wejściowego (a 1, a 2, a 3,..., a n 1, a n) taka, że a 1 a 2 a 3... a n 1 a n. Będziemy
Jednym z najprostszych sposobów porządkowania jest technika stosowana przy sortowaniu listów:
Jednym z najprostszych sposobów porządkowania jest technika stosowana przy sortowaniu listów: Listy rozkładane są do różnych przegródek. O tym, do której z nich trafi koperta, decydują różne fragmenty
TEORETYCZNE PODSTAWY INFORMATYKI
1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 14c 2 Definicje indukcyjne Twierdzenia dowodzone przez indukcje Definicje indukcyjne Definicja drzewa
Kompresja bezstratna. Entropia. Kod Huffmana
Kompresja bezstratna. Entropia. Kod Huffmana Kodowanie i bezpieczeństwo informacji - Wykład 10 29 kwietnia 2013 Teoria informacji Jeśli P(A) jest prawdopodobieństwem wystapienia informacji A to niech i(a)
Sortowanie topologiczne skierowanych grafów acyklicznych
Sortowanie topologiczne skierowanych grafów acyklicznych Metody boolowskie w informatyce Robert Sulkowski http://robert.brainusers.net 23 stycznia 2010 1 Definicja 1 (Cykl skierowany). Niech C = (V, A)
Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych
Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2014/15 Znajdowanie maksimum w zbiorze
Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno
Instrukcja laboratoryjna 5 Podstawy programowania 2 Temat: Drzewa binarne Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Drzewa są jedną z częściej wykorzystywanych struktur danych. Reprezentują
Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne
Algorytmy i struktury danych Wykład VIII Elementarne techniki algorytmiczne Co dziś? Algorytmy zachłanne (greedyalgorithms) 2 Tytułem przypomnienia metoda dziel i zwyciężaj. Problem można podzielić na
Modelowanie motywów łańcuchami Markowa wyższego rzędu
Modelowanie motywów łańcuchami Markowa wyższego rzędu Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki 23 października 2008 roku Plan prezentacji 1 Źródła 2 Motywy i ich znaczenie Łańcuchy
Programowanie dynamiczne
Programowanie dynamiczne Patryk Żywica 5 maja 2008 1 Spis treści 1 Problem wydawania reszty 3 1.1 Sformułowanie problemu...................... 3 1.2 Algorytm.............................. 3 1.2.1 Prosty
Sortowanie - wybrane algorytmy
Sortowanie - wybrane algorytmy Aleksandra Wilkowska Wydział Matematyki - Katedra Matematyki Stosowanej Politechika Wrocławska 2 maja 2018 1 / 39 Plan prezentacji Złożoność obliczeniowa Sortowanie bąbelkowe
Sortowanie przez wstawianie Insertion Sort
Sortowanie przez wstawianie Insertion Sort Algorytm sortowania przez wstawianie można porównać do sposobu układania kart pobieranych z talii. Najpierw bierzemy pierwszą kartę. Następnie pobieramy kolejne,
prowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325
PODSTAWY INFORMATYKI WYKŁAD 8. prowadzący dr ADRIAN HORZYK http://home home.agh.edu.pl/~ /~horzyk e-mail: horzyk@agh agh.edu.pl tel.: 012-617 617-4319 Konsultacje paw. D-13/325 DRZEWA Drzewa to rodzaj
znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany.
Przedstawiamy algorytmy porządkowania dowolnej liczby elementów, którymi mogą być liczby, jak również elementy o bardziej złożonej postaci (takie jak słowa i daty). Porządkowanie, nazywane również często
Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.
Kolejki Kolejka priorytetowa Kolejka priorytetowa (ang. priority queue) to struktura danych pozwalająca efektywnie realizować następujące operacje na zbiorze dynamicznym, którego elementy pochodzą z określonego
Wstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline Wyszukiwanie wzorców w tekście 1 Wyszukiwanie wzorców w tekście Problem wyszukiwania wzorca w tekście Na tym wykładzie zajmiemy się
Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami
Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami Przykład 1. Napisz program, który dla podanej liczby n wypisze jej rozkład na czynniki pierwsze. Oblicz asymptotyczną złożoność
Strategia "dziel i zwyciężaj"
Strategia "dziel i zwyciężaj" W tej metodzie problem dzielony jest na kilka mniejszych podproblemów podobnych do początkowego problemu. Problemy te rozwiązywane są rekurencyjnie, a następnie rozwiązania
1 abbbaabaaabaa -wzorzec: aaba
Algorytmy i złożoność obliczeniowa Laboratorium 14. Algorytmy tekstowe. 1. Algorytmy tekstowe Algorytmy tekstowe mają decydujące znaczenie przy wyszukiwaniu informacji typu tekstowego, ten typ informacji
Wykład 5 Dopasowywanie lokalne
Wykład 5 Dopasowywanie lokalne Dopasowanie par (sekwencji) Dopasowanie globalne C A T W A L K C A T W A L K C O W A R D C X X O X W X A X R X D X Globalne dopasowanie Schemat punktowania (uproszczony)
Zasady analizy algorytmów
Zasady analizy algorytmów A więc dziś w programie: - Kilka ważnych definicji i opisów formalnych - Złożoność: czasowa i pamięciowa - Kategorie problemów - Jakieś przykłady Problem: Zadanie możliwe do rozwiązania
PROBLEM: SORTOWANIE PRZEZ ODWRÓCENIA METODA: ALGORYTMY ZACHŁANNE
D: PROBLEM: SORTOWANIE PRZEZ ODWRÓCENIA METODA: ALGORYTMY ZACHŁANNE I. Strategia zachłanna II. Problem przetasowań w genomie III. Sortowanie przez odwrócenia IV. Algorytmy przybliżone V. Algorytm zachłanny
Algorytmy w teorii liczb
Łukasz Kowalik, ASD 2004: Algorytmy w teorii liczb 1 Algorytmy w teorii liczb Teoria liczb jest działem matemtyki dotyczącym własności liczb naturalnych. Rozważa się zagadnienia związane z liczbami pierwszymi,
operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.
Problem porządkowania zwanego również sortowaniem jest jednym z najważniejszych i najpopularniejszych zagadnień informatycznych. Dane: Liczba naturalna n i ciąg n liczb x 1, x 2,, x n. Wynik: Uporządkowanie
7a. Teoria drzew - kodowanie i dekodowanie
7a. Teoria drzew - kodowanie i dekodowanie Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie zima 2016/2017 rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i
Algorytmy i struktury danych
Algorytmy i struktury danych Proste algorytmy sortowania Witold Marańda maranda@dmcs.p.lodz.pl 1 Pojęcie sortowania Sortowaniem nazywa się proces ustawiania zbioru obiektów w określonym porządku Sortowanie
Teoria grafów - Teoria rewersali - Teoria śladów
17 maja 2012 1 Planarność Wzór Eulera Kryterium Kuratowskiego Algorytmy testujące planarność 2 Genom i jego przekształcenia Grafy złamań Sortowanie przez odwrócenia Inne rodzaje sortowania Algorytmy sortujące
Wstęp do programowania
Wstęp do programowania Algorytmy na tablicach Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) WP w. III Jesień 2013 1 / 23 Dwadzieścia pytań Zasady 1 Osoba 1 wymyśla hasło z ustalonej
Wstęp do Programowania potok funkcyjny
i programowanie dynamiczne Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 i programowanie dynamiczne Outline 1 i programowanie dynamiczne i programowanie dynamiczne Rekurencyjny zapis rozwiązania
Algorytm. a programowanie -
Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik
Algorytmy i Struktury Danych, 2. ćwiczenia
Algorytmy i Struktury Danych, 2. ćwiczenia 2017-10-13 Spis treści 1 Optymalne sortowanie 5 ciu elementów 1 2 Sortowanie metodą Shella 2 3 Przesunięcie cykliczne tablicy 3 4 Scalanie w miejscu dla ciągów
WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński
WYKŁAD 9 Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c Tomasz Zieliński /* Przyklad 4.1 - SORTOWANIE TABLIC - metoda najprostsza */ #include #define ROZMIAR 11 void
Porządek symetryczny: right(x)
Porządek symetryczny: x lef t(x) right(x) Własność drzewa BST: W drzewach BST mamy porządek symetryczny. Dla każdego węzła x spełniony jest warunek: jeżeli węzeł y leży w lewym poddrzewie x, to key(y)
Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott
Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Metody konstrukcji algorytmów: Siłowa (ang. brute force), Dziel i zwyciężaj (ang. divide-and-conquer), Zachłanna (ang.
Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik
Wykład X Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2016 c Copyright 2016 Janusz Słupik Drzewa binarne Drzewa binarne Drzewo binarne - to drzewo (graf spójny bez cykli) z korzeniem (wyróżnionym
Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:
Sortowanie Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania: podać strukturę danych dla elementów dynamicznego skończonego multi-zbioru S, względem którego są wykonywane następujące
Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne
A. Permutacja losowa Matematyka dyskretna - wykład - część 2 9. Podstawowe algorytmy kombinatoryczne Załóżmy, że mamy tablice p złożoną z n liczb (ponumerowanych od 0 do n 1). Aby wygenerować losową permutację
0-0000, 1-0001, 2-0010, 3-0011 itd... 9-1001.
KODOWANIE Jednym z problemów, z którymi spotykamy się w informatyce, jest problem właściwego wykorzystania pamięci. Konstruując algorytm staramy się zwykle nie tylko o zminimalizowanie kosztów czasowych
Wprowadzenie do złożoności obliczeniowej
problemów Katedra Informatyki Politechniki Świętokrzyskiej Kielce, 16 stycznia 2007 problemów Plan wykładu 1 2 algorytmów 3 4 5 6 problemów problemów Plan wykładu 1 2 algorytmów 3 4 5 6 problemów problemów
Laboratorium nr 7 Sortowanie
Laboratorium nr 7 Sortowanie 1. Sortowanie bąbelkowe (BbS) 2. Sortowanie przez wstawianie (IS) 3. Sortowanie przez wybieranie (SS) Materiały Wyróżniamy następujące metody sortowania: 1. Przez prostą zamianę
Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010
Algorytmy równoległe Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka Znajdowanie maksimum w zbiorze n liczb węzły - maksimum liczb głębokość = 3 praca = 4++ = 7 (operacji) n - liczność
Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski
Algorytmy i struktury danych Wykład 5: Drzewa Dr inż. Paweł Kasprowski pawel@kasprowski.pl Drzewa Struktury przechowywania danych podobne do list ale z innymi zasadami wskazywania następników Szczególny
Programowanie dynamiczne cz. 2
Programowanie dynamiczne cz. 2 Wykład 7 16 kwietnia 2019 (Wykład 7) Programowanie dynamiczne cz. 2 16 kwietnia 2019 1 / 19 Outline 1 Mnożenie ciągu macierzy Konstruowanie optymalnego rozwiązania 2 Podstawy
Podstawowe algorytmy i ich implementacje w C. Wykład 9
Wstęp do programowania 1 Podstawowe algorytmy i ich implementacje w C Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Element minimalny i maksymalny zbioru Element minimalny
Algorytm selekcji Hoare a. Łukasz Miemus
Algorytm selekcji Hoare a Łukasz Miemus 1 lutego 2006 Rozdział 1 O algorytmie 1.1 Problem Mamy tablicę A[N] różnych elementów i zmienną int K, takie że 1 K N. Oczekiwane rozwiązanie to określenie K-tego
Wysokość drzewa Głębokość węzła
Drzewa Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.
Analiza algorytmów zadania podstawowe
Analiza algorytmów zadania podstawowe 15 stycznia 2019 Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r P Jaka wartość zostanie zwrócona
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 1 SORTOWANIE Proces ustawiania zbioru elementów w określonym porządku. Stosuje się w celu ułatwienia późniejszego wyszukiwania elementów sortowanego zbioru. 2 Definicja Ciąg wejściowy: a 1,
Wykład z równań różnicowych
Wykład z równań różnicowych 1 Wiadomości wstępne Umówmy się, że na czas tego wykładu zrezygnujemy z oznaczania n-tego wyrazu ciągu symbolem typu x n, y n itp. Zamiast tego pisać będziemy x (n), y (n) itp.
Metody Kompilacji Wykład 7 Analiza Syntaktyczna
Metody Kompilacji Wykład 7 Analiza Syntaktyczna Parsowanie Parsowanie jest to proces określenia jak ciąg terminali może być generowany przez gramatykę. Włodzimierz Bielecki WI ZUT 2/57 Parsowanie Dla każdej
Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2
Algorytmy i struktury danych Wykład 6 Tablice rozproszone cz. 2 Na poprzednim wykładzie Wiele problemów wymaga dynamicznych zbiorów danych, na których można wykonywać operacje: wstawiania (Insert) szukania
LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab
LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI Wprowadzenie do środowiska Matlab 1. Podstawowe informacje Przedstawione poniżej informacje maja wprowadzić i zapoznać ze środowiskiem
Algorytmy i złożoność obliczeniowa. Wojciech Horzelski
Algorytmy i złożoność obliczeniowa Wojciech Horzelski 1 Tematyka wykładu Ø Ø Ø Ø Ø Wprowadzenie Poprawność algorytmów (elementy analizy algorytmów) Wyszukiwanie Sortowanie Elementarne i abstrakcyjne struktury
Złożoność algorytmów. Wstęp do Informatyki
Złożoność algorytmów Złożoność pamięciowa - liczba i rozmiar struktur danych wykorzystywanych w algorytmie Złożoność czasowa - liczba operacji elementarnych wykonywanych w trakcie przebiegu algorytmu Złożoność
Wstęp do programowania
Wstęp do programowania Złożoność obliczeniowa, poprawność programów Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 1 / 20 Złożoność obliczeniowa Problem Ile czasu
Michał Kazimierz Kowalczyk rok 1, semestr 2 nr albumu indeksu: Algorytmy i struktury danych. Problem połączeń
Michał Kazimierz Kowalczyk rok 1, semestr 2 nr albumu indeksu: 28969 Algorytmy i struktury danych Problem połączeń Określenie problemu Problem połączeń możemy odnaleźć w wielu dziedzinach. Dla potrzeb
Sortowanie przez scalanie
Sortowanie przez scalanie Wykład 2 12 marca 2019 (Wykład 2) Sortowanie przez scalanie 12 marca 2019 1 / 17 Outline 1 Metoda dziel i zwyciężaj 2 Scalanie Niezmiennik pętli - poprawność algorytmu 3 Sortowanie
Teoretyczne podstawy informatyki
Teoretyczne podstawy informatyki Wykład 4a: Rozwiązywanie rekurencji http://kiwi.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Czas działania programu Dla konkretnych
Algorytmy i struktury danych. wykład 5
Plan wykładu: Wskaźniki. : listy, drzewa, kopce. Wskaźniki - wskaźniki Wskaźnik jest to liczba lub symbol który w ogólności wskazuje adres komórki pamięci. W językach wysokiego poziomu wskaźniki mogą również
Temat: Algorytm kompresji plików metodą Huffmana
Temat: Algorytm kompresji plików metodą Huffmana. Wymagania dotyczące kompresji danych Przez M oznaczmy zbiór wszystkich możliwych symboli występujących w pliku (alfabet pliku). Przykład M = 2, gdy plik
3. Macierze i Układy Równań Liniowych
3. Macierze i Układy Równań Liniowych Rozważamy równanie macierzowe z końcówki ostatniego wykładu ( ) 3 1 X = 4 1 ( ) 2 5 Podstawiając X = ( ) x y i wymnażając, otrzymujemy układ 2 równań liniowych 3x
Łyżwy - omówienie zadania
Komisja Regulaminowa XVI Olimpiady Informatycznej 1 UMK Toruń 12 luty 2009 1 Niniejsza prezentacja zawiera materiały dostarczone przez Komitet Główny Olimpiady Informatycznej. Treść zadania Wejście Wyjście
Matematyka dyskretna - 7.Drzewa
Matematyka dyskretna - 7.Drzewa W tym rozdziale zajmiemy się drzewami: specjalnym przypadkiem grafów. Są one szczególnie przydatne do przechowywania informacji, umożliwiającego szybki dostęp do nich. Definicja
Typy danych. 2. Dane liczbowe 2.1. Liczby całkowite ze znakiem i bez znaku: 32768, -165, ; 2.2. Liczby rzeczywiste stało i zmienno pozycyjne:
Strona 1 z 17 Typy danych 1. Dane tekstowe rozmaite słowa zapisane w różnych alfabetach: Rozwój metod badawczych pozwala na przesunięcie granicy poznawania otaczającego coraz dalej w głąb materii: 2. Dane
Wykład z Technologii Informacyjnych. Piotr Mika
Wykład z Technologii Informacyjnych Piotr Mika Uniwersalna forma graficznego zapisu algorytmów Schemat blokowy zbiór bloków, powiązanych ze sobą liniami zorientowanymi. Jest to rodzaj grafu, którego węzły
Algorytmy i struktury danych. Wykład 4
Wykład 4 Różne algorytmy - obliczenia 1. Obliczanie wartości wielomianu 2. Szybkie potęgowanie 3. Algorytm Euklidesa, liczby pierwsze, faktoryzacja liczby naturalnej 2017-11-24 Algorytmy i struktury danych
Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15
Technologie cyfrowe Artur Kalinowski Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.pl Semestr letni 2014/2015 Zadanie algorytmiczne: wyszukiwanie dane wejściowe:
REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał
REKURENCJA W JĘZYKU HASKELL Autor: Walczak Michał CZYM JEST REKURENCJA? Rekurencja zwana rekursją, polega na wywołaniu przez funkcję samej siebie. Algorytmy rekurencyjne zastępują w pewnym sensie iteracje.
Sortowanie danych. Jolanta Bachan. Podstawy programowania
Sortowanie danych Podstawy programowania 2013-06-06 Sortowanie przez wybieranie 9 9 9 9 9 9 10 7 7 7 7 7 10 9 1 3 3 4 10 7 7 10 10 10 10 4 4 4 4 4 4 3 3 3 3 2 2 2 2 2 2 2 3 1 1 1 1 1 1 Gurbiel et al. 2000
4. Postęp arytmetyczny i geometryczny. Wartość bezwzględna, potęgowanie i pierwiastkowanie liczb rzeczywistych.
Jarosław Wróblewski Matematyka dla Myślących, 008/09. Postęp arytmetyczny i geometryczny. Wartość bezwzględna, potęgowanie i pierwiastkowanie liczb rzeczywistych. 15 listopada 008 r. Uwaga: Przyjmujemy,
Algorytmy i Struktury Danych, 9. ćwiczenia
Algorytmy i Struktury Danych, 9. ćwiczenia 206-2-09 Plan zajęć usuwanie z B-drzew join i split na 2-3-4 drzewach drzepce adresowanie otwarte w haszowaniu z analizą 2 B-drzewa definicja każdy węzeł ma następujące
Sortowanie Shella Shell Sort
Sortowanie Shella Shell Sort W latach 50-tych ubiegłego wieku informatyk Donald Shell zauważył, iż algorytm sortowania przez wstawianie pracuje bardzo efektywnie w przypadku gdy zbiór jest w dużym stopniu
Złożoność obliczeniowa zadania, zestaw 2
Złożoność obliczeniowa zadania, zestaw 2 Określanie złożoności obliczeniowej algorytmów, obliczanie pesymistycznej i oczekiwanej złożoności obliczeniowej 1. Dana jest tablica jednowymiarowa A o rozmiarze
Algorytmy sortujące. sortowanie kubełkowe, sortowanie grzebieniowe
Algorytmy sortujące sortowanie kubełkowe, sortowanie grzebieniowe Sortowanie kubełkowe (bucket sort) Jest to jeden z najbardziej popularnych algorytmów sortowania. Został wynaleziony w 1956 r. przez E.J.
ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.
POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 204/205 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 2 : Drzewa BST c.d., równoważenie
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Algorytmy i struktury danych Laboratorium Drzewa poszukiwań binarnych 1 Cel ćwiczenia Ćwiczenie ma na celu zapoznanie studentów
wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.)
egzamin podstawowy 7 lutego 2017 r. wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.) Instytut Informatyki Uniwersytetu Wrocławskiego Paweł Rzechonek imię, nazwisko i nr indeksu:..............................................................
Definicja pliku kratowego
Pliki kratowe Definicja pliku kratowego Plik kratowy (ang grid file) jest strukturą wspierająca realizację zapytań wielowymiarowych Uporządkowanie rekordów, zawierających dane wielowymiarowe w pliku kratowym,
Sortowanie. LABORKA Piotr Ciskowski
Sortowanie LABORKA Piotr Ciskowski main Zaimplementuj metody sortowania przedstawione w następnych zadaniach Dla każdej metody osobna funkcja Nagłówek funkcji wg uznania ale wszystkie razem powinny być
Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne
Algorytmy i struktury danych Drzewa: BST, kopce Letnie Warsztaty Matematyczno-Informatyczne Drzewa: BST, kopce Definicja drzewa Drzewo (ang. tree) to nieskierowany, acykliczny, spójny graf. Drzewo może
Sortowanie bąbelkowe
1/98 Sortowanie bąbelkowe (Bubble sort) prosty i nieefektywny algorytm sortowania wielokrotnie przeglądamy listę elementów, porównując dwa sąsiadujące i zamieniając je miejscami, jeśli znajdują się w złym
1 Automaty niedeterministyczne
Szymon Toruńczyk 1 Automaty niedeterministyczne Automat niedeterministyczny A jest wyznaczony przez następujące składniki: Alfabet skończony A Zbiór stanów Q Zbiór stanów początkowych Q I Zbiór stanów
Algorytmy i struktury danych
Algorytmy i struktury danych ĆWICZENIE 2 - WYBRANE ZŁOŻONE STRUKTURY DANYCH - (12.3.212) Prowadząca: dr hab. inż. Małgorzata Sterna Informatyka i3, poniedziałek godz. 11:45 Adam Matuszewski, nr 1655 Oliver
Temat: Algorytmy wyszukiwania wzorca w tekście
Temat: Algorytmy wyszukiwania wzorca w tekście 1. Sformułowanie problemu Dany jest tekst T oraz wzorzec P, będące ciągami znaków o długości równej odpowiednio n i m (n m 1), nad pewnym ustalonym i skończonym
TEORETYCZNE PODSTAWY INFORMATYKI
1 TEORETYCZNE PODSTAWY INFORMATYKI 16/01/2017 WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Repetytorium złożoność obliczeniowa 2 Złożoność obliczeniowa Notacja wielkie 0 Notacja Ω i Θ Rozwiązywanie
Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek
Algorytmy i str ruktury danych Metody algorytmiczne Bartman Jacek jbartman@univ.rzeszow.pl Metody algorytmiczne - wprowadzenia Znamy strukturę algorytmów Trudność tkwi natomiast w podaniu metod służących
Znajdowanie skojarzeń na maszynie równoległej
11 grudnia 2008 Spis treści 1 Skojarzenia w różnych klasach grafów Drzewa Grafy gęste Grafy regularne dwudzielne Claw-free graphs 2 Drzewa Skojarzenia w drzewach Fakt Wybierajac krawędź do skojarzenia
liniowa - elementy następują jeden za drugim. Graficznie możemy przedstawić to tak:
Sortowanie stogowe Drzewo binarne Binary Tree Dotychczas operowaliśmy na prostych strukturach danych, takich jak tablice. W tablicy elementy ułożone są zgodnie z ich numeracją, czyli indeksami. Jeśli za
Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel
Wstęp do programowania Drzewa Piotr Chrząstowski-Wachtel Drzewa Drzewa definiują matematycy, jako spójne nieskierowane grafy bez cykli. Równoważne określenia: Spójne grafy o n wierzchołkach i n-1 krawędziach
KODY SYMBOLI. Kod Shannona-Fano. Algorytm S-F. Przykład S-F
KODY SYMBOLI Kod Shannona-Fano KODOWANIE DANYCH, A.Przelaskowski Metoda S-F Kod Huffmana Adaptacyjne drzewo Huffmana Problemy implementacji Kod Golomba Podsumowanie Kod drzewa binarnego Na wejściu rozkład:
Bioinformatyka Laboratorium, 30h. Michał Bereta
Bioinformatyka Laboratorium, 30h Michał Bereta mbereta@pk.edu.pl www.michalbereta.pl 1 Często dopasować chcemy nie dwie sekwencje ale kilkanaście lub więcej 2 Istnieją dokładne algorytmy, lecz są one niewydajne
Materiały dla finalistów
Materiały dla finalistów Malachoviacus Informaticus 2016 11 kwietnia 2016 Wprowadzenie Poniższy dokument zawiera opisy zagadnień, które będą niezbędne do rozwiązania zadań w drugim etapie konkursu. Polecamy