Lista 0. Kamil Matuszewski 1 marca 2016

Podobne dokumenty
Zaawansowane algorytmy i struktury danych

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

Drzewa rozpinajace, zbiory rozłaczne, czas zamortyzowany

Algorytmy i struktury danych

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Zasady analizy algorytmów

Algorytmy i Struktury Danych, 2. ćwiczenia

Luty 2001 Algorytmy (7) 2000/2001

3. Macierze i Układy Równań Liniowych

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

1 Całki funkcji wymiernych

Lista 4. Kamil Matuszewski 22 marca 2016

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

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

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

Sortowanie topologiczne skierowanych grafów acyklicznych

Kurs ZDAJ MATURĘ Z MATEMATYKI MODUŁ 2 Teoria liczby rzeczywiste cz.2

Wykład 2. Drzewa zbalansowane AVL i 2-3-4

Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia:

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

Algorytmy i Struktury Danych, 9. ćwiczenia

Arytmetyka. Arytmetyka. Magdalena Lemańska. Magdalena Lemańska,

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA

Algorytmy w teorii liczb

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

1 Układy równań liniowych

A) 0,84; B) 8,4; C) 0,084; D) 0,0084; jest równa: ; C) 1; D) 0;

Algorytmy Równoległe i Rozproszone Część X - Algorytmy samostabilizujące.

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.

0 + 0 = 0, = 1, = 1, = 0.

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

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Podstawy Informatyki. Sprawność algorytmów

Funkcja kwadratowa. f(x) = ax 2 + bx + c,

Iteracje. Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony.

Algorytmy dynamiczne. Piotr Sankowski. - p. 1/14

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

TEORETYCZNE PODSTAWY INFORMATYKI

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

2. Układy równań liniowych

Krótkie wprowadzenie do macierzy i wyznaczników

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

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

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

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

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.

Przykładowe zadania z teorii liczb

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Kodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład Kody liniowe - kodowanie w oparciu o macierz parzystości

Macierze. Rozdział Działania na macierzach

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz

Wyszukiwanie binarne

Lista 4. Kamil Matuszewski 10 maja 2016

Algorytmy i struktury danych. Wykład 4

Algorytmy równoległe: prezentacja i ocena efektywności prostych algorytmów dla systemów równoległych

Kod IEEE754. IEEE754 (1985) - norma dotycząca zapisu binarnego liczb zmiennopozycyjnych (pojedynczej precyzji) Liczbę binarną o postaci

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

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Arytmetyka liczb binarnych

Wykład 2. Informatyka Stosowana. 10 października Informatyka Stosowana Wykład 2 10 października / 42

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a

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.

Wykład 2. Informatyka Stosowana. 9 października Informatyka Stosowana Wykład 2 9 października / 42

Sortowanie - wybrane algorytmy

DZIAŁANIA NA UŁAMKACH DZIESIĘTNYCH.

Zajęcia nr 1 (1h) Dwumian Newtona. Indukcja. Zajęcia nr 2 i 3 (4h) Trygonometria

Sumy kwadratów kolejnych liczb naturalnych

Programowanie obiektowe - zadania

Zapis liczb binarnych ze znakiem

Drzewa poszukiwań binarnych

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

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

TEORETYCZNE PODSTAWY INFORMATYKI

Lekcja : Tablice + pętle

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

ZLOŻONOŚĆ OBLICZENIOWA - WYK. 2

Informatyka 1. Złożoność obliczeniowa

5. Całka nieoznaczona

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Rozdział 5. Macierze. a 11 a a 1m a 21 a a 2m... a n1 a n2... a nm

Algorytmy przeszukiwania wzorca

B.B. 2. Sumowanie rozpoczynamy od ostatniej kolumny. Sumujemy cyfry w kolumnie zgodnie z podaną tabelką zapisując wynik pod kreską:

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 6

Lista 6. Kamil Matuszewski 13 kwietnia D n =

Zbigniew S. Szewczak Uniwersytet Mikołaja Kopernika Wydział Matematyki i Informatyki. Graniczne własności łańcuchów Markowa

Scenariusz lekcji matematyki w kl. V.

Rijndael szyfr blokowy

Indukcja matematyczna. Zasada minimum. Zastosowania.

6. Całka nieoznaczona

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2013 POZIOM PODSTAWOWY CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

; B = Wykonaj poniższe obliczenia: Mnożenia, transpozycje etc wykonuję programem i przepisuję wyniki. Mam nadzieję, że umiesz mnożyć macierze...

1. Operacje logiczne A B A OR B

Struktury Danych i Złożoność Obliczeniowa

Transkrypt:

Lista 0 Kamil Matuszewski marca 206 2 3 4 5 6 7 8 0 0 Zadanie 4 Udowodnić poprawność mnożenia po rosyjsku Zastanówmy się co robi nasz algorytm Mamy podane liczby n i m W każdym kroku liczbę n dzielimy przez dwa, a liczbę m mnożymy przez dwa Wykonujemy to dopóki n Jeśli w obecnym kroku liczba n jest nieparzysta, dodajemy do całej sumy liczbę m w tym kroku Ostatecznie suma jest wynikiem mnożenia Pomyślmy o naszej liczbie n w postaci binarnej W każdym kroku algorytmu dzielimy ją przez 2 - czyli w rzeczywistości przesuwamy binarnie w lewo, czy inaczej - usuwamy ostatni bit Jeśli liczba jest nieparzysta - to znaczy, jeśli liczba w zapisie binarnym kończy się na - to do sumy dodajemy liczbę m W i-tym kroku nasza liczba m to tak naprawdę 2 i m Innymi słowy, to, co wykonuje nasz algorytm możemy zapisać jako: log 2 n n i 2 i m Zauważmy, że jeśli i-ty bit liczby n to zero, suma nie jest zwiększona, a jeśli i-ty bit to, zwiększamy ją dokładnie o naszą liczbę m w i-tym kroku Możemy to zapisać inaczej, jako: Teraz, zauważmy, że log 2 n log 2 n m n i 2 i n i 2 i = n, i mamy, że nasz algorytm w rzeczywistości liczy n m Jeśli mówimy o jednorodnym kryterium kosztów, złożoność czasowa naszego algorytmu to O(log 2 n) - ponieważ w każdym przejściu pętli dzielimy liczbę n, mnożymy liczbę m oraz ewentualnie dodajemy do sumy liczbę m Wykonujemy to dokładnie log 2 n razy, każde działanie w czasie O(), stąd taki wynik Co do złożoności pamięciowej, to jest ona O(), bo z każdym przejściem programu przechowujemy tylko kolejne liczby Jeśli chodzi o logarytmiczne kryterium kosztów, to złożoność czasowa to log 2 n czyli pętle, i log 2 nm bo w najgorszym wypadku nasza m którą chcemy dodać do sumy ma taką długość, stąd O(log 2 n log 2 nm) Pamięciowo to najdłuższe będą liczby m w n tym kroku i ostateczna suma Obie mogą mieć maksymalnie log 2 nm bitów, stąd, złożoność pamięciowa to O(log 2 nm)

Zadanie 5 Chcielibyśmy uogólnić algorytm macierzowy obliczania n-tej liczby Fibbonacciego na inne ciągi, w których kolejne elementy są liniową kombinacją skończonej liczby elementów wcześniejszych Inaczej, chcielibyśmy macierz, taką, że: A Gdzie a k+l = α 0 a k + + α l a k+l Można łatwo sprawdzić, że macierz A to: a k+l a k = a k+l a k+ α l α l α 0 0 0 0 0 0 0 2

Teraz, co jeśli n ty element zależy również od jakiegoś W (n)? Sytuacja jest podobna Teraz: gdzie Teraz, chcemy macierz A, taką, że: Teraz, można sprawdzić, że: a n = α l a n + + α 0 a n k + W (n) W (n) = b 0 n 0 + b n + + b s n s A a n a n 2 a n k n n s a n a n = a n k+ (n + ) (n + ) s gdzie: A = A A 2 A 3 A 4 α l α l α 0 0 0 A = 0 0 b 0 b b s 0 0 0 A 2 = 0 0 0 0 0 0 0 A 4 = A 3 = 0 ) ( 0 ( ) 0 ) ( ( s) ) s) ) ( s ( ) s s) ( 0 ( 0 0 ( s 0 Bo, (n + ) k = k ( k ) i n i więc: ( 0 0) 0 0 ( ) ( 0 ) 0 n n + = ) ( s ( ) s s) n s (n + ) s ( s 0 3

Zadanie 6 licznik = 0 Przejdź po tablicy wykonując: licznik a i %2 XOR licznik Zwróć licznik Zajmujemy tylko rozmiar tablicy + jeden bit Jeśli możemy zmieniać na wejściu, zajmujemy tylko długość najdłuższej liczby + jeden bit Zadanie 7 bool=0 Jeśli u i = v i to bool =, zakończ Weź z listy parę (p i, u i ) WPP Dopóki p i korzeń Jeśli p i = v i to bool =, zakończ WPP weź parę (x i, p i ); p i = x i Zakończ AKTUALIZACJA Uwaga, rozwiązanie lepsze: Wcześniej nie zauważyłem, że mamy więcej niż jedno zapytanie Mamy listę zapytań Wywoływanie dla każdej pary wierzchołków tego algorytmu jest trochę kosztowne Dlatego zmienimy rozwiązanie Przetworzymy nasze drzewo DFS em i ustalimy dla każdego wierzchołka czas wejścia i czas wyjścia Oznaczać to będzie, w którym kroku weszliśmy do wierzchołka, i w którym musieliśmy się cofnąć do jego rodzica Stąd na początku czas=0, i z każdym krokiem będzie się zwiększał o Wtedy sprawdzenie czy wierzchołek v leży na ścieżce z u do korzenia, możemy wykonać w czasie O(), sprawdzając, czy czas wejścia do u jest z przedziału czasu wejścia i wyjścia do v Przykład: para(x,y) oznacza (czas wejścia, czas wyjścia) 4

Czas; funkcja Odwiedź(u): oznacz u jako odwiedzony czas wejścia u = czas dla każdego wierzchołka v na liście sąsiedztwa u: jeżeli v nieodwiedzony: czas++ Odwiedź(v) czas wyjścia u = czas; funkcja DFS2(graf G) Czas=0; dla każdego wierzchołka u z grafu G: oznacz u jako nieodwiedzony Odwiedź(korzeń); funkcja CzyLeży(v,u) Jeśli czas wejścia u czas wejścia v i czas wejścia u czas wyjścia v: zwróć tak; zwróć nie; Zadanie 8 Weźmy ciąg wielomianów W 0 (x), W (x),, W n (x), taki, że W 0 (x) = x a W k (x) = (W k (x) 2) 2 Czyli mamy: W n (x) = ( ((x 2) 2 2) 2 2) 2 Zauważmy, że chcemy wiedzieć co stoi przy x 2 Skoro tak, to w wielomianie W k (x) nie ma dla nas znaczenia nic poza a k x 2 + b n x + c n (bo tylko z tego w kolejnych wielomianach możemy otrzymać coś przy x 2 ) Weźmy więc a k x 2 + b k x + c k Interesuje nas a n a 0 = 0 b 0 = c 0 = 0 (bo W 0 (x) = x) a = b = 4 c = 4 (bo W (x) = x 2 4x + 4) Sprawdźmy, jak otrzymać kolejne a k : (a k x 2 + b k x + c k 2) 2 = a 2 kx 4 + 2a k b k x 3 + (2a k c k 4a k + b 2 k)x 2 + (2b k c k 4b k )x + (c 2 k 4c k + 4) Teraz, mamy: c k+ = c 2 k 4c k + 4 = (c k 2) 2 Zauważmy, że c = (0 2) 2 = 4, c 3 = (4 2) 2 = 4, c k = 4 Teraz: b = 4, b 2 = 4 4,, b k = 4 k Teraz: b k+ = 2b k c k 4b k = 8b k 4b k = 4b k a k+ = 2a k c k 4a k + b 2 k = 8a k 4a k 4 k = 4a k + ( 4 k ) 2 = 4a k + 6 k Nadchodzi najciekawsza część: zbudujmy algorytm podobny do algorytmu z zad 5 4 0 6 a k 6 k = a k+ 6 k+ 5

Skoro tak, możemy zapisać, że: Jeśli oznaczymy 4 n a 0 0 6 6 0 = a n 6 n 4 n 0 0 6 = a n 6 n A = a a 2 a 2 a 22 = 4 0 6 Wtedy, a n = a 2 Możemy więc zastosować algorytm szybkiego potęgowania i mamy odpowiedź n 6