ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Podobne dokumenty
ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Przykład: Σ = {0, 1} Σ - zbiór wszystkich skończonych ciagów binarnych. L 1 = {0, 00, 000,...,1, 11, 111,... } L 2 = {01, 1010, 001, 11}

Języki formalne i techniki translacji

Maszyna Turinga języki

Modele Obliczeń. Wykład 3 - Maszyny RAM i funkcje rekurencyjne. Marcin Szczuka. Instytut Matematyki, Uniwersytet Warszawski

Matematyczne Podstawy Informatyki

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

A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym

Struktura i działanie jednostki centralnej

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

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

Efektywność Procedur Obliczeniowych. wykład 5

Algorytmy w teorii liczb

Odmiany maszyny Turinga. dr hab. inż. Joanna Józefowska, prof. PP 1

Hierarchia Chomsky ego Maszyna Turinga

Kody Tunstalla. Kodowanie arytmetyczne

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

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

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

Wstęp do programowania

Sortowanie topologiczne skierowanych grafów acyklicznych

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

Algorytmy i struktury danych

Maszyna Turinga. Algorytm. czy program???? Problem Hilberta: Przykłady algorytmów. Cechy algorytmu: Pojęcie algorytmu

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

Wykład 8. Informatyka Stosowana. 26 listopada 2018 Magdalena Alama-Bućko. Informatyka Stosowana Wykład , M.A-B 1 / 31

Podstawy i języki programowania

Wykład 6. Wyszukiwanie wzorca w tekście

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Programowanie w C++ 1 Opis procesora Sextium II. Opis procesora Sextium. materiały dydaktyczne udostępnione przez Tomasza Wierzbickiego

Wyrażenie nawiasowe. Wyrażenie puste jest poprawnym wyrażeniem nawiasowym.

Rozwiązania około dwustu łatwych zadań z języków formalnych i złożoności obliczeniowej i być może jednego chyba trudnego (w trakcie tworzenia)

Obliczenia inspirowane Naturą

Języki formalne i automaty Ćwiczenia 7

Zaawansowane algorytmy i struktury danych

Kodowanie informacji

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Temat: Algorytmy wyszukiwania wzorca w tekście

Jak należy się spodziewać, mamy. Zauważmy jednak, że nie zachodzi równość

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Projektowanie. Projektowanie mikroprocesorów

Podstawy działania i programowania procesorów. 1. Architektura emulatora maszyny RAM

Lab. 02: Algorytm Schrage

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

1. Analiza algorytmów przypomnienie

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

Wprowadzenie do złożoności obliczeniowej

Elementy Teorii Obliczeń

Podstawy Informatyki

1 abbbaabaaabaa -wzorzec: aaba

Met Me ody numer yczne Wykład ykład Dr inż. Mic hał ha Łan Łan zon Instyt Ins ut Elektr Elektr echn iki echn i Elektrot Elektr echn olo echn

Języki formalne i automaty Ćwiczenia 9

Zespół Szkół Technicznych. Badanie wyświetlaczy LCD

1 Wprowadzenie do algorytmiki

Lista Rozkazów: Język komputera

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

Algorytmy i Struktury Danych, 2. ćwiczenia

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

Grzegorz Mazur. Zak lad Metod Obliczeniowych Chemii UJ. 14 marca 2007

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Obliczanie. dr hab. inż. Joanna Józefowska, prof. PP 1

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

Wstęp do Informatyki

1 Automaty niedeterministyczne

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

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

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

Logiczny model komputera i działanie procesora. Część 1.

EGZAMIN MATURALNY Z INFORMATYKI 17 MAJA 2016 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

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

Temat: Algorytm kompresji plików metodą Huffmana

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

TEORETYCZNE PODSTAWY INFORMATYKI

Języki, automaty i obliczenia

Zadanie 1. Potęgi (14 pkt)

1 Działania na zbiorach

Pliki. Operacje na plikach w Pascalu

3. Opracować program kodowania/dekodowania pliku tekstowego. Algorytm kodowania:

Kiwi pytania gimnazjalne

Wstęp do komputerów kwantowych

Podstawy Informatyki Maszyna Turinga

Zasady analizy algorytmów

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

Algorytmy i struktury danych. wykład 8

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

TEORETYCZNE PODSTAWY INFORMATYKI

Metody numeryczne. Janusz Szwabiński. nm_slides.tex Metody numeryczne Janusz Szwabiński 2/10/ :02 p.

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

O pewnych związkach teorii modeli z teorią reprezentacji

Język programowania: Lista instrukcji (IL Instruction List)

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Algorytmy i struktury danych. wykład 2

ALGEBRA LINIOWA Z ELEMENTAMI GEOMETRII ANALITYCZNEJ. 1. Ciała

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

Pracownia Komputerowa wykład V

Arytmetyka liczb binarnych

Algorytm Grovera. Kwantowe przeszukiwanie zbiorów. Robert Nowotniak

Automat ze stosem. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Transkrypt:

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW MASZYNY O DOSTEPIE SWOBODNYM (RAM) Bartosz Zieliński Katedra Fizyki Teoretycznej i Informatyki Zima 2011-2012

INSTRUKCJE MASZYNY RAM Instrukcja Argument Znaczenie READ j r 0 := i j READ j r 0 := i rj STORE j r j := r 0 STORE j r ij := r 0 LOAD x r 0 := x ADD x r 0 := r 0 + x SUB x r 0 := r 0 x HALF r 0 := r 02 JUMP j κ := j JPOS j if r 0 > 0 then κ := j JZERO j if r 0 = 0 then κ := j JNEG j if r 0 < 0 then κ := j HALT κ := 0 gdzie x ma formę = j, j lub j. BARTOSZ ZIELIŃSKI (KFTII) ZŁOŻONOŚĆ... 2011/12 2 / 12

MNOŻENIE LICZB, PSEUDOKOD xy = log y k=0 PROGRAM OBLICZA ILOCZYN x I y 1: sum := 0; ˆx := x; ŷ := y; 2: while ŷ 0 do ; 3: ŷ 2 := ŷ 2 2 k xy[k] 4: if ŷ 2 + ŷ 2 ŷ 0 then 5: sum := sum + ˆx; 6: end if 7: ˆx := ˆx + ˆx; ŷ = ŷ 2 ; 8: end while 9: PRINT(sum); sum = xy BARTOSZ ZIELIŃSKI (KFTII) ZŁOŻONOŚĆ... 2011/12 3 / 12

MNOŻENIE LICZB, PROGRAM RAM 1. READ 1 2. STORE 1 ˆx := x 3. READ 2 4. STORE 2 ŷ := y 5. JZERO 20 while ŷ 0 do 6. HALF 7. STORE 4 ŷ 2 := ŷ 2 8. ADD 4 9. SUB 2 10. JZERO 14 if ŷ 2 + ŷ 2 ŷ 0 then 11. LOAD 3 12. ADD 1 13. STORE 3 sum := sum + ˆx 14. LOAD 1 end if 15. ADD 1 16. STORE 1 ˆx := ˆx + ˆx 17. LOAD 4 18. STORE 2 ŷ = ŷ 2 19. JUMP 5 end while 20. LOAD 3 PRINT(SUM) 21. HALT BARTOSZ ZIELIŃSKI (KFTII) ZŁOŻONOŚĆ... 2011/12 4 / 12

SYMULACJA MASZYNY TURINGA PRZEZ RAM Niech Σ = {σ 1,..., σ k } alfabet maszyny Turinga. Niech D Σ = {(i 1,..., i n ) 1 i j k, j = 1,..., n}. Jeśli L (Σ ) jest językiem to φ L : D Σ {0, 1}, { 1 gdy σi1... σ φ L (i 1,..., i n ) = in L 0 gdy σ i1... σ in / L TWIERDZENIE Niech L będzie językiem należacym do TIME(f (n)). Wówczas istnieje program RAM który oblicza funkcję φ L w czasie O(f (n)). BARTOSZ ZIELIŃSKI (KFTII) ZŁOŻONOŚĆ... 2011/12 5 / 12

DOWÓD TWIERDZENIA O SYMULACJI MT Niech M = (K, Σ, δ, s) maszyna Turinga rozstrzygajac a język L w czasie f (n). Niech n długość słowa wejściowego. Symulacja zaczyna od skopiowania danych do rejestrów o numerach od 4 do n + 3. Rejestr 1 zawiera numer rejestru zawierajacy kod znaku pod aktualna pozycja kursora (na poczatku 4). Program składa się z ciagu instrukcji dla każdego stanu q K. Każdy z ciagów składa się z Σ podciagów (dla każdego symbolu z Σ). Niech podciag odpowiadajacy stanowi q i symbolowi σ j zaczyna się od linii N q,σj BARTOSZ ZIELIŃSKI (KFTII) ZŁOŻONOŚĆ... 2011/12 6 / 12

SYMULACJA JEDNEGO KROKU MT NIECH δ(q, σ j ) = (p, σ l, D) N q,σj. LOAD 1 (pobierz symbol pod kursorem) N q,σj + 1. SUB = j (odejmij numer tego symbolu) N q,σj + 2. JZERO N q,σj + 4 (jeśli symbolem nie jest σ j N q,σj + 3. JUMP N q,σj+1 to skok do obsługi σ j+1 ) N q,σj + 4. LOAD = l N q,σj + 5. STORE 1 (Zapisujemy σ l pod kursorem) N q,σj + 6. LOAD 1 (Przesuwamy kursor o d gdzie N q,σj + 7. ADD = d d = 1 dla D =, d = 1 dla N q,σj + 8. STORE 1 D = i d = 0 dla D = ) N q,σj + 9. JUMP N p,σ1 (Rozpocznij symulację stanu p) BARTOSZ ZIELIŃSKI (KFTII) ZŁOŻONOŚĆ... 2011/12 7 / 12

SYMULACJA RAM PRZEZ MASZYNE TURINGA REPREZENTACJA Niech b(i) binarna reprezentacja i. Niech I = (i 1,..., i n ) ciag liczb całkowitych. Wtedy binarna reprezentacja b(i) := b(i 1 );... b(i n ). Niech D zbiór skończonych ciagów liczb całkowitych. Niech φ : D Z. Maszyna Turinga M oblicza φ gdy M(b(I)) = b(φ(i)). TWIERDZENIE Jeżeli program Π maszyny RAM oblicza funkcję φ w czasie f (n) to istnieje maszyna Turinga z 7 ciagami która oblicza φ w czasie O(f (n) 3 ). BARTOSZ ZIELIŃSKI (KFTII) ZŁOŻONOŚĆ... 2011/12 8 / 12

DOWÓD TWIERDZENIA O SYMULACJI RAM CIAGI MASZYNY TURINGA M Ciag 1 to ciag wejściowy tylko do odczytu. Ciag 2 reprezentacje zawartości (zmodyfikowanych) rejestrów R. Sekwencje słów b(i) : b(r i ) odzielonych średnikami, znaki puste, koniec znak. Uaktualnienie rejestru i para b(i) : b(r i ) zastępowana spacjami, nowa para dopisywana na końcu. Ciag 3 bieżaca wartość licznika rozkazów κ. Ciag 4 adres aktualnie poszukiwanego rejestru. CIagi 5,6,7 ciagi robocze. BARTOSZ ZIELIŃSKI (KFTII) ZŁOŻONOŚĆ... 2011/12 9 / 12

KROKI SYMULACJI Stany maszyny M podzielone sa na m grup gdzie m jest liczba instrukcji w programie Π. Zawartość potrzebnego w danej instrukcji rejestru jest odnajdywana przez przegladanie ciagu 2: Dla każdej pary b(i) : b(r i ) słowo b(i) jest porównywane z zawartościa ciagu 4. Jeśli się zgadzaja to b(r i ) jest kopiowane do jednego z pozostałych ciagów celem przetworzenia. W przeciwnym wypadku szukamy dalej. Trzy operacje arytmetyczne wykonywane sa na ciagach 4, 5, 6. Dwa zawieraja argumenty a w trzecim zapisujemy wynik. Po obliczeniu aktualizujemy ciag 2. Dla instrukcji HALT zawartość rejestru 0 przenoszona jest z ciagu 2 do ciagu 7. BARTOSZ ZIELIŃSKI (KFTII) ZŁOŻONOŚĆ... 2011/12 10 / 12

CZAS DZIAŁANIA SYMULACJI LEMAT Po t krokach obliczeń programu RAM na danych I zawartość każdego rejestru ma długość najwyżej t + l(i) + l(b) gdzie B jest największa liczba zapisana jawnie w instrukcji programu Π. DOWÓD OGRANICZENIA CZASOWEGO Wystarczy dowieść że symulacja jednej instrukcji programu Π zabiera M czas O(f (n) 2 ) Zdekodowanie instrukcji i stałych stały czas. Pobranie wartości rejestrów z ciagu 2 O(f (n) 2 ): Ciag zawiera O(f (n)) par, każda długości O(f (n)) (Lemat). Proste operacje (ADD, SUB, HALF) czas O(f (n)) liniowy do rozmiaru argumentów. BARTOSZ ZIELIŃSKI (KFTII) ZŁOŻONOŚĆ... 2011/12 11 / 12

ZADANIE/PRZYKŁAD Dane wejściowe: Ciag dwóch liczb całkowitych KOD RAM 1. READ 1 2. JZERO 6 3. STORE 1 4. READ 2 5. ADD 1 6. HALT Zadanie: Zdefiniować MT symulujac a powyższy program. BARTOSZ ZIELIŃSKI (KFTII) ZŁOŻONOŚĆ... 2011/12 12 / 12