Modele algorytmiczne Maszyny proste, obwody logiczne. Spis treści. Plan wykładu spotkania tydzień po tygodniu

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

Struktura i działanie jednostki centralnej

Obliczenia inspirowane Naturą

Języki, automaty i obliczenia

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Obliczenia inspirowane Naturą

Architektura komputerów Wykład 2

Arytmetyka liczb binarnych

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

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

PROBLEMY NIEROZSTRZYGALNE

Architektura komputerów wer. 7

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

Elementy Teorii Obliczeń

Podstawy Informatyki Maszyna Turinga

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

O ALGORYTMACH I MASZYNACH TURINGA

Architektura komputerów wer. 3

Maszyna Turinga (Algorytmy Część III)

Matematyczne Podstawy Informatyki

Układy arytmetyczne. Joanna Ledzińska III rok EiT AGH 2011

Architektura komputerów

Topologia zbioru Cantora a obwody logiczne

KATEDRA INFORMATYKI TECHNICZNEJ. Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych. ćwiczenie 204

Języki formalne i automaty Ćwiczenia 9

Imię, nazwisko, nr indeksu

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

Elementy logiki. Algebra Boole a. Analiza i synteza układów logicznych

Hierarchia Chomsky ego Maszyna Turinga

Plan wykładu. Architektura systemów komputerowych. MnoŜenie realizacja sprzętowa (wersja 1) Układy mnoŝące liczby całkowite.

1 Automaty niedeterministyczne

Teoretyczne podstawy informatyki

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Układy kombinacyjne 1

Języki, automaty i obliczenia

Architektura komputerów, Informatyka, sem.iii. Sumatory

0 --> 5, 1 --> 7, 2 --> 9, 3 -->1, 4 --> 3, 5 --> 5, 6 --> 7, 7 --> 9, 8 --> 1, 9 --> 3.

Architektura systemów komputerowych. Poziom układów logicznych. Układy mnoŝące i dzielące

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

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

ZADANIE 1. Rozwiązanie:

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

Języki formalne i automaty Ćwiczenia 4

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

UKŁADY MIKROPROGRAMOWALNE

Naturalny kod binarny (NKB)

Modele Obliczeń. Wykład 1 - Wprowadzenie. Marcin Szczuka. Instytut Matematyki, Uniwersytet Warszawski

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

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}

Arytmetyka binarna - wykład 6

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Inwerter logiczny. Ilustracja 1: Układ do symulacji inwertera (Inverter.sch)

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 13

Algorytm. a programowanie -

Języki formalne i techniki translacji

Wstęp do programowania

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

O ISTOTNYCH OGRANICZENIACH METODY

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Architektura komputerów

Metody Kompilacji Wykład 8 Analiza Syntaktyczna cd. Włodzimierz Bielecki WI ZUT

Maszyna Turinga języki

Odwrotna Notacja Polska

1 Wprowadzenie do algorytmiki

Turing i jego maszyny

1. Operacje logiczne A B A OR B

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

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Architektura typu Single-Cycle

Bramki logiczne Podstawowe składniki wszystkich układów logicznych

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

Wprowadzenie do maszyny Turinga

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2

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

Algorytmy Równoległe i Rozproszone Część III - Układy kombinacyjne i P-zupełność

Wstęp do informatyki- wykład 2

Projektowanie. Projektowanie mikroprocesorów

Język ludzki kod maszynowy

Ćwiczenie 27 Temat: Układy komparatorów oraz układy sumujące i odejmujące i układy sumatorów połówkowych i pełnych. Cel ćwiczenia

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

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

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

WSTĘP. Budowa bramki NAND TTL, ch-ka przełączania, schemat wewnętrzny, działanie 2

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

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

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

UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Przykładowe pytania DSP 1

Kod U2 Opracował: Andrzej Nowak

Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne

Podstawy Informatyki Systemy sterowane przepływem argumentów

Podstawy programowania w języku C i C++

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

Efektywność Procedur Obliczeniowych. wykład 5

Transkrypt:

, obwody logiczne, obwody logiczne soba prowadząca wykład i ćwiczenia: dr inż. Marek Sawerwain Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski e-mail : M.Sawerwain@issi.uz.zgora.pl tel. (praca) : 68 328 2321, pok. 328a -2, ul. prof. Z.Szafrana 2, 65-246 Zielona Góra statnia zmiana: 8 listopada 2012 V1.1 1/ 55, obwody logiczne Spis treści Wprowadzenie Plan wykładu iologiczny model obliczeniowy Model obliczeń biologicznych/molekularnych Najważniejsze rezultaty Filtrujący model równoległy Maszyna licznikowa gdy trzeba coś policzyć co ma przecinek Złożoność obliczeniowa RM Już za tydzień na wykładzie V1.1 2/ 55 Wprowadzenie Plan wykładu Plan wykładu spotkania tydzień po tygodniu (1) Informacje o wykładzie, poprawność algorytmów (2) Poprawność algorytmów logika Hoarego (3) naliza złożoności kodu wysokiego i niskiego poziomu (4) maszyny proste, obwody logiczne (5) maszyna Turinga oraz rachunek lambda (6) utomaty deterministyczne (7) utomaty niedeterministyczne (8) Gramatyki regularne i bezkontekstowe V1.1 3/ 55 Wprowadzenie Plan wykładu Plan wykładu spotkania tydzień po tygodniu (9) Gramatyki i automaty ze stosem (10) lgorytmy równoległe (11) Klasy złożoności obliczeniowej (12) Pamięć logarytmiczna i wielomianowa (13) Problemy NP-zupełne (14) Wstęp do obliczeń kwantowych (15) Wybrane algorytmy kwantowe V1.1 4/ 55

, obwody logiczne Wprowadzenie Plan wykładu Plan wykładu 1. Model obliczeniowy 1.1 Przykłady modeli obliczeniowych 1.2 Hipoteza hurcha-turinga 2. iologiczny model obliczeń 2.1 na czym bazuje model biologiczny, 2.2 przykładowe modele, 2.3 permutacje i ścieżka Hamiltona. 3. bwody obliczeniowe: 3.1 bramki logiczne, 3.2 obwody logiczne, 3.3 uniwersalny zestaw bramek, 3.4 odwracalne obwody logiczne. 4. : 4.1 Maszyna licznikowa, 4.2, 4.3 Złożoność obliczeniowa. V1.1 5/ 55, obwody logiczne Wprowadzenie Plan wykładu Przydatne materiały Materiały wykorzystane podczas tworzenia tego wykładu, a także przydatne do dalszych studiów: 1. jak zwykle smerf Ważniak, służy pomocą: http://wazniak.mimuw.edu.pl/, 2. Harel D., Rzecz o istocie informatyki, WNT, 2000, 3. symulator maszyny RM: http://mmsyslo.pl/ram/maszyna.html, 4. książka obejmująca zagadnienia biologicznego modelu obliczeniowego: Martyn mos, Theoretical and Experimental DN omputation, Springer-Verlag erlin Heidelberg, 2005, http://www.dcs.ex.ac.uk/~mramos, 5. a model kwantowy będzie omawiany na ostatnich wykładach. V1.1 6/ 55, obwody logiczne Przykładowe modele obliczeniowe: 1. maszyna Turinga (.Turing), 2. rachunek lambda (.hurch), 3. funkcje rekurencyjne (S.Kleene) 4. automaty, 5. obwody logiczne, 6. model biologiczny, 7. model kwantowy. ktualnie uważa się iż wszystkie modele są tak samo silne, w sensie rozwiązywania problemów, tzn. nie istnieje problem, który można rozwiązać w modelu ale nie można w pozostałych modelach. W przypadku modeli kwantowego i biologicznego, istnieją przykłady problemów, które można rozwiązać szybciej niż w pozostałych modelach. V1.1 7/ 55, obwody logiczne przykłady Trzy ważne modele obliczeń: Deterministyczny automat skończony jest opisany przez skończoną liczbę stanów i skończoną liczbę dopuszczalnych przejść pomiędzy podanymi stanami. Niektóre ze stanów oznacza się jako tzw. stany akceptujące. Wejściowy ciąg symboli jest odczytywany kolejno symbol po symbolu, oraz po odczytaniu każdego (I) symbolu wykonywane jest przejście do innego stanu. Po odczytaniu ostatniego symbolu, jeśli maszyna przejdzie do stanu akceptującego, to uważa się iż ciąg symboli został poprawnie rozpoznany. utomat ze stosem analogiczny jak poprzednio, jednakże nowym elementem jest dodanym stos, na którym można zapisać dowolną ilość symboli. W każdym (II) przejściu dodatkowo należy określić, czy nowy symbol powinien zostać zapisany na stosie bądź też odczytany z wierzchołka stosu. Maszyna Turinga idea podobna do automatu skończonego, jednakże dodano (III) nieskończoną taśmę, na której maszyna może zapisywać i odczytywać symbole, przemieszczając się po niej w lewą bądź w prawą stronę. V1.1 8/ 55

, obwody logiczne Hipoteza hurcha-turinga nim przejdziemy do przykładów modeli hoć istnieje wiele modeli obliczeniowych, to wszystkie mają pewną wspólną cechę: Hipoteza hurcha-turinga Każdy problem algorytmiczny, dla którego można znaleźć algorytm, i podać implementację tego algorytmu w dowolnym języku (modelu obliczeniowym), i realizować jego wykonanie na dowolnym komputerze przy nieograniczonych zasobach czasu oraz pamięci jest także rozwiązywalny przez maszynę Turinga. Powyższą hipotezę, można też podać w krótszej wersji: Hipoteza hurcha-turinga Każdy problem, który może być intuicyjnie uznany za obliczalny, jest rozwiązywalny przez maszynę Turinga. V1.1 9/ 55 iologiczny model obliczeniowy iologiczny model obliczeniowy materiał dodatkowy V1.1 10/ 55 iologiczny model obliczeniowy Łańcuch DN Łańcuch DN jest zbudowany z czterech zasad azotowych, adeniny i guaniny G (zasady purynowe) oraz cytozyny i tyminy T (zasady pirymidynowe), w przypadku niektórych wirusów zamiast tyminy występuje uracyl U. Zasady tworzą następujące pary: Struktura chemiczna DN: -T (-U) G- T- (U-) -G peracje wykonywane na łańcuchach DN to: synteza, rozplatanie, splatanie, łączenie łańcuchów. V1.1 11/ 55 Model obliczeń biologicznych/molekularnych Przykłady modeli obliczeń molekularnych ztery podstawowe (naturalne) modele obliczeń molekularnych: model filtrujący (filtering model), model łączący (splicing model), model konstruktywny (constructive model), model membranowy (membrane model), model p-systemów (odmiana modelu membranowego). V1.1 12/ 55

Najważniejsze rezultaty Najważniejsze rezultaty Problem io kroki Nitki DN Directed Hamiltonian path (n) n! ontact network satisfiability (s) 2 n ircuit satisfiability (s) 2 n MX-ircuit-Satisfiability (s) 2 n Regular-ircuit-Satisfiability (s) 2 n 1-tape NTM (t) 2 N ircuit satisfiability via 1-NTM Θ(s 2 ) 2 n ellular utomata 1 t S PSPE (S) 2 2S Polynomial Hierarchy (s) 2 n znaczenia: n liczba wierzchołków, zmiennych, s liczba bramek, t czas, N liczba bitów niedeterministycznych, S wielkość przestrzeni, V1.1 13/ 55 Filtrujący model równoległy Filtrujący model równoległy Podstawowe równoległe operacje w modelu filtrującym: remove(u, {S i }) operacja usuwa ze zbioru U dowolny łańcuch znaków zawierający co najmniej jedno wystąpienie podciągu S i, union({u i }, U) operacja tworzy zbiór U będący sumą wszystkich zbiorów U i, copy(u, {U i }) operacja powiela zbiór U na U i kopii, select(u) operacja losowo wybiera element ze zbioru U, jeśli zbiór U jest pusty, to zwrócony zostanie pusty element. V1.1 14/ 55 Filtrujący model równoległy, obwody logiczne Generowanie permutacji Utworzenie zbioru P n zawierającego wszystkie permutacje liczb całkowitych {1, 2,..., n}. Wejście: Zbiór U zawierający wszystkie łańcuchy o postaci p 1 i 1 p 2 i 2... p n i n, gdzie j, p j jednoznacznie określa pozycję j dla każdego i j w 1, 2,..., n. znacza to że każdy ciąg znaków składa się z n liczb całkowitych z wieloma wystąpieniami tej samej liczby całkowitej. 1: for j = 1 to n - 1 do do 2: copy(u, {U 1, U 2,..., U n }) 3: for i = 1, 2,..., n and all k > j do in parallel 4: remove(u i, {p j i, p k i}) 5: end for 6: union({u 1, U 2,..., U n }, U) 7: end for 8: P n := U Złożoność: (n) dla czasu równoległego. V1.1 15/ 55 Filtrujący model równoległy Ścieżka Hamiltona Wejście: Zbiór wejściowy U oraz zbiór P n wszystkich permutacji liczb całkowitych od 1 do n podobnie jak w przypadku permutacji. Liczba i na pozycji p k w jednej z otrzymanych permutacji posiada następującą interpretację: łańcuch znaków reprezentuje jedno z rozwiązań, gdzie wierzchołek i jest odwiedzany w kroku k. 1: for 2 i n 1 and j, k such that (j, k) / E do in parallel 2: remove(u, {jp i k}) 3: end for 4: select(u) Złożoność: Stały czas równoległy w zależności od P n. V1.1 16/ 55

bwody obliczeniowe albo obwody logiczne V1.1 17/ 55 Istnieje alfabet = {0, 1}, dla którego obwody logiczne obliczają funkcje {0, 1} n {0, 1} m. Podstawowe elementy, czyli bramki logiczne jakie są używane w obwodach są reprezentowane przez następujące funkcje: 1. : 2, (bramka koniunkcji) zdefiniowana przez warunek (x 1, x 2 ) = 1 x 1 = x 2 = 1, 2. : 2, (bramka alternatywy) określona przez warunek (x 1, x 2 ) = 0 x 1 = x 2 = 0, 3. :, (bramka negacji) zdefiniowana przez relację x = 1 x. Uzupełnieniem może być bramka alternatywy wykluczającej (XR): 1. : 2, (bramka XR) zdefiniowana przez warunek (x 1, x 2 ) = 1 x 1 = 0, x 2 = 1 x 1 = 1, x 2 = 0. V1.1 18/ 55 ramki logiczne Przykłady symboli dla kilku bramek logicznych: R2 ND2 NT NR2 NND2 XR2 1 FNUT 2 V1.1 19/ 55 Podstawowe bramki logiczne Trzy podstawowe bramki logiczne do budowy obwodów logicznych: R2 ND2 NT R2 0 0 0 0 1 1 1 0 1 1 1 1 ND2 0 0 0 0 1 0 1 0 0 1 1 1 NT 0 1 1 0 V1.1 20/ 55

bwód logiczny bwód logiczny jest reprezentowany przez skierowany graf acykliczny, gdzie węzły zawierają zmiennej wejściowe, zmienne wyjściowe oraz bramki logiczne. W dowolnym węźle wejściowym nie krawędzi przychodzących, i podobnie w dowolnym węźle wyjściowym nie ma krawędzi wychodzących. W przypadku obwodów logicznych krawędzie grafu są nazywane także połączeniami. Liczba węzłów w danym obwodzie determinuje także złożoność obwodu logicznego. bwód logiczny o n zmiennych wejściowych oznaczonych x 1, x 2,..., x n i m wyjściowych y 1, y 2,..., y n w określa funkcję n m, gdzie zarówno dane wejściowe oraz wyjściowe są kodowane za pomocą wartości zero oraz jedność, a każda funkcja podstawowa, jak funkcja koniunkcji, alternatywy oraz negacji jest obliczana przez odpowiednie bramki. V1.1 21/ 55 Półsumator jako funkcja 2 2 Półsumator można potraktować jako funkcję f : 2 2, określoną w następujący sposób: 1. f (0, 0) = (0, 0), 2. f (0, 1) = (0, 1), 3. f (1, 0) = (0, 1), 4. f (1, 1) = (1, 0). gólnie f (x 1, x 2 ) = (y 1, y 2 ) oraz y 1 = (x 1 + x 2 ) mod 2, a wartość y 2 reprezentuje bit przeniesienia, y 2 = (x 1 x 2 ). V1.1 22/ 55 Półsumator XR2 output carry ND2 Tabela prawdy dla półsumatora, oraz bity wejściowe, natomiast to wartość sumy natomiast oznacza bit przeniesienia. 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 V1.1 23/ 55 Jednobitowy pełny sumator output carry 1 DDR DDR R2 pis działania sumatora jednobitowego: = 1, = + ( ) 1 także tabela prawdy: 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 V1.1 24/ 55

1/2 + 1 = "4 bits full adder" (0) (3:0) (3:0) (0) Full dder (3:0) (0) Pełny czterobitowy układ sumujący, zbudowanych pełnych sumatorów jednobitowych, oznacza przeniesienie, oraz to wartości bitowe, które są dodawane. (1) (1) (2) (2) Full dder Full dder (1) (2) (3) (3) Full dder (3) V1.1 25/ 55 Zestawy bramek uniwersalnych Tw. E.Posta o zupełnym zbiorze funkcji logicznych Dowolna funkcja n m może zostać obliczona za pomocą obwodu logicznego zbudowanego z bramek koniunkcji, alternatywy oraz negacji. Szkic dowodu: Zbiór bramek S nazywamy uniwersalnym, jeżeli wszystkie funkcje n m mogą być zrealizowane za pomocą bramek ze zbioru S. Należy pokazać że and, or, not jest uniwersalnym zestawem bramek. Po pierwsze wszystkie funkcje n m są obliczalne ponieważ można utworzyć m pomocniczych funkcji obliczających wartość pojedynczego bitu. Łatwo wykazać iż wartość funkcji a : x 1 x 2 x 3 wynosi 0 jeśli x 1 = x 2 = x 3 = 0, co można rozszerzyć na dowolną ilość zmiennych. nalogicznie funkcja b : x 1 x 2 x 3 przyjmuje 1, jeśli x 1 = x 2 = x 3 = 1. V1.1 26/ 55, obwody logiczne Zestawy bramek uniwersalnych Szkic dowodu cd: Dla każdego a = (a 1, a 2,..., a n ) n można określić funkcję M a taką, że M a (x 1, x 2,..., x n ) = φ 1 (x 1 ) φ 2 (x 2 )... φ n (x n ), gdzie φ i (x i ) = 1, jeśli a i = 0 oraz φ i (x i ) = x i, jeśli a i = 1. o oznacza iż funkcja M a może zostać skonstruowana za pomocą bramek and oraz not. Wiadomo też z poprzedniego przykładu M a (x 1, x 2,..., x n ) = 1 i ψ i (x i ) = 1. Ponieważ, { xi, jeśli a φ i (x i ) = i = 1, x i, jeśli a i = 0, a więc φ i (x i ) = 1 x i = a i. Pozwala to stwierdzić, że M a jest funkcją charakterystyczną zbioru {a} : M a (x) = 1 x = a. Stosując funkcje charakterystyczne M a łatwo skonstruować dowolną funkcję f : f = M a1 M a2... M ak, gdzie elementy a 1, a 2,..., a k ze zbioru n przyjmują wartość 1 dla danej f. V1.1 27/ 55, obwody logiczne ramki odwracalne ramki odwracalne realizują funkcje n n, liczba bitów wejściowych i wyjściowych jest taka sama. Istnieje (2 n )! bramek odwracalnych. Przykład bramki odwracalnej tzw. bramki Toffoliego T : 3 3, gdzie T (x 1, x 2, x 3 ) = (x 1, x 2, x 3 x 1 x 2 ). dwa pierwsze bity pozostawiane są bez mian, natomiast bit trzeci jest negowany, jeśli dwa pierwsze przyjmują wartość 1. X X X X Y Y Y Y Z X XY Z Z XY Z (a) (b) V1.1 28/ 55

bwody odwracalne bwód odwracalny, to obwód logiczny złożony z bramek odwracalnych, taki obwód także jest zdolny do realizacji funkcji logicznych, co więcej, także istnieją uniwersalne zbiory bramek, wiadomo także iż: 1. bramki negacji są odwracalne, 2. choć bramki koniunkcji nie są odwracalne, to można je za symulować za pomocą bramki T, w następujący sposób: T (x 1, x 2, 0) = (x 1, x 2, x 1 x 2 ) 3. korzystając z prawa x 1 x 2 = ( x 1 x 2 ), to bramkę alternatywy można zastąpić koniunkcją oraz negacją, 4. wyjście zwielokrotnione może być symulowane za pomocą NT : (x 1, x 2 ) = (x 1, x 1 x 2 2) w następujący sposób NT (x 1, 0) = (x 1, x 1 ). ramka Toffoliego jest uniwersalną bramką odwracalną. V1.1 29/ 55 bwody odwracalne przykłady Półsumator jako obwód odwracalny (zastosowano bramkę NT oraz X (bramka negacji)): a a b x NT(a b) Schemat obwodu, dla pełnego sumatora, gdzie nie następuje modyfikacja badanych stanów a i b: a a b X X b 0 c 0 d Wadą jest konieczność stosowania dodatkowego bitu który decyduje o przywróceniu poprawnej wartości dla bitu b. V1.1 30/ 55, obwody logiczne V1.1 31/ 55 Maszyna licznikowa Definicja maszyny licznikowej Maszyna licznikowa jest oparta o cztery typy instrukcji. Pierwsza to przypisanie zera do zmiennej: X 0 albo x:=0. Drugi typ instrukcji to zwiększenie wartości zmiennej o jedność i przypisanie wyniku do tej samej bądź innej zmiennej: X Y + 1 Dopełnieniem tego typu instrukcji jest zmniejszenie wartości o jedność: X Y 1 statnim typem instrukcji jest instrukcja skoku, jeśli zmienna jest równa zeru: jeśli X = 0 skocz-do ETY. Jeśli w programie nie ma etykiety o podanej nazwie, to program przerwie działanie. Koniec nastąpi również, gdy zostanie wykonana ostatnia instrukcja w programie. V1.1 32/ 55

Maszyna licznikowa Dodawanie liczb 1: Z := 0; 2: _liczymy_dalej: 3: if Y = 0 then goto _prawie_koniec; 4: X := X + 1; 5: Y := Y - 1; 6: if Z = 0 then goto _liczymy_dalej; 7: _prawie_koniec: 8: Z := X + 1; 9: Z := Z - 1; V1.1 33/ 55 Maszyna licznikowa dejmowanie liczb 1: Z := 0; 2: _liczymy_dalej: 3: if Y = 0 then goto _prawie_koniec; 4: X := X - 1; 5: Y := Y - 1; 6: if Z = 0 then goto _liczymy_dalej; 7: _prawie_koniec 8: Z := X + 1; 9: Z := Z - 1; V1.1 34/ 55 Maszyna licznikowa Mnożenie dwóch liczb 1: U := 0; 2: Z := 0; 3: _: 4: if X = 0 then goto _L; 5: X := X - 1; 6: V := Y + 1; 7: V := V - 1; 8: _: 9: if V = 0 then goto _; 10: V := V - 1; 11: Z := Z + 1; 12: if U = 0 then goto _; V1.1 35/ 55, obwody logiczne Maszynę o dostępie swobodnym (Random ccess Machine RM) została zaproponowana w połowie lat czterdziestych XX wieku przez Johna von Neumanna we współpracy z Johnem Williamem Mauchly i J. Presper Eckertem. powstała jako narzędzie edukacje a celem było zrozumieniu zasad działania pierwszych maszyn elektronowych tj. maszyn EDV oraz ENI. Główne elementy maszyny RM 1. taśma wejściowa (LI ), z której odczytywane są dane wejściowe, 2. taśma wyjściowej (L), gdzie umieszczane są wyniki, 3. pamięć o dostępie swobodnym, poszczególne komórki są adresowane przez i, i = 0, 1, 2,..., wartość z i-tej komórki to c i albo c(i). 4. lista n instrukcji stanowiąca program, umieszczone w odrębnej przestrzeni niż RM, Π = (π 1, π 2,..., π n. ) Istniej też licznik rozkazów, wskazujący aktualnie wykonywaną instrukcję. V1.1 36/ 55

Schemat maszyny RM Lista wejściowa... kumulator Licznik rozkazów Program Pamięć operacyjna Lista wyjściowa...... V1.1 37/ 55 Instrukcje maszyny RM W skład ciągu instrukcji programu Π wchodzą min. następujące operacje: LD op RED op STRE op WRITE op DD op SU op MULT op DIV op JUMP ety JFTZ ety JZER ety HLT gdzie op może przyjmować postać: 1. liczby całkowitej DD =3, 2. wartości adresującej pamięć RM MULT 3, 3. wartości adresującej pamięć RM pośrednio DIV *5. Natomiast instrukcja JUMP ety, oznacza przesunięcie licznika instrukcji do wskazanej etykiety. V1.1 38/ 55 Techniki adresowania dresowanie natychmiastowe 10 load =10 c0 c1 c2 c3 c4 c5 c6... dresowanie bezpośrednie load 6 12 12 c0 c1 c2 c3 c4 c5 c6... dresowanie pośrednie load 6 17 4 17 c0 c1 c2 c3 c4 c5 c6... V1.1 39/ 55, obwody logiczne Spis instrukcji maszyny RM LP. Instrukcja Znacznie 1 LD =a c(0) a LD n c(0) c(n) LD *n c(0) c(c(n)) 2 STRE n c(n) c(0) STRE *n c(c(n)) c(0) 3 DD =a c(0) c(0) + a DD n c(0) c(0) + c(n) DD *n c(0) c(0) + c(c(n)) 4 SU =a c(0) c(0) a 5 MULT =a c(0) c(0) a 6 DIV =a c(0) c(0) div a 7 RED n c(0) LI i RED *n c(c(n)) LI i 8 WRITE =a L i a WRITE n L i c(n) WRITE *n L i c(c(n)) 9 JUMP ety II ety 10 JFTZ ety if c(0) > 0 then II ety 11 JMPZ ety if c(0) = 0 then II ety 12 HLT zatrzymanie pracy maszyny V1.1 40/ 55

Największy wspólny dzielnik f u n c t i o n gcd ( a : i n t e g e r ; b : i n t e g e r ) : i n t e g e r ; v a r c : i n t e g e r ; b e g i n w h i l e b <> 0 do b e g i n i f a >= b then a := a b e l s e b e g i n c := b ; b := a ; a := c ; end ; end ; gcd := a ; end ; V1.1 41/ 55 Największy wspólny dzielnik początek. i n s i z e 20. o u t s i z e 20. r a m s i z e 20. i n l i s t 8,6,0,0. s t a r t read 1 read 2 4 : l o a d 2 jmpz 19 sub 1 j o t z 12 l o a d 1 sub 2 s t o r e 1 jump 4 1 2 : l o a d 2 V1.1 42/ 55 Największy wspólny dzielnik koniec s t o r e 3 l o a d 1 s t o r e 2 l o a d 3 s t o r e 1 jump 4 1 9 : w r i t e 1 h a l t. end V1.1 43/ 55 Wartość 5 n read 1 ; o d c z y t a n i e n l o a d 1 ; i z a p i s do akumulatora jmpz L2 ; j e ś l i n=0 i d z i e m y do L2 l o a d =5 ; podstawa L1 : s t o r e 2 ; wynik c z ę ś c i o w y l o a d 1 ; l i c z n i k p ę t l i sub =1 ; z m n i e j s z e n i e l i c z n i k a s t o r e 1 ; p ę t l i jmpz L3 l o a d 2 ; wynik c z ę ś c i o w y mult =5 ; j e s t mnożony p r z e z p i ę ć jump L1 ; skok na początek p ę t l i mnożącej L2 : w r i t e =1 ; wynik gdy wykładnik równy zero h a l t L3 : w r i t e 2 ; wynik gdy wykładnik większy od zera h a l t V1.1 44/ 55

, obwody logiczne Wartość n n z wykładu M.Szczuka/MIMUW/Model bliczeń Zadanie to obliczenie wartości funkcji (n) = n n, i jeśli n = 0 to f (0) = n. Program napisany w języku wysokiego poziomu przedstawia się następująco: c (1):= n ; i f ( n = 0) r e t u r n 0 ; e l s e b e g i n c (2):= c ( 1 ) ; c (3):= c ( 1 ) 1 ; while c ( 3 ) > 0 do b e g i n c ( 2 ) = c ( 2 ) c ( 1 ) ; c ( 3 ) = c ( 3 ) 1 ; end ; r e t u r n c ( 2 ) ; end ; V1.1 45/ 55, obwody logiczne Wartość n n Za wykładem M.Szczuka/MIMUW/Model bliczeń.. s i z e 20,20,20. i n l i s t 4,0,0,0. s t a r t read 1 ; wczytanie n do c ( 1 ) l o a d 1 ; w c z y t a n i e n do ; akumulatora j o t z pos ; i f ( c ( 1 ) = 0 ) w r i t e =0 ; then r e t u r n ( 0 ) jump e n d i f ; skok na koniec programu pos : l o a d 1 ; e l s e c ( 1 ) = n do ; akumulatora s t o r e 2 ; c ( 2 ) := c ( 1 ) sub =1 ; c ( 0 ) := c ( 0 ) 1 s t o r e 3 ; c ( 3 ) := c ( 1 ) 1 V1.1 46/ 55 Wartość n n w h i l e : l o a d 3 ; c ( 3 ) do akumulatora j o t z c o n t i n u e ; w h i l e c ( 3 ) > 0 jump endwhile ; gdy c ( 3 ) = 0 zakoncz continue : load 2 ; c ( 2 ) do akumulatora mult 1 ; c ( 0 ) := c ( 2 ) c ( 1 ) s t o r e 2 ; c ( 2 ) := c ( 2 ) c ( 1 ) l o a d 3 ; c ( 0 ) := c ( 2 ) sub =1 ; c ( 0 ) := c ( 0 ) 1 s t o r e 3 ; c ( 3 ) := c ( 3 ) 1 endwhile : w r i t e 2 ; r e t u r n ( r2 ) e n d i f : h a l t ; k o n i e c programu. end V1.1 47/ 55 Suma elementów na liście wejściowej początek. i n s i z e 20. o u t s i z e 20. r a m s i z e 20. i n l i s t 1 0, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1 0. s t a r t read 1 read 2 read 3 read 4 l o a d 1 add 2 V1.1 48/ 55

Suma elementów na liście wejściowej i koniec p e t l a 1 : sub 2 s t o r e 1 jmpz k o n i e c read 3 l o a d 3 add 4 s t o r e 4 l o a d 1 jump p e t l a 1 koniec : w r i t e 4 h a l t. end V1.1 49/ 55 Silnia wg. maszyny RM Początek,. i n s i z e 20. o u t s i z e 20. r a m s i z e 20. i n l i s t 10,1,1,1. s t a r t read 1 read 2 read 3 read 4 l o a d 1 V1.1 50/ 55 Silnia wg. maszyny RM oraz główna część p e t l a 1 : s t o r e 1 jmpz k o n i e c l o a d 3 mult 4 s t o r e 4 l o a d 3 add 2 s t o r e 3 l o a d 1 sub 2 jump p e t l a 1 koniec : w r i t e 4 h a l t. end V1.1 51/ 55, obwody logiczne gdy trzeba coś policzyć co ma przecinek P = πr 2 Program do obliczania wartości pola koła dla maszyny RM:. i n s i z e 20. o u t s i z e 20. r a m s i z e 20. i n l i s t 5,314,100,0. s t a r t read 0 read 1 read 2 mult 0 mult 1 w r i t e 0 d i v 2 w r i t e 0 h a l t. end V1.1 52/ 55

Złożoność obliczeniowa RM Złożoność obliczeniowa RM Model maszyny RM jest dość nierealistyczny, gdyż należy podkreślić że posiadamy nieskończenie (ale przeliczalnie) wiele rejestrów, które są w stanie przechowywać dowolnie duże liczby całkowite, bez wskazywania dodatkowych kosztów dotyczących: odczytu, zapisu oraz realizacji przetwarzania. Dlatego bardziej realne oszacowanie złożoności obliczeniowej wymaga określenia kosztu wykonywania poszczególnych operacji. Koszty te są uzależnione od rozmiaru argumentu. Przyjmuje się, że koszt przetworzenia liczby całkowitej n jest równy jej długości w zapisie pozycyjnym i wynosi log n. Przykłady dla wybranych instrukcji RM: 1. add 2 2 log(c(0)) + log(c(1)) 2. mult =4 2 log(c(0)) + 2 bin=11 3. load *5 log(c(3)) + log(c(c(3))) 4. store 7 log(c(0)) + 3 bin=111 V1.1 53/ 55 Złożoność obliczeniowa RM Złożoność obliczeniową RM można łatwo określić jako sumę kosztów wszystkich wykonanych instrukcji w danym programie Π. Natomiast złożoność pamięciową, czyli jaki obszar pamięci RM został wykorzystany podczas pracy programu można zapisać w następujący sposób: max P log( c(i) ), i gdzie P to licznik instrukcji w maszynie RM. Przykładowo realizacja funkcji n n dla maszyny RM posiada następujące złożoności: 1. (n 2 log n) złożoność czasowa, 2. (n log n) złożoność pamięciowa. V1.1 54/ 55 Już za tydzień na wykładzie W następnym tygodniu między innymi: 1. Maszyna Turinga 2. Uniwersalność maszyny Turinga 3. Rachunek lambda 4. Logika i liczby w rachunku lambda 5. Rekurencja w rachunki lambda punkty stałe 6. Kombinatory Dziękuje za uwagę!!! V1.1 55/ 55