Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

Rozměr: px
Začít zobrazení ze stránky:

Download "Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63"

Transkript

1 Výpočetní modely Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

2 Nutnost upřesnění pojmu algoritmus Dosavadní definice pojmu algoritmus byla poněkud vágní. Pokud bychom pro nějaký problém chtěli dokázat, že neexistuje algoritmus, který by daný problém řešil, tak by to s takovouto neurčitou definicí pojmu algoritmus asi nešlo. Intuitivně chápeme, co by měl mít algoritmus za vlastnosti: Měl by se skládat z jednoduchých kroků, které je možno vykonávat mechanicky, bez porozumění problému. Objekty, se kterými algoritmus pracuje, i prováděné operace by měly být konečné. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

3 Algoritmus realizovaný počítačem Například program v libovolném programovacím jazyce dané vlastnosti zcela jistě má. At už je program napsán v jakémkoliv programovacím jazyce, jsou jeho instrukce nakonec prováděny na hardwaru nějakého konkrétního počítače na úrovni instrukcí procesoru. Je tedy jasné, že každý program v každém programovacím jazyce bychom mohli zapsat jako program tvořený pouze instrukcemi strojového kódu nějakého procesoru. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

4 Činnost počítače Typická architektura naprosté většiny počítačů vypadá následovně: IP flags MEM R1 R2 R3 R4 R5 R6 R7 R8 CPU Počítač má pamět skládající se z velkého množství pamět ových buněk. Každá buňka může obsahovat číslo určité velikosti, typicky 1 byte (8 bitů), tj. číslo v rozsahu Buňky jsou očíslovány. Číslo buňky se nazývá její adresa. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

5 Činnost počítače Typická architektura naprosté většiny počítačů vypadá následovně: IP flags MEM R1 R2 R3 R4 R5 R6 R7 R8 CPU Instrukce jsou uloženy v paměti (každá instrukce má svůj číselný kód) a jsou sekvenčně vykonávány procesorem. Procesor udržuje tzv. čítač instrukcí IP, který obsahuje adresu aktuálně prováděné instrukce. Procesor načte instrukci z adresy určené IP, zvětší IP o délku načtené instrukce a provede danou instrukci. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

6 Činnost počítače Typická architektura naprosté většiny počítačů vypadá následovně: IP flags MEM R1 R2 R3 R4 R5 R6 R7 R8 CPU Procesor obsahuje několik registrů pevné délky (např. 32 nebo 64 bitů). Většina operací je prováděna na registrech. Procesor obsahuje příznaky (flags), které umožňují testovat výsledek poslední operace (např. přetečení, jestli je výsledek nula apod.). Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

7 Činnost počítače Typické instrukce: Načtení obsahu pamět ové buňky (resp. několika po sobě jdoucích buněk) do některého registru (LOAD). Uložení obsahu registru do některé pamět ové buňky (resp. několika po sobě jdoucích buněk) (STORE). Poznámka: Adresa buňky je bud přímá (tj. je přímo součástí instrukce) nebo nepřímá (uložená v některém registru, případně spočítaná z obsahu jednoho nebo několika registrů). Načtení obsahu jednoho registru do jiného registru (MOV). Aritmetické instrukce (ADD, SUB, MUL, DIV, NEG, CMP, INC, DEC,...). Logické instrukce (AND, OR, XOR, NOT,...). Bitové posuny a rotace (SHL, SHR,...) Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

8 Činnost počítače Typické instrukce (pokračování): Nepodmíněný skok (JMP). Poznámka: Cílová adresa může být přímá nebo nepřímá. Podmíněné skoky (JZERO, JGTZ,...). Volání podprogramů (CALL, RET). Různé speciální instrukce práce se vstupem a výstupem, obsluha přerušení, mody činnosti procesoru, řízení přístupu do paměti, stránkování apod. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

9 Činnost počítače Příklad: Instrukce zapsaná ve vyšším programovacím jazyce jako x = y +2 může být realizována následující sekvencí instrukcí určitého (hypotetického) procesoru: LOAD R5,[0x001b7c44] ADD R5,2 STORE [0x001b7c38],R5 Poznámka: Předpokládáme, že proměnná x je uložena na adrese 0x001b7c38 a proměnná y na adrese 0x001b7c44. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

10 Stroj RAM Stroj RAM (Random Access Machine) je idealizovaný model počítače. Skládá se z těchto částí: Programová jednotka obsahuje program stroje RAM a ukazatel na právě prováděnou instrukci Pracovní pamět tvořená buňkami očíslovanými 0,1,2,... ; obsah buněk je možno číst i do nich zapisovat Vstupní páska je z ní možné pouze číst Výstupní páska je na ni možno pouze zapisovat Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

11 Stroj RAM programová jednotka READ JZERO 10 STORE *3 ADD 2 STORE 2 LOAD 1 ADD =1 STORE 1 JUMP 1 10 LOAD 2 11 DIV 1 12 STORE 2 13 LOAD =0 14 STORE 1 vstup IC ALU pracovní pamět výstup Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

12 Stroj RAM Buňky 0 a 1 mají speciální význam a slouží jako registry stroje RAM: Buňka 0 pracovní registr (akumulátor) registr, který je jedním z operandů většiny instrukcí a do kterého se ukládá výsledek většiny operací. Buňka 1 indexový registr je použit při nepřímém adresování. Tvary operandů instrukcí (i N): tvar hodnota operandu =i přímo číslo udané zápisem i i číslo obsažené v buňce s adresou i *i číslo v buňce s adresou i + j, kde j je aktuální obsah indexového registru Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

13 Stroj RAM Příklad: LOAD <op> načte obsah operandu <op> do pracovního registru (tj. do buňky číslo 0). LOAD =5 uloží do pracovního registru hodnotu 5 LOAD 5 uloží do pracovního registru obsah buňky číslo 5 LOAD *5 uloží do pracovního registru obsah buňky číslo 5+j, kde j je aktuální obsah indexového registru Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

14 Stroj RAM Instrukce vstupu a výstupu (jsou bez operandu): READ WRITE do pracovního registru se uloží číslo, které je v poĺıčku snímaném vstupní hlavou, a vstupní hlava se posune o jedno poĺıčko doprava výstupní hlava zapíše do snímaného poĺıčka výstupní pásky obsah pracovního registru a posune se o jedno poĺıčko doprava Instrukce přesunu v paměti: LOAD <op> do pracovního registru se načte hodnota operandu STORE <op> hodnota operandu se přepíše obsahem pracovního registru (zde se nepřipouští operand tvaru =i) Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

15 Stroj RAM Instrukce aritmetických operací: ADD <op> SUB <op> MUL <op> DIV <op> číslo v pracovním registru se zvýší o hodnotu operandu (tedy přičte se k němu hodnota operandu) od čísla v pracovním registru se odečte hodnota operandu číslo v pracovním registru se vynásobí hodnotou operandu číslo v pracovním registru se celočíselně vyděĺı hodnotou operandu (do pracovního registru se uloží výsledek příslušného celočíselného dělení) Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

16 Stroj RAM Instrukce skoku: JUMP <návěští> výpočet bude pokračovat instrukcí určenou návěštím JZERO <návěští> je-li obsahem pracovního registru číslo 0, bude výpočet pokračovat instrukcí určenou návěštím; v opačném případě bude pokračovat následující instrukcí JGTZ <návěští> je-li číslo v pracovním registru kladné, bude výpočet pokračovat instrukcí určenou návěštím; v opačném případě bude pokračovat následující instrukcí Instrukce zastavení: HALT výpočet je ukončen ( regulérně zastaven) Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

17 Stroj RAM Problém Vyhledávání Vstup: Celé číslo x a sekvence celých čísel a 1,a 2,...,a n (kde a i 0) ukončená 0. Výstup: Pokud a i = x, je výstupem i (pokud jich je takových i více, tak nejmenší z nich), jinak je výstupem 0. start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

18 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 0 Buňka 1: 0 Buňka 2: 0 Buňka 3: 0 Buňka 4: 0 Výstup:. Instrukcí: 0 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

19 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 0 Buňka 1: 0 Buňka 2: 0 Buňka 3: 0 Buňka 4: 0 Výstup:. Instrukcí: 0 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

20 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 9 Buňka 1: 0 Buňka 2: 0 Buňka 3: 0 Buňka 4: 0 Výstup:. Instrukcí: 1 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

21 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 9 Buňka 1: 0 Buňka 2: 0 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 2 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

22 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 1 Buňka 1: 0 Buňka 2: 0 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 3 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

23 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 1 Buňka 1: 0 Buňka 2: 1 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 4 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

24 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 13 Buňka 1: 0 Buňka 2: 1 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 5 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

25 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 13 Buňka 1: 0 Buňka 2: 1 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 6 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

26 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 4 Buňka 1: 0 Buňka 2: 1 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 7 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

27 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 4 Buňka 1: 0 Buňka 2: 1 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 8 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

28 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 1 Buňka 1: 0 Buňka 2: 1 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 9 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

29 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 2 Buňka 1: 0 Buňka 2: 1 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 10 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

30 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 2 Buňka 1: 0 Buňka 2: 1 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 11 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

31 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 2 Buňka 1: 0 Buňka 2: 2 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 12 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

32 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 5 Buňka 1: 0 Buňka 2: 2 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 13 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

33 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 5 Buňka 1: 0 Buňka 2: 2 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 14 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

34 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: -4 Buňka 1: 0 Buňka 2: 2 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 15 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

35 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: -4 Buňka 1: 0 Buňka 2: 2 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 16 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

36 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 2 Buňka 1: 0 Buňka 2: 2 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 17 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

37 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 3 Buňka 1: 0 Buňka 2: 2 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 18 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

38 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 3 Buňka 1: 0 Buňka 2: 2 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 19 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

39 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 3 Buňka 1: 0 Buňka 2: 3 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 20 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

40 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 9 Buňka 1: 0 Buňka 2: 3 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 21 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

41 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 9 Buňka 1: 0 Buňka 2: 3 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 22 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

42 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 0 Buňka 1: 0 Buňka 2: 3 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 23 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

43 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 0 Buňka 1: 0 Buňka 2: 3 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 24 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

44 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 3 Buňka 1: 0 Buňka 2: 3 Buňka 3: 9 Buňka 4: 0 Výstup:. Instrukcí: 25 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

45 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 3 Buňka 1: 0 Buňka 2: 3 Buňka 3: 9 Buňka 4: 0. Výstup: 3 Instrukcí: 26 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

46 Stroj RAM start: READ STORE 3 LOAD =1 cyklus: STORE 2 READ JZERO vypis SUB 3 JZERO nasel LOAD 2 ADD =1 JUMP cyklus nasel: LOAD 2 vypis: WRITE HALT Vstup: 9,13,5,9,7,2,0 Buňka 0: 3 Buňka 1: 0 Buňka 2: 3 Buňka 3: 9 Buňka 4: 0. Výstup: 3 Instrukcí: 27 Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

47 Stroj RAM Rozdíly oproti skutečnému počítači: Velikost paměti není omezena (adresa může být libovolné přirozené číslo). Velikost obsahu jednotlivých buněk není omezena (buňka může obsahovat libovolné celé číslo). Čte data sekvenčně ze vstupu, který je tvořen sekvencí celých čísel. Ze vstupu lze pouze číst. Zapisuje data sekvenčně na výstup, který je tvořen sekvencí celých čísel. Na výstup je možné pouze zapisovat. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

48 Stroj RAM a Turingův stroj Každý program v každém programovacím jazyce by mohl být realizován jako program stroje RAM. Není složité (i když je to trochu pracné) si rozmyslet, že libovolný algoritmus prováděný strojem RAM je možné realizovat také Turingovým strojem. Turingův stroj je schopen realizovat libovolný algoritmus, který by bylo možné zapsat jako program v nějakém programovacím jazyce. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

49 Stroj RAM a Turingův stroj Turingův stroj pracuje se slovy nad nějakou abecedou, zatímco stroj RAM s čísly. Čísla ale můžeme zapisovat jako sekvence symbolů a naopak symboly nějaké abecedy můžeme zapisovat jako čísla. Například následující vstup stroje RAM může být v případě Turingova stroje reprezentován jako # # # # 0 # # Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

50 Vícepáskový Turingův stroj Při konstrukci Turingova stroje k danému stroji RAM může být jednodušší zkonstruovat nejprve vícepáskový Turingův stroj: a b a a b a b b a b b a b b b b a a a b b a a a b a b q Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

51 Vícepáskový Turingův stroj Činnost vícepáskového Turingova stroje a b a a b a b b a b b a b b b b a a a b b a a a b a b je možné simulovat jednopáskovým Turingovým strojem a b a a b a b b a b b a b b b b a a a b b a a a b a b Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

52 Vícepáskový Turingův stroj Příklad: Stroj, který dostane jako vstup dvě přirozená čísla zapsaná binárně a oddělená znaky # (např. čísla 6 a 11 budou zapsaná jako slovo #110#1011# ) a spočítá jejich součet. # # # # 0 1 # q Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

53 Turingův stroj simulující činnost stroje RAM Turingův stroj simulující činnost stroje RAM bude mít několik pásek: Pásku reprezentující vstupní pásku stroje RAM. Pásku reprezentující výstupní pásku stroje RAM. Pásku, na které bude uložen obsah pracovního registru. Pásku, na které bude uložen obsah indexového registru. Pásku, na které bude uložen obsah ostatních buněk paměti stroje RAM. Pásku, na které bude uložena adresa buňky paměti, se kterou se aktuálně pracuje. Několik dalších pomocných pásek (pro uložení mezivýsledků operací apod.) Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

54 Turingův stroj simulující činnost stroje RAM Turingův stroj si bude v řídící jednotce pamatovat, která instrukce stroje RAM se právě provádí. Provedení většiny instrukcí není složité: Instrukce READ zkopírování hodnoty (ohraničené znaky # ) ze vstupní pásky na pásku reprezentující pracovní registr. Instrukce WRITE zkopírování hodnoty pracovní registru na výstupní pásku. Instrukce JUMP změní se jen stav řídící jednotky Turingova stroje. Instrukce JZERO a JGTZ snadno otestujeme obsah pracovního registru a podle výsledku změníme stav řídící jednotky Turingova stroje. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

55 Turingův stroj simulující činnost stroje RAM Aritmetické instrukce (ADD, SUB, MUL, DIV) jsou také relativně jednoduché: Hodnotu druhého operandu zapíšeme na pomocnou pásku. Provedeme operaci (např. sčítání) bit po bitu, výsledek ukládáme na další pomocnou pásku. Výsledek zkopírujeme na pásku s obsahem pracovního registru. Poznámka: Násobení a dělení je možné realizovat pomocí série sčítání a bitových posunů. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

56 Turingův stroj simulující činnost stroje RAM Asi nejsložitější je realizace paměti stroje RAM. Jednou z možností je pamatovat si jen obsah těch buněk, se kterými stroj RAM v průběhu své činnosti někdy pracoval (víme, že všechny ostatní obsahují hodnotu 0). Příklad: Stroj RAM zatím pracoval jen s buňkami 2, 3 a 6: Buňka 2 obsahuje hodnotu 11. Buňka 3 obsahuje hodnotu 1. Buňka 6 obsahuje hodnotu 2. Obsah pásky Turingova stroje reprezentující buňky paměti stroje RAM bude následující: $ # 1 0 : # 1 1 : - 1 # : 1 0 # $ Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

57 Turingův stroj simulující činnost stroje RAM Instrukce LOAD: Hledanou adresu uložíme na příslušnou pásku obsahující adresu, se kterou se aktuálně pracuje. Budeme hledat příslušnou adresu na pásce reprezentující obsah paměti stroje RAM. (Pokud ji nenajdeme, přidáme ji na konec, s tím, že obsahuje hodnotu 0.) Příslušnou hodnotu zkopírujeme na pásku reprezentující pracovní registr. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

58 Turingův stroj simulující činnost stroje RAM Instrukce STORE: Podobně jako u instrukce LOAD najdeme příslušné místo na pásce. Zbytek pásky s obsahem paměti stroje RAM zkopírujeme na pomocnou pásku. Na příslušné místo zkopírujeme hodnotu z pracovního registru. Zbytek pásky, který jsme zkopírovali na pomocnou pásku, zkopírujeme zpět (za nově zapsanou hodnotu). Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

59 Churchova-Turingova teze Churchova-Turingova teze Každý algoritmus je možné realizovat nějakým Turingovým strojem. Není to věta, kterou by bylo možno dokázat v matematickém smyslu není formálně definováno, co je to algoritmus. Tezi formulovali nezávisle na sobě v polovině 30. let 20. století Alan Turing a Alonzo Church. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

60 Churchova-Turingova teze Příklady matematických formalismů zachycujících pojem algoritmus: stroje RAM Turingovy stroje lambda kalkulus rekurzivní funkce... Dále můžeme uvést: Libovolný (obecný) programovací jazyk (jako např. C, Java, Lisp, Haskell, Prolog apod.). Všechny tyto modely jsou ekvivalentní z hlediska algoritmů, které jsou schopny realizovat. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

61 Výpočetní modely Takovým jazykům (resp. strojům), které jsou dostatečně obecné na to, aby se do nich (resp. do jejich instrukcí) daly přeložit programy napsané v libovolném jiném programovacím jazyce se říká Turingovsky úplné. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

62 Simulace výpočtu Vysvětlení toho, co to znamená, že stroj M je simulován strojem M : Výpočet stroje M pro vstup w je (konečná nebo nekonečná) posloupnost konfigurací stroje M α 0 α 1 α 2 Tomuto výpočtu odpovídá výpočet stroje M tvořený konfiguracemi α 0 α 1 α 2 kde každé konfiguraci α i odpovídá nějaká konfigurace α f(i), kde f : N N je funkce, pro kterou platí, f(i) f(j) pro každé i a j, kde i < j. Existuje funkce mapující konfigurace stroje M na jim odpovídající konfigurace stroje M. Existují funkce mapující vstup w na odpovídající počáteční konfigurace α 0 a α 0 a analogicky funkce mapující koncové konfigurace na výsledek výpočtu. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

63 Příklady výpočetních modelů a jejich vzájemných simulací Všechny následující stroje mají konečnou řídící jednotku doplněnou o nějaký druh neomezeně velké paměti. Tato pamět může být tvořena jednou nebo více struktur, jako jsou třeba: Páska čtení a zápis symbolu na aktuální pozici, posun hlavy doleva a doprava Poznámka: Páska může být jednostranně nebo oboustranně nekonečná. Zásobník push, pop, test prázdnosti zásobníku Čítač hodnotou je přirozené číslo, operace přičtení nebo odečtení hodnoty jedna, test rovnosti nule Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

64 Příklady výpočetních modelů a jejich vzájemných simulací Na jednostranně nekonečnou pásku je možné se dívat jako na speciální případ oboustranně nekonečné pásky. Na zásobník je možné se dívat jako na speciální případ jednostranně nekonečné pásky. Na čítač je možné se dívat jako na speciální případ zásobníku. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

65 Příklady výpočetních modelů a jejich vzájemných simulací Oboustranně nekonečnou pásku je možné simulovat pomocí dvou zásobníků. Zásobník je možné simulovat pomocí dvou čítačů hodnota jednoho čítače reprezentuje obsah zásobníku jako číslo, jehož zápis v číselné soustavě o základu k = Γ (kde Γ je zásobníková abeceda) odpovídá obsahu zásobníku. Symbol na vrcholu zásobníku zbytek po dělení k Pop vydělit k Push vynásobit k a přičíst kód příslušného symbolu Dělení a násobení konstantou je možné implementovat postupným přičítáním s využitím druhého pomocného čítače. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

66 Příklady výpočetních modelů a jejich vzájemných simulací Libovolný konečný počet čítačů je možné simulovat pomocí dvou čítačů. Jeden čítač reprezentuje hodnoty všech čítačů např. hodnoty čítačů x, y, z mohou reprezentovány jako číslo 2 x 3 y 5 z. Přičtení jedničky k čítači x je simulováno jako vynásobení hodnotou 2, přičtení jedničky k čítači y jako vynásobení hodnotou 3, atd. Analogicky je odečtení jedničky simulováno pomocí dělení příslušnou konstantou. Všechny tyto operace je možno realizovat pomocí postupného přičítání či odečítání s použitím druhého pomocného čítače. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

67 Univerzální Turingův stroj Popis libovolného Turingova stroje M (či jiného výpočetního modelu) můžeme reprezentovat ve formě dat např. slova nad nějakou abecedou. Zápisem Kód(M) označme takovouto reprezentaci stroje M (v nějakém konkrétním formátu). Univerzální Turingův stroj U je stroj, který když dostane jako vstup Kód(M)#w, kde w je slovo nad abecedou Σ, začne simulovat činnost stroje M nad vstupem w. Univerzální Turingův stroj je tedy schopen vykonávat činnost libovolného jiného Turingova stroje (jehož popis dostane jako součást vstupu). Poznámka: Odpovídá to situaci, kdy máme hardware počítače (stroj U), který je schopen vykonávat libovolný algoritmus, který dostane ve formě programu (software) Kód(M). Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

68 Výpočet Turingova stroje jako data Nejen s popisem Turingova stroje můžeme pracovat jako s daty. Rovněž na výpočet (resp. na popis tohoto výpočtu) daného stroje M nad nějakým vstupem w můžeme nahĺıžet jako na určitý druh dat. Například konfigurace Turingova stroje M = (Q,Σ,Γ,δ,q 0,F) můžeme kódovat jako slova nad abecedou = Γ (Q Γ): V zápisu konfigurace je právě jeden symbol z množiny (Q Γ) reprezentuje stav řídící jednotky a pozici hlavy. Zbylé symboly (z množiny Γ) reprezentují obsah pásky. Výpočet je možné reprezentovat jako posloupnost konfigurací oddělených symbolem #. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

69 C 0 C 1 C 2 C n n+1 j q 0 a 1 a 2 a 3 a n C i β 1 β 2β 3 β C t 1 C t q acc x Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

70 Nerozhodnutelné problémy Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

71 Algoritmicky řešitelné problémy Předpokládejme, že máme dán nějaký problém P. Jestliže existuje nějaký algoritmus, který řeší problém P, pak říkáme, že problém P je algoritmicky řešitelný. Jestliže P je rozhodovací problém a jestliže existuje nějaký algoritmus, který problém P řeší, pak říkáme, že problém P je (algoritmicky) rozhodnutelný. Když chceme ukázat, že problém P je algoritmicky řešitelný, stačí ukázat nějaký algoritmus, který ho řeší (a případně ukázat, že daný algoritmus problém P skutečně řeší). Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

72 Algoritmicky neřešitelné problémy Problém, který není algoritmicky řešitelný, je algoritmicky neřešitelný. Rozhodovací problém, který není rozhodnutelný, je nerozhodnutelný. Kupodivu existuje řada algoritmických problémů (přesně definovaných), o kterých je dokázáno, že nejsou algoritmicky řešitelné. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

73 Halting Problem Vezměme si nějaký libovolný obecný programovací jazyk L. Navíc předpokládejme, že programy v jazyce L běží na nějakém idealizovaném stroji, kde mají k dispozici (potenciálně) neomezené množství paměti tj. kde alokace paměti nikdy neselže kvůli nedostatku paměti. Příklad: Následující problém zvaný Problém zastavení (Halting problem) je nerozhodnutelný: Halting problem Vstup: Zdrojový kód programu P v jazyce L, vstupní data x. Otázka: Zastaví se program P po nějakém konečném počtu kroků, pokud dostane jako vstup data x? Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

74 Halting Problem Předpokládejme, že by existoval nějaký program, který by rozhodoval Halting problem. Mohli bychom tedy vytvořit podprogram H, deklarovaný jako kde H(P,x) vrátí: Bool H(String kod, String vstup) true pokud se program P zastaví pro vstup x, false pokud se program P nezastaví pro vstup x. Poznámka: Řekněme, že podprogram H(P, x) by vracel false v případě, že P není syntakticky správný kód programu. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

75 Halting Problem S použitím podprogramu H bychom vytvořili program D, který bude provádět následující kroky: Načte svůj vstup do proměnné x typu String. Zavolá podprogram H(x, x). Pokud podprogram H vrátil true, skočí do nekonečné smyčky loop: goto loop V případě, že H vrátil false, program D se ukončí. Co udělá program D, pokud mu předložíme jako vstup jeho vlastní kód? Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

76 Halting Problem Pokud D dostane jako vstup svůj vlastní kód, tak se bud zastaví nebo nezastaví. Pokud se D zastaví, tak H(D,D) vrátí true a D skočí do nekonečné smyčky. Spor! Pokud se D nezastaví, tak H(D,D) vrátí false a D se zastaví. Spor! V obou případech dospějeme ke sporu a další možnost není. Nemůže tedy platit předpoklad, že H řeší Halting problem. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

77 Částečně rozhodnutelné problémy Problém je částečně rozhodnutelný, jestliže existuje algoritmus, který: Pokud dostane jako vstup instanci, pro kterou je odpověd Ano, tak se po konečném počtu kroků zastaví a vypíše "ANO". Pokud dostane jako vstup instanci, pro kterou je odpověd Ne, tak se bud zastaví a vypíše "NE" nebo se nikdy nezastaví. Je očividné, že například HP (Halting problem) je částečně rozhodnutelný. Některé problémy však nejsou ani částečně rozhodnutelné. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

78 Postova věta Doplňkový problém k danému rozhodovacímu problému P je problém, kde vstupy jsou stejné jako u problému P a otázka je negací otázky z problému P. Postova věta Jestliže problém P i jeho doplňkový problém jsou částečně rozhodnutelné, pak je problém P rozhodnutelný. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

79 Převody mezi problémy Pokud máme o nějakém (rozhodovacím) problému dokázáno, že je nerozhodnutelný, můžeme ukázat nerozhodnutelnost dalších problémů pomocí redukcí (převodů) mezi problémy. Problém P 1 je převeditelný na problém P 2, jestliže existuje algoritmus Alg takový, že: Jako vstup může dostat libovolnou instanci problému P 1. K instanci problému P 1, kterou dostane jako vstup (označme ji w), vyprodukuje jako svůj výstup instanci problému P 2 (označme ji Alg(w)). Platí, že pro vstup w je v problému P 1 odpověd Ano právě tehdy, když pro vstup Alg(w) je v problému P 2 odpověd Ano. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

80 Převody mezi problémy vstupy problému P 1 vstupy problému P 2 Ano Ano Ne Ne Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

81 Převody mezi problémy vstupy problému P 1 vstupy problému P 2 Ano Ano Ne Ne Alg Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

82 Převody mezi problémy Řekněme, že existuje redukce Alg problému P 1 na problém P 2. Pokud by problém P 2 byl rozhodnutelný, pak i problém P 1 je rozhodnutelný. Řešení problému P 1 pro vstup x: Zavoláme Alg se vstupem x, vrátí nám hodnotu Alg(x). Zavoláme algoritmus řešící problém P 2 se vstupem Alg(x). Hodnotu, kterou nám vrátí vypíšeme jako výsledek. Je zřejmé, že pokud P 1 je nerozhodnutelný, tak P 2 nemůže být rozhodnutelný. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

83 Další nerozhodnutelné problémy Redukcí z Halting problému se dá ukázat nerozhodnutelnost celé řady problémů, které se týkají ověřování chování programů: Vydá daný program pro nějaký vstup odpověd Ano? Zastaví se daný program pro libovolný vstup? Dávají dva dané programy pro stejné vstupy stejný výstup?... Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

84 Halting problem Pro účely důkazů se Halting problem nejčastěji používá v následující podobě: Halting problem Vstup: Popis Turingova stroje M a slovo w. Otázka: Zastaví se stroj M po nějakém konečném počtu kroků, pokud dostane jako svůj vstup slovo w? Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

85 Další nerozhodnutelné problémy S následujícím příkladem nerozhodnutelného problému už jsme se setkali: Problém Vstup: Bezkontextové gramatiky G 1 a G 2. Otázka: Je L(G 1 ) = L(G 2 )? případně Problém Vstup: Bezkontextová gramatika G generující jazyk nad abecedou Σ. Otázka: Je L(G) = Σ? Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

86 Další nerozhodnutelné problémy Vstupem je množina typů kartiček, jako třeba: abb a bab baba aba bbab aa ab aa a Otázka je, zda je možné z těchto typů kartiček vytvořit neprázdnou konečnou posloupnost, kde zřetězením slov nahoře i dole vznikne totéž slovo. Každý typ kartičky je možné používat opakovaně. a abb abb baba abb aba aa bbab bbab aa bbab a Nahoře i dole vznikne slovo aabbabbbabaabbaba. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

87 Další nerozhodnutelné problémy Redukcí z předchozího problému se dá snadno ukázat nerozhodnutelnost některých dalších problémů z oblasti bezkontextových gramatik: Problém Vstup: Bezkontextové gramatiky G 1 a G 2. Otázka: Je L(G 1 ) L(G 2 ) =? Problém Vstup: Bezkontextová gramatika G. Otázka: Je G nejednoznačná? Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

88 Další nerozhodnutelné problémy Vstupem je množina typů kachliček, jako třeba: Otázka je, zda je možné použitím daných typů kachliček pokrýt každou libovolně velkou konečnou plochu tak, aby všechny kachličky spolu sousedily stejnými barvami. Poznámka: Můžeme předpokládat, že máme v zásobě neomezené množství kachliček všech typů. Kachličky není dovoleno otáčet. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

89 Další nerozhodnutelné problémy Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

90 Další nerozhodnutelné problémy Problém Vstup: Uzavřená formule predikátové logiky (prvního řádu), ve které mohou být použity jako predikátové symboly pouze = a <, jako funkční symboly pouze + a a jako kostantní symboly pouze 0 a 1. Otázka: Je daná formule pravdivá v oboru přirozených čísel (při přirozené interpretaci všech funkčních a predikátových symbolů)? Příklad vstupu: x y z((x y = z) (y +1 = x)) Poznámka: Úzce souvisí s Gödelovou větou o neúplnosti. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

91 Další nerozhodnutelné problémy Je zajímavé, že analogický problém, kde ale místo přirozených čísel uvažujeme čísla reálná, je algoritmicky rozhodnutelný (i když popis daného algoritmu a důkaz jeho korektnosti jsou značně netriviální). Rovněž pokud uvažujeme přirozená nebo celá čísla a stejné formule jako v předchozím případě, ale s tím, že v nich nesmí být použit funkční symbol (násobení), tak je problém algoritmicky rozhodnutelný. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

92 Další nerozhodnutelné problémy Pokud můžeme používat, je ve skutečnosti je nerozhodnutelný už velmi omezený případ: Desátý Hilbertův problém Vstup: Polynom f(x 1,x 2,...,x n ) vytvořený z proměnných x 1,x 2,...,x n a celočíselných konstant. Otázka: Existují přirozená čísla x 1,x 2,...,x n taková, že f(x 1,x 2,...,x n ) = 0? Příklad vstupu: 5x 2 y 8yz +3z 2 15 Tj. ptáme se, zda x y z(5 x x y +( 8) y z +3 z z +( 15) = 0) platí v oboru přirozených čísel. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

93 Další nerozhodnutelné problémy Také následující problém je algoritmicky nerozhodnutelný: Problém Vstup: Uzavřená formule ϕ predikátové logiky prvního řádu. Otázka: Platí = ϕ? Poznámka: Zápis = ϕ znamená, že formule ϕ je logicky platná, tj. pravdivá v každé interpretaci. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

94 Riceova věta Řekněme, že P je nějaká vlastnost Turingových strojů. Vlastnost P je: netriviální pokud existuje alespoň jeden stroj, který vlastnost P má, a alespoň jeden stroj, který vlastnost P nemá vstupně-výstupní pokud každé dva stroje, které se zastaví pro stejné vstupy a pro stejné vstupu dávají stejné výstup, vždy oba vlastnost P mají nebo oba nemají Věta Každý problém tvaru Vstup: Turingův stroj M. Otázka: Má stroj M vlastnost P? kde P je netriviální vstupně-výstupní vlastnost, je nerozhodnutelný. Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

Rozhodnutelné a nerozhodnutelné problémy. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna / 49

Rozhodnutelné a nerozhodnutelné problémy. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna / 49 Rozhodnutelné a nerozhodnutelné problémy M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 1/ 49 Co je to algoritmus? Algoritmus Algoritmus je mechanický postup skládající

Více

(viztakéslidyktétopřednášce...) Poznámka. Neudělali jsme vše tak podrobně, jak je to v zápisu.

(viztakéslidyktétopřednášce...) Poznámka. Neudělali jsme vše tak podrobně, jak je to v zápisu. Teoretická informatika průběh výuky v semestru 1 Týden 8 Přednáška- první část (viztakéslidyktétopřednášce...) Poznámka. Neudělali jsme vše tak podrobně, jak je to v zápisu. Turingovy stroje,(výpočetní)

Více

Definice 7.2. Nejmenší přirozené číslo k, pro které je graf G k-obarvitelný, se nazývá chromatické číslo (barevnost) grafu G a značí se χ(g).

Definice 7.2. Nejmenší přirozené číslo k, pro které je graf G k-obarvitelný, se nazývá chromatické číslo (barevnost) grafu G a značí se χ(g). 7 Barevnost grafu Definice 71 Graf G se nazývá k-obarvitelný, jestliže každému jeho uzlu lze přiřadit jednu z barev 1 k tak, že žádné dva sousední uzly nemají stejnou barvu Definice 72 Nejmenší přirozené

Více

Teoretická informatika průběh výuky v semestru 1

Teoretická informatika průběh výuky v semestru 1 Teoretická informatika průběh výuky v semestru 1 Týden 8 Přednáška Model RAM Ve studijním textu je detailně popsán model RAM, který je novějším výpočetním modelem než Turingův stroj a vychází z architektury

Více

Postův korespondenční problém. Meze rozhodnutelnosti 2 p.1/13

Postův korespondenční problém. Meze rozhodnutelnosti 2 p.1/13 Postův korespondenční problém Meze rozhodnutelnosti 2 p.1/13 Postův korespondenční problém Definice 10.1 Postův systém nad abecedou Σ je dán neprázdným seznamem S dvojic neprázdných řetězců nadσ, S = (α

Více

Princip funkce počítače

Princip funkce počítače Princip funkce počítače Princip funkce počítače prvotní úlohou počítačů bylo zrychlit provádění matematických výpočtů první počítače kopírovaly obvyklý postup manuálního provádění výpočtů pokyny pro zpracování

Více

Fakulta informačních technologií. Teoretická informatika

Fakulta informačních technologií. Teoretická informatika Vysoké učení technické v Brně Fakulta informačních technologií Teoretická informatika Třetí úkol 2 Jan Trávníček . Tato úloha je řešena Turingovým strojem, který je zobrazen na obrázku, který si můžeme

Více

AUTOMATY A GRAMATIKY. Pavel Surynek. Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně spočetné jazyky Kódování, enumerace

AUTOMATY A GRAMATIKY. Pavel Surynek. Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně spočetné jazyky Kódování, enumerace AUTOMATY A 11 GRAMATIKY Pavel Surynek Univerzita Karlova v Praze Matematicko-fyzikální fakulta Katedra teoretické informatiky a matematické logiky Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně

Více

PŘÍJMENÍ a JMÉNO: Login studenta: DATUM:

PŘÍJMENÍ a JMÉNO: Login studenta: DATUM: PŘÍJMENÍ a JMÉNO: Login studenta: DATUM: Závěrečný test z předmětu Vyčíslitelnost a složitost Doba trvání: 90 minut Max. zisk: 100 bodů Obecné pokyny: Po obdržení testu ihned do pravého horního rohu napište

Více

Strojový kód. Instrukce počítače

Strojový kód. Instrukce počítače Strojový kód Strojový kód (Machine code) je program vyjádřený v počítači jako posloupnost instrukcí procesoru (posloupnost bajtů, resp. bitů). Z hlediska uživatele je strojový kód nesrozumitelný, z hlediska

Více

Složitost Filip Hlásek

Složitost Filip Hlásek Složitost Filip Hlásek Abstrakt. Příspěvek popisuje dva základní koncepty teoretické informatiky, Turingovy stroje a složitost. Kromě definic důležitých pojmů uvádí také několik souvisejících tvrzení,

Více

NP-úplnost problému SAT

NP-úplnost problému SAT Problém SAT je definován následovně: SAT(splnitelnost booleovských formulí) Vstup: Booleovská formule ϕ. Otázka: Je ϕ splnitelná? Příklad: Formule ϕ 1 =x 1 ( x 2 x 3 )jesplnitelná: např.přiohodnocení ν,kde[x

Více

Teoretická informatika průběh výuky v semestru 1

Teoretická informatika průběh výuky v semestru 1 Teoretická informatika průběh výuky v semestru 1 Týden 7 Přednáška (Výpočetní) problémy, rozhodovací(ano/ne) problémy,... Připomněli jsme si obecné definice a konkrétní problémy, jako např. SAT[problém

Více

Třída PTIME a třída NPTIME. NP-úplnost.

Třída PTIME a třída NPTIME. NP-úplnost. VAS - Přednáška 9 Úvod ke kursu. Složitost algoritmu. Model RAM. Odhady složitosti. Metoda rozděl a panuj. Greedy algoritmy. Metoda dynamického programování. Problémy, třídy složitosti problémů, horní

Více

Algoritmy. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 15. dubna / 39

Algoritmy. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 15. dubna / 39 Algoritmy Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 15. dubna 2018 1/ 39 Algoritmy Příklad: Popis algoritmu pomocí pseudokódu: Algoritmus 1: Algoritmus pro nalezení největšího prvku v poli 1 Find-Max(A,n):

Více

Turingovy stroje. Teoretická informatika Tomáš Foltýnek

Turingovy stroje. Teoretická informatika Tomáš Foltýnek Turingovy stroje Teoretická informatika Tomáš Foltýnek foltynek@pef.mendelu.cz Teoretická informatika strana 2 Opakování z minulé přednášky Jaké znáte algebraické struktury s jednou operací? Co je to okruh,

Více

Třída PTIME a třída NPTIME. NP-úplnost.

Třída PTIME a třída NPTIME. NP-úplnost. VAS - Přednáška 9 Úvod ke kursu. Složitost algoritmu. Model RAM. Odhady složitosti. Metoda rozděl a panuj. Greedy algoritmy. Metoda dynamického programování. Problémy, třídy složitosti problémů, horní

Více

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem. Algoritmus Algoritmus je schematický postup pro řešení určitého druhu problémů, který je prováděn pomocí konečného množství přesně definovaných kroků. nebo Algoritmus lze definovat jako jednoznačně určenou

Více

Třídy složitosti P a NP, NP-úplnost

Třídy složitosti P a NP, NP-úplnost Třídy složitosti P a NP, NP-úplnost Cíle přednášky: 1. Definovat, za jakých okolností můžeme problém považovat za efektivně algoritmicky řešitelný. 2. Charakterizovat určitou skupinu úloh, pro které není

Více

Složitost. Teoretická informatika Tomáš Foltýnek

Složitost. Teoretická informatika Tomáš Foltýnek Složitost Teoretická informatika Tomáš Foltýnek foltynek@pef.mendelu.cz Teoretická informatika 2 Opakování z minulé přednášky Co říká Churchova teze? Jak lze kódovat Turingův stroj? Co je to Univerzální

Více

Architektura počítačů Logické obvody

Architektura počítačů Logické obvody Architektura počítačů Logické obvody http://d3s.mff.cuni.cz/teaching/computer_architecture/ Lubomír Bulej bulej@d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Digitální

Více

doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je

doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je 28 [181105-1236 ] 2.7 Další uzávěrové vlastnosti třídy regulárních jazyků Z předchozích přednášek víme, že třída regulárních jazyků je uzavřena na sjednocení, průnik, doplněk, zřetězení, Kleeneho operaci

Více

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty Data v počítači Informační data (elementární datové typy) Logické hodnoty Znaky Čísla v pevné řádové čárce (celá čísla) v pohyblivé (plovoucí) řád. čárce (reálná čísla) Povelová data (instrukce programu)

Více

Architektura počítačů Logické obvody

Architektura počítačů Logické obvody Architektura počítačů Logické obvody http://d3s.mff.cuni.cz/teaching/computer_architecture/ Lubomír Bulej bulej@d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics 2/36 Digitální

Více

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA Jan Schmidt 2011 Katedra číslicového návrhu Fakulta informačních technologií České vysoké učení technické v Praze Zimní semestr 2011/12 MI-PAA EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI

Více

Čísla, reprezentace, zjednodušené výpočty

Čísla, reprezentace, zjednodušené výpočty Čísla, reprezentace, zjednodušené výpočty Přednáška 5 A3B38MMP kat. měření, ČVUT - FEL, Praha J. Fischer A3B38MMP, 2015, J.Fischer, ČVUT - FEL, kat. měření 1 Čísla 4 bitová dec bin. hex. 0 0000 0 1 0001

Více

Čísla, reprezentace, zjednodušené výpočty

Čísla, reprezentace, zjednodušené výpočty Čísla, reprezentace, zjednodušené výpočty Přednáška 4 A3B38MMP kat. měření, ČVUT - FEL, Praha J. Fischer A3B38MMP, 2014, J.Fischer, ČVUT - FEL, kat. měření 1 Čísla 4 bitová dec bin. hex. 0 0000 0 1 0001

Více

Jako pomůcka jsou v pravém dolním rohu vypsány binární kódy čísel od 0 do 15 a binární kódy příkazů, které máme dispozici (obr.21). Obr.

Jako pomůcka jsou v pravém dolním rohu vypsány binární kódy čísel od 0 do 15 a binární kódy příkazů, které máme dispozici (obr.21). Obr. Model procesoru Jedná se o blokové schéma složené z registrů, paměti RAM, programového čítače, instrukčního registru, sčítačky a řídicí jednotky, které jsou propojeny sběrnicemi. Tento model má dva stavy:

Více

Výroková a predikátová logika - XIII

Výroková a predikátová logika - XIII Výroková a predikátová logika - XIII Petr Gregor KTIML MFF UK ZS 2013/2014 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - XIII ZS 2013/2014 1 / 13 Úvod Algoritmická (ne)rozhodnutelnost Které

Více

a operačních systémů

a operačních systémů NSWI2 2/2 ZS Principy počítačů a operačních systémů INSTRUKCE Kdybych nařídil generálovi, aby létal od květině ke květině a on by rozkaz neprovedl, nebyla by to chyba generálova, ale moje. král asteroidu

Více

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12. Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Vyhledávání 201 / 344 Osnova přednášky

Více

Výpočetní složitost I

Výpočetní složitost I Výpočetní složitost I prooborlogikanaffuk Petr Savický 1 Úvod Složitostí algoritmické úlohy se rozumí především její časová a paměťová náročnost při řešení na počítači. Časová náročnost se měří počtem

Více

Z. Sawa (VŠB-TUO) Teoretická informatika 5. listopadu / 43

Z. Sawa (VŠB-TUO) Teoretická informatika 5. listopadu / 43 Zásobníkové automaty Z. Sawa (VŠB-TUO) Teoretická informatika 5. listopadu 2018 1/ 43 Zásobníkový automat Chtěli bychom rozpoznávat jazyk L = {a i b i i 1} Snažíme se navrhnout zařízení (podobné konečným

Více

Logika. 6. Axiomatický systém výrokové logiky

Logika. 6. Axiomatický systém výrokové logiky Logika 6. Axiomatický systém výrokové logiky RNDr. Luděk Cienciala, Ph. D. Tato inovace předmětu Úvod do logiky je spolufinancována Evropským sociálním fondem a Státním rozpočtem ČR, projekt č. CZ. 1.07/2.2.00/28.0216,

Více

Pojem algoritmus. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Pojem algoritmus. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Pojem algoritmus doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Pojem algoritmus 54 / 344

Více

Vztah teorie vyčíslitelnosti a teorie složitosti. IB102 Automaty, gramatiky a složitost, /31

Vztah teorie vyčíslitelnosti a teorie složitosti. IB102 Automaty, gramatiky a složitost, /31 Vztah teorie vyčíslitelnosti a teorie složitosti IB102 Automaty, gramatiky a složitost, 2. 12. 2013 1/31 IB102 Automaty, gramatiky a složitost, 2. 12. 2013 2/31 Časová složitost algoritmu počet kroků výpočtu

Více

Základy algoritmizace

Základy algoritmizace Algoritmus Toto je sice na první pohled pravdivá, ale při bližším prozkoumání nepřesná definice. Například některé matematické postupy by této definici vyhovovaly, ale nejsou algoritmy. Přesné znění definice

Více

Definice 9.4. Nedeterministický algoritmus se v některých krocích může libovolně rozhodnout pro některé z několika možných různých pokračování.

Definice 9.4. Nedeterministický algoritmus se v některých krocích může libovolně rozhodnout pro některé z několika možných různých pokračování. 9.5 Třída NP Definice 9.4. Nedeterministický algoritmus se v některých krocích může libovolně rozhodnout pro některé z několika možných různých pokračování. Příklad. Uvažujme problém IND a následující

Více

8. Laboratoř: Aritmetika a řídicí struktury programu

8. Laboratoř: Aritmetika a řídicí struktury programu 8. Laboratoř: Aritmetika a řídicí struktury programu Programy v JSA aritmetika, posuvy, využití příznaků Navrhněte a simulujte v AVR studiu prográmky pro 24 bitovou (32 bitovou) aritmetiku: sčítání, odčítání,

Více

Formální jazyky a gramatiky Teorie programovacích jazyků

Formální jazyky a gramatiky Teorie programovacích jazyků Formální jazyky a gramatiky Teorie programovacích jazyků doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Připomenutí základních pojmů ABECEDA jazyk je libovolná podmnožina

Více

Architektury počítačů a procesorů

Architektury počítačů a procesorů Kapitola 3 Architektury počítačů a procesorů 3.1 Von Neumannova (a harvardská) architektura Von Neumann 1. počítač se skládá z funkčních jednotek - paměť, řadič, aritmetická jednotka, vstupní a výstupní

Více

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21. Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky

Více

Pohled do nitra mikroprocesoru Josef Horálek

Pohled do nitra mikroprocesoru Josef Horálek Pohled do nitra mikroprocesoru Josef Horálek Z čeho vycházíme = Vycházíme z Von Neumannovy architektury = Celý počítač se tak skládá z pěti koncepčních bloků: = Operační paměť = Programový řadič = Aritmeticko-logická

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech

Více

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Jak v Javě primitivní datové typy a jejich reprezentace BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Obsah Celočíselný datový typ Reálný datový typ Logický datový typ, typ Boolean

Více

Struktura a architektura počítačů (BI-SAP) 5

Struktura a architektura počítačů (BI-SAP) 5 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 5 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii

Více

Výroková a predikátová logika - III

Výroková a predikátová logika - III Výroková a predikátová logika - III Petr Gregor KTIML MFF UK ZS 2017/2018 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - III ZS 2017/2018 1 / 16 2-SAT 2-SAT Výrok je v k-cnf, je-li v CNF a

Více

Paralelní programování

Paralelní programování Paralelní programování přednášky Jan Outrata únor duben 2011 Jan Outrata (KI UP) Paralelní programování únor duben 2011 1 / 14 Atomické akce dále nedělitelná = neproložitelná jiným procesem izolovaná =

Více

Číselné vyjádření hodnoty. Kolik váží hrouda zlata?

Číselné vyjádření hodnoty. Kolik váží hrouda zlata? Čísla a logika Číselné vyjádření hodnoty Au Kolik váží hrouda zlata? Dekadické vážení Když přidám osmé závaží g, váha se převáží => závaží zase odeberu a začnu přidávat závaží x menší 7 závaží g 2 závaží

Více

Struktura a architektura počítačů (BI-SAP) 7

Struktura a architektura počítačů (BI-SAP) 7 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 7 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii

Více

Programovací jazyk Pascal

Programovací jazyk Pascal Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce

Více

Matematická logika. Miroslav Kolařík

Matematická logika. Miroslav Kolařík Matematická logika přednáška šestá Miroslav Kolařík Zpracováno dle textu R. Bělohlávka: Matematická logika poznámky k přednáškám, 2004. a dle učebního textu R. Bělohlávka a V. Vychodila: Diskrétní matematika

Více

Základní pojmy. Program: Algoritmus zapsaný v programovacím jazyce, který řeší nějaký konkrétní úkol. Jedná se o posloupnost instrukcí.

Základní pojmy. Program: Algoritmus zapsaný v programovacím jazyce, který řeší nějaký konkrétní úkol. Jedná se o posloupnost instrukcí. Základní pojmy IT, číselné soustavy, logické funkce Základní pojmy Počítač: Stroj na zpracování informací Informace: 1. data, která se strojově zpracovávají 2. vše co nám nebo něčemu podává (popř. předává)

Více

Výroková a predikátová logika - V

Výroková a predikátová logika - V Výroková a predikátová logika - V Petr Gregor KTIML MFF UK ZS 2015/2016 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - V ZS 2015/2016 1 / 21 Dokazovací systémy VL Hilbertovský kalkul Hilbertovský

Více

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy Ústav radioelektroniky Vysoké učení technické v Brně Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy Přednáška 8 doc. Ing. Tomáš Frýza, Ph.D. listopad 2012 Obsah

Více

Od Turingových strojů k P=NP

Od Turingových strojů k P=NP Složitost Od Turingových strojů k P=NP Zbyněk Konečný Zimnění 2011 12. 16.2.2011 Kondr (Než vám klesnou víčka 2011) Složitost 12. 16.2.2011 1 / 24 O čem to dnes bude? 1 Co to je složitost 2 Výpočetní modely

Více

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus Činnost CPU Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus Hodinový cyklus CPU je synchronní obvod nutné hodiny (f CLK ) Instrukční cyklus IF = doba potřebná

Více

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T.

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T. BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 2/41 Formální překlady BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 4/41 Automaty a gramatiky(bi-aag) 5. Překladové konečné

Více

Bezkontextové jazyky. Bezkontextové jazyky 1 p.1/39

Bezkontextové jazyky. Bezkontextové jazyky 1 p.1/39 Bezkontextové jazyky Bezkontextové jazyky 1 p.1/39 Jazyky typu 2 Definice 4.1 Gramatika G = (N, Σ, P, S) si nazývá bezkontextovou gramatikou, jestliže všechna pravidla z P mají tvar A α, A N, α (N Σ) Lemma

Více

Program a životní cyklus programu

Program a životní cyklus programu Program a životní cyklus programu Program algoritmus zapsaný formálně, srozumitelně pro počítač program se skládá z elementárních kroků Elementární kroky mohou být: instrukce operačního kódu počítače příkazy

Více

Bezkontextové jazyky 2/3. Bezkontextové jazyky 2 p.1/27

Bezkontextové jazyky 2/3. Bezkontextové jazyky 2 p.1/27 Bezkontextové jazyky 2/3 Bezkontextové jazyky 2 p.1/27 Transformace bezkontextových gramatik Bezkontextové jazyky 2 p.2/27 Ekvivalentní gramatiky Definice 6.1 Necht G 1 a G 2 jsou gramatiky libovolného

Více

Seznámení s mikropočítačem. Architektura mikropočítače. Instrukce. Paměť. Čítače. Porovnání s AT89C2051

Seznámení s mikropočítačem. Architektura mikropočítače. Instrukce. Paměť. Čítače. Porovnání s AT89C2051 051 Seznámení s mikropočítačem Architektura mikropočítače Instrukce Paměť Čítače Porovnání s AT89C2051 Seznámení s mikropočítačem řady 8051 Mikroprocesor řady 8051 pochází z roku 1980 a je vytvořené firmou

Více

Úvod do programování 7. hodina

Úvod do programování 7. hodina Úvod do programování 7. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Umíme z minulé hodiny Syntax Znaky Vlastní implementace

Více

TURINGOVY STROJE. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

TURINGOVY STROJE. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze TURINGOVY STROJE Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 12 Evropský sociální fond Praha & EU: Investujeme do vaší

Více

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09 Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1 Šablona: Název: Téma: Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Operátory Autor:

Více

Předmluva 13 Použité konvence 14. KAPITOLA 1 Základní číselné soustavy a pojmy Číselné soustavy a převody 15 1.

Předmluva 13 Použité konvence 14. KAPITOLA 1 Základní číselné soustavy a pojmy Číselné soustavy a převody 15 1. 7 Předmluva 13 Použité konvence 14 KAPITOLA 1 Základní číselné soustavy a pojmy 15 1.1 Číselné soustavy a převody 15 1.2 Datové typy 18 KAPITOLA 2 Seznámení s mikroprocesory řady x86 21 2.1 Počítač obecně

Více

Procesor. Základní prvky procesoru Instrukční sada Metody zvýšení výkonu procesoru

Procesor. Základní prvky procesoru Instrukční sada Metody zvýšení výkonu procesoru Počítačové systémy Procesor Miroslav Flídr Počítačové systémy LS 2006-1/17- Západočeská univerzita v Plzni Víceúrovňová organizace počítače Digital logic level Microarchitecture level Processor Instruction

Více

Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů

Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů BI-AAG (2011/2012) J. Holub: 1. Základní pojmy p. 2/29 Hodnocení předmětu BI-AAG (2011/2012) J. Holub: 1. Základní pojmy p. 4/29 Automaty a gramatiky(bi-aag) 1. Základní pojmy Jan Holub Katedra teoretické

Více

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů). Strojový kód k d a asembler procesoru MIPS Použit ití simulátoru SPIM K.D. - cvičení ÚPA 1 MIPS - prostředí 32 ks 32bitových registrů ( adresa registru = 5 bitů). Registr $0 je zero čte se jako 0x0, zápis

Více

PJC Cvičení #2. Číselné soustavy a binární reprezentace proměnných

PJC Cvičení #2. Číselné soustavy a binární reprezentace proměnných PJC Cvičení #2 Číselné soustavy a binární reprezentace proměnných Číselné soustavy Desítková (decimální) kdo nezná, tak...!!! Dvojková (binární) - nejjednodušší Šestnáctková (hexadecimální) - nejpoužívanější

Více

Katedra informatiky a výpočetní techniky. 10. prosince Ing. Tomáš Zahradnický doc. Ing. Róbert Lórencz, CSc.

Katedra informatiky a výpočetní techniky. 10. prosince Ing. Tomáš Zahradnický doc. Ing. Róbert Lórencz, CSc. Katedra informatiky a výpočetní techniky České vysoké učení technické, fakulta elektrotechnická Ing. Tomáš Zahradnický doc. Ing. Róbert Lórencz, CSc. 10. prosince 2007 Pamět ové banky S výhodou používáme

Více

Složitost algoritmů. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Složitost algoritmů. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Složitost algoritmů doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 27. prosince 2015 Jiří Dvorský (VŠB TUO) Složitost algoritmů

Více

Registry 32 bitové pro všeobecné použití: EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP.

Registry 32 bitové pro všeobecné použití: EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP. 1 Procesor i486 a vyšší - úvodní seznámení Procesory i486 a vyšší jsou v technické literatuře dobře dokumentovány, ale dokumentace je rozsáhlá a obsahuje pro začínajícího i zkušeného programátora mnoho

Více

Bezkontextové gramatiky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 6. května / 49

Bezkontextové gramatiky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 6. května / 49 Bezkontextové gramatiky Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 6. května 2018 1/ 49 Bezkontextové gramatiky Příklad: Chtěli bychom popsat jazyk aritmetických výrazů obsahující výrazy jako například:

Více

11 VYPOČITATELNOST A VÝPOČTOVÁ SLOŽITOST

11 VYPOČITATELNOST A VÝPOČTOVÁ SLOŽITOST 11 VYPOČITATELNOST A VÝPOČTOVÁ SLOŽITOST Na první přednášce jsme si neformálně zavedli pojmy problém a algoritmus pro jeho řešení, které jsme na počítači vykonávali pomocí programů. Jako příklad uveďme

Více

[1] Definice 1: Polynom je komplexní funkce p : C C, pro kterou. pro všechna x C. Čísla a 0, a 1,..., a n nazýváme koeficienty polynomu.

[1] Definice 1: Polynom je komplexní funkce p : C C, pro kterou. pro všechna x C. Čísla a 0, a 1,..., a n nazýváme koeficienty polynomu. Polynomy Polynom je možno definovat dvěma způsoby: jako reálnou nebo komplexní funkci, jejichž hodnoty jsou dány jistým vzorcem, jako ten vzorec samotný. [1] První způsob zavedení polynomu BI-LIN, polynomy,

Více

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program Denotační sémantika programovacího jazyka doc. Dr. Ing. Miroslav Beneš katedra informatiky, A-1007 59 732 4213 Obsah přednášky Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup

Více

Kubatova 19.4.2007 Y36SAP 8. Strojový kód Jazyk symbolických instrukcí asembler JSA pro ADOP a AVR. 2007-Kubátová Y36SAP-strojový kód 1

Kubatova 19.4.2007 Y36SAP 8. Strojový kód Jazyk symbolických instrukcí asembler JSA pro ADOP a AVR. 2007-Kubátová Y36SAP-strojový kód 1 Y36SAP 8 Strojový kód Jazyk symbolických instrukcí asembler JSA pro ADOP a AVR 2007-Kubátová Y36SAP-strojový kód 1 Architektura souboru instrukcí, ISA - Instruction Set Architecture Vysoká Architektura

Více

1 Linearní prostory nad komplexními čísly

1 Linearní prostory nad komplexními čísly 1 Linearní prostory nad komplexními čísly V této přednášce budeme hledat kořeny polynomů, které se dále budou moci vyskytovat jako složky vektorů nebo matic Vzhledem k tomu, že kořeny polynomu (i reálného)

Více

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5 Obsah Obsah 1 Programovací jazyk Pascal 1 1.1 Struktura programu v Pascalu.................... 1 2 Proměnné 2 2.1 Vstup a výstup............................ 3 3 Operátory a některé matematické funkce 5

Více

MQL4 COURSE. By Coders guru www.forex-tsd.com. -4 Operace & Výrazy

MQL4 COURSE. By Coders guru www.forex-tsd.com. -4 Operace & Výrazy MQL4 COURSE By Coders guru www.forex-tsd.com -4 Operace & Výrazy Vítejte ve čtvrté lekci mého kurzu MQL4. Předchozí lekce Datové Typy prezentovaly mnoho nových konceptů ; Doufám, že jste všemu porozuměli,

Více

Semestrální práce z předmětu ÚPA MIPS

Semestrální práce z předmětu ÚPA MIPS Semestrální práce z předmětu ÚPA MIPS Jméno a příjmení: Martin Sloup Osobní číslo: A04372 Datum odevzdání: 21. prosince 2006 E-mail: msloup@students.zcu.cz Zadání Program převede signed integer na jeho

Více

Predik atov a logika - pˇredn aˇska () Predik atov a logika - pˇredn aˇska / 16

Predik atov a logika - pˇredn aˇska () Predik atov a logika - pˇredn aˇska / 16 Predikátová logika - přednáška 3 6. 1. 2015 () Predikátová logika - přednáška 3 6. 1. 2015 1 / 16 Věta (o dedukci) Bud L jazyk, T teorie pro L, ϕ L-sentence a ψ L-formule. Pak Věta (o kompaktnosti) T ϕ

Více

C2115 Praktický úvod do superpočítání

C2115 Praktický úvod do superpočítání C2115 Praktický úvod do superpočítání IX. lekce Petr Kulhánek, Tomáš Bouchal kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta, Masarykova univerzita, Kotlářská 2, CZ-61137

Více

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2 Euklidův algoritmus Doprovodný materiál pro cvičení Programování I. NPRM044 Autor: Markéta Popelová Datum: 31.10.2010 Euklidův algoritmus verze 1.0 Zadání: Určete největšího společného dělitele dvou zadaných

Více

SEKVENČNÍ LOGICKÉ OBVODY

SEKVENČNÍ LOGICKÉ OBVODY Sekvenční logický obvod je elektronický obvod složený z logických členů. Sekvenční obvod se skládá ze dvou částí kombinační a paměťové. Abychom mohli určit hodnotu výstupní proměnné, je potřeba u sekvenčních

Více

2. Složitost, grafové algoritmy (zapsal Martin Koutecký)

2. Složitost, grafové algoritmy (zapsal Martin Koutecký) 2. Složitost, grafové algoritmy (zapsal Martin Koutecký) Model Ram Při analýze algoritmu bychom chtěli nějak popsat jeho složitost. Abychom mohli udělat toto, potřebujeme nejprve definovat výpočetní model.

Více

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: 3 Maticový počet 3.1 Zavedení pojmu matice Maticí typu (m, n, kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: a 11 a 12... a 1k... a 1n a 21 a 22...

Více

Základy matematické analýzy

Základy matematické analýzy Základy matematické analýzy Spojitost funkce Ing. Tomáš Kalvoda, Ph.D. 1, Ing. Daniel Vašata 2 1 tomas.kalvoda@fit.cvut.cz 2 daniel.vasata@fit.cvut.cz Katedra aplikované matematiky Fakulta informačních

Více

Paměť počítače. alg2 1

Paměť počítače. alg2 1 Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových

Více

setup() { I = 0; } loop() { I = I + 1; }

setup() { I = 0; } loop() { I = I + 1; } PŘERUŠENÍ Procesor pracuje tak, že načítá z paměti jednotlivé instrukce a ty následně zpracovává. Instrukce se zpracovávají v pořadí v jakém jsou uloženy v paměti. Vezměme jednoduchý program, který v nekonečném

Více

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7 Pascal Katedra aplikované kybernetiky Ing. Miroslav Vavroušek Verze 7 Proměnné Proměnná uchovává nějakou informaci potřebnou pro práci programu. Má ve svém oboru platnosti unikátní jméno. (Připadne, musí

Více

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008.

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008. Úvod do informatiky přednáška čtvrtá Miroslav Kolařík Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008. Obsah 1 Pojem relace 2 Vztahy a operace s (binárními) relacemi

Více

1 Lineární prostory a podprostory

1 Lineární prostory a podprostory Lineární prostory a podprostory Přečtěte si: Učebnice AKLA, kapitola první, podkapitoly. až.4 včetně. Cvičení. Které z následujících množin jsou lineárními prostory s přirozenými definicemi operací?. C

Více

/1: Teoretická informatika(ti) přednáška 4

/1: Teoretická informatika(ti) přednáška 4 456-330/1: Teoretická informatika(ti) přednáška 4 prof. RNDr Petr Jančar, CSc. katedra informatiky FI VŠB-TUO www.cs.vsb.cz/jancar LS 2009/2010 Petr Jančar (FI VŠB-TU) Teoretická informatika(ti) LS 2009/2010

Více

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij] MATICE Matice typu m/n nad tělesem T je soubor m n prvků z tělesa T uspořádaných do m řádků a n sloupců: a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij] a m1 a m2 a mn Prvek a i,j je prvek matice A na místě

Více

Výroková a predikátová logika - XII

Výroková a predikátová logika - XII Výroková a predikátová logika - XII Petr Gregor KTIML MFF UK ZS 2015/2016 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - XII ZS 2015/2016 1 / 15 Algebraické teorie Základní algebraické teorie

Více

Opakování programování

Opakování programování Opakování programování HW návaznost - procesor sběrnice, instrukční sada, optimalizace rychlosti, datové typy, operace (matematické, logické, podmínky, skoky, podprogram ) - paměti a periferie - adresování

Více

Počítač jako prostředek řízení. Struktura a organizace počítače

Počítač jako prostředek řízení. Struktura a organizace počítače Řídicí počítače - pro řízení technologických procesů. Specielní přídavná zařízení - I/O, přerušovací systém, reálný čas, Č/A a A/Č převodníky a j. s obsluhou - operátorské periferie bez obsluhy - operátorský

Více

Týden 11. Přednáška. Teoretická informatika průběh výuky v semestru 1. Nejprve jsme dokončili témata zapsaná u minulé přednášky.

Týden 11. Přednáška. Teoretická informatika průběh výuky v semestru 1. Nejprve jsme dokončili témata zapsaná u minulé přednášky. Teoretická informatika průběh výuky v semestru 1 Týden 11 Přednáška Nejprve jsme dokončili témata zapsaná u minulé přednášky. PSPACE, NPSPACE, PSPACE-úplnost Uvědomilijsmesi,ženapř.prozjištěnítoho,zdaBílýmánějakoustrategiivehřeŠACHY,

Více