Rekurzivní algoritmy
|
|
- Břetislav Král
- před 5 lety
- Počet zobrazení:
Transkript
1 Rekurzivní algoritmy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA) ZS 2010/11, Přednáška 8 Evropský sociální fond. Praha & EU: Investujeme do vaší budoucnosti prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn. 8 1 / 22
2 Rekurze Rekurze Rekurze je metoda zápisu algoritmu, kde se stejný postup opakuje na částech vstupních dat. Výhody: úsporná: zápis kódu je kratší a konečným zápisem lze definovat množinu dat, přirozená: opakování a samopodobnost jsou v přírodě běžné, intuitivní: explicite pojmenovává to, co se opakuje v menším, expresivní: rekurzivní specifikace umožňuje snadnou analýzu složitosti a ověření správnosti (viz např. MergeSort v Přednášce 5). Nevýhody: Interpretace nebo provádění rekurzivního kódu používá systémový zásobník pro předání parametrů volání a proto vyžaduje systémovou paměť. Dynamická alokace systémového zásobníku a ukládání parametrů na něj navíc představuje časovou režii. prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn. 8 2 / 22
3 Typy rekurze Koncová rekurze Typy rekurze Koncová rekurze: rekurzivní volání je posledním příkazem algoritmu, po kterém se už neprovádějí žádné další odložené operace. Příklad 1 (Euclidův algoritmus) Největší společný dělitel: Nechť n m 0. { n if m = 0, GCD(n, m) = GCD(m, Remainder(n, m)) if m > 0. prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn. 8 3 / 22
4 Typy rekurze Lineární rekurze Lineární rekurze: V těle algoritmu je pouze jedno rekurzivní volání anebo jsou dvě, ale vyskytují se v disjunktních větvích podmíněných příkazů a nikdy se neprovedou současně. Strom rekurzivních volání je lineární. Příklad 2 (Vložení prvku do BVS) procedure insertrec(x, z, p) { (1) if (x = Null) (2) {P arent[z] p; return z}; (3) Cnt[x] + +; (4) if (V al[z] < V al[x]) (5) then Lef t[x] insertrec(lef t[x], z, x) (6) else Right[x] insertrec(right[x], z, x); (7) return x; } prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn. 8 4 / 22
5 Typy rekurze Kaskádní rekurze Kaskádní rekurze: V těle algoritmu jsou vedle sebe aspoň dvě rekurzivní volání. Viz MergeSort, QuickSort. Příklad 3 (Fibonacciho posloupnost) { 1 if n = 1, 2, F(n) = F(n 1) + F(n 2) if n > 2. Příklad 4 (Obecná lineární rekurence) F(n) = { 1 if n 3, a 1 F(n 1) + a 2 F(n 2) + a 3 F(n 3) if n > 3. Strom rekurzivních volání je více-ární. prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn. 8 5 / 22
6 Typy rekurze Vnořená rekurze Vnořená rekurze: Algoritmus volaný rekurzivně s parametry, jejichž hodnoty jsou také výsledkem rekurzivního volání. Příklad 5 (Ackermannova funkce) n + 1 if m = 0, A(m, n) = A(m 1, 1) if m > 0 and n = 0, A(m 1, A(m, n 1)) if m > 0 and n > 0. Neuvěřitelně rychle rostoucí funkce, viz prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn. 8 6 / 22
7 Rekurze vs. iterace Rekurze vs. iterace Rekurzivní programování má základní oporu v teoretické informatice, kde bylo dokázáno, že: 1 Každou funkci, která může být implementovaná na vonneumannovském počítači, lze vyjádřit rekurzivně bez použití iterace. 2 Každá rekurzivní funkce se dá vyjádřit iterativně s použitím zásobníku (implicitní zásobník se stane viditelný uživateli). Koncovou rekurzi lze vždy nahradit iterací bez nutnosti zásobníku. (Zformulujte intuitivně zřejmý důvod.) V předchozích přednáškách bylo několik případů konverze rekurzivního algoritmu na iterační. prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn. 8 7 / 22
8 Rekurze vs. iterace Rekurzivní heapify procedure heapifyrec(a, i) { (1) l left(i); (2) r right(i); (3) if (l Heap Size(A) & A[l] > A[i]) (4) then Largest l else Largest i; (5) if (r Heap Size(A) & A[r] > A[Largest]) (6) then Largest r; (7) if (Largest i) (8) then {A[i] A[Largest]; heapifyrec(a, Largest)} } prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn. 8 8 / 22
9 Rekurze vs. iterace Iterativní heapify procedure heapifyiter(a, i) { (1) while (i Heap Size(A)/2 ) (2) do {l left(i); (3) r right(i); (4) if (l Heap Size(A) & A[l] > A[i]) (5) then Largest l else Largest i; (6) if (r Heap Size(A) & A[r] > A[Largest]) (7) then Largest r; (8) if (Largest = i) return(); (9) A[i] A[Largest]; (10) i Largest; } }; prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn. 8 9 / 22
10 Rekurze vs. iterace Rekurzivní QuickSort procedure QuickSort(A, low, high) { (1) if (low < high) (2) then { pivot SelectPivot(A, low, high); (3) mid Rozdel(A, low, high, pivot); (4) QuickSort(A, low, mid); (5) QuickSort(A, mid + 1, high) } } prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn / 22
11 Rekurze vs. iterace Méně rekurzivní QuickSort procedure QuickSortTail(A, low, high) { (1) while (low < high) (2) do { pivot SelectPivot(A, low, high); (3) mid Rozdel(A, low, high, pivot); (4) QuickSortTail(A, low, mid); (5) low mid + 1 } } prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn / 22
12 Rekurzivní algoritmy nad stromy Algoritmy nad binárními stromy Binární strom je definován rekurzivně (viz Slajd 10 v přednášce 4). Proto řada algoritmů nad stromy je rekurzivních. Zde se zaměříme na binární stromy s tím, že většina algoritmů je zobecnitelná pro k-ární stromy. struct node { int V al; //hodnota uložená v uzlu int Index; //pořadové číslo uzlu node *P arent; //ukazatel na rodiče node *Lef t; //ukazatel na levý podstrom node *Right //ukazatel na pravý podstrom } prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn / 22
13 Rekurzivní algoritmy nad stromy Generování náhodného binárního stromu BS s náhodnou strukturou: náhodně chybějící levé a pravé podstromy. Hodnoty v uzlech jsou náhodná čísla z intervalu [1, 99]. procedure randbintree(h) // h je výška (1){ if (h 0 & Random(1, 2) = 1) (2) then { vygeneruj dynamicky nový uzel N ewn ode; (3) Left[NewNode] randbintree(h 1); (4) V alue[n ewn ode] Random(1, 99); (5) Right[N ewn ode] randbintree(h 1); (6) return(n ewn ode)} (7) else return(null) } prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn / 22
14 Rekurzivní algoritmy nad stromy 3 základní algoritmy procházení stromů a číslování uzlů PreOrder InOrder PostOrder c 0; //globální čítač uzlů procedure preorderwalk(r) {// r je ukazatel na kořen stromu (1) if (r = Null) then return(); (2) Index[r] c; c c + 1; (3) print(index[r], V alue[r]); (4) preorderwalk(lef t[r]); (5) preorderwalk(right[r]); } prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn / 22
15 Rekurzivní algoritmy nad stromy 3 základní algoritmy procházení stromů a číslování uzlů PreOrder InOrder PostOrder c 0; //globální čítač uzlů procedure inorderwalk(r) {// r je ukazatel na kořen stromu (1) if (r = Null) then return(); (2) inorderwalk(lef t[r]); (3) Index[r] c; c c + 1; (4) print(index[r], V alue[r]); (5) inorderwalk(right[r]); } prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn / 22
16 Rekurzivní algoritmy nad stromy 3 základní algoritmy procházení stromů a číslování uzlů PreOrder InOrder PostOrder c 0; //globální čítač uzlů procedure postorderwalk(r) {// r je ukazatel na kořen stromu (1) if (r = Null) then return(); (2) postorderwalk(lef t[r]); (3) postorderwalk(right[r]); (4) r.index c; c c + 1; (5) print(index[r], V alue[r]); } prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn / 22
17 Rekurzivní algoritmy nad stromy Shrnutí Všechny 3 průchody jsou založeny na průchodu do hloubky = DFS (Depth-First-Search). Liší se pouze podmínkou, kdy je procházený uzel označen (zpracován). PreOrder: při první návštěvě. InOrder: při přechodu z levého do pravého podstromu. PostOrder: při poslední návštěvě. PreOrder a PostOrder lze zobecnit pro libovolné k-ární stromy. Binární strom lze tedy linearizovat 3 základními způsoby. Protože v každém souvislém grafu G lze zkonstruovat kostru, lze takto linearizovat (očíslovat) uzly lib. souvislého grafu. prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn / 22
18 Rekurzivní algoritmy nad stromy Velikost a hloubka stromu Algoritmus 6 procedure treesize(r) {// r je ukazatel na kořen stromu (1) if (r = Null) then return(0); (2) return(treesize(lef t[r]) + treesize(right[r]) + 1) } Algoritmus 7 procedure treedepth(r) {// r je ukazatel na kořen stromu (1) if (r = Null) then return(0); (2) return(max(treedepth(lef t[r]), treedepth(right[r])) + 1) } prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn / 22
19 Rekurzivní definované struktury Rekurzivně definované struktury Algoritmus 8 procedure ruler(h) { (1) if (h < 1) (2) then return(); (3) ruler(h 1); (4) print(h); (5) ruler(h 1); } Pokud zavoláme ruler(4), na výstupu se objeví posloupnost čísel v tomto pořadí prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn / 22
20 Rekurzivní definované struktury Strom rekurzivních volání Koncová volání ruler(0) jsou v obrázku vynechána. ruler(2) ruler(1) print(1) print(2) ruler(1) print(1) ruler(4) ruler(3) print(3) ruler(2) print(4) ruler(2) ruler(3) print(3) ruler(1) print(2) ruler(1) ruler(1) print(2) ruler(1) print(1) print(1) print(1) print(1) ruler(2) ruler(1) print(2) ruler(1) print(1) print(1) prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn / 22
21 Paměťová složitost rekurzivních algoritmů Skutečná paměťová složitost rekurzivních výpočtů V rekurzivní proceduře se při rekurzivním volání téže procedury (totéž pro funkce) musí na systémový zásobník uložit hodnoty parametrů a lokálních proměnných volající procedury. Při návratu po ukončení této vnořené procedury se tyto hodnoty obnoví, aby volající procedura mohla pokračovat se stejným kontextem jako před vstupem do rekurzivního volání. Výška zásobníku se rovná hloubce stromu rekurzivních volání procedury. Rekurzivní výpočet má tedy skrytou paměťovou náročnost úměrnou hloubce tohoto stromu. prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn / 22
22 Paměťová složitost rekurzivních algoritmů Skutečná paměťová složitost rekurzivních algoritmů: Příklad MergeSort (Přednáška 5, Slajd 2): vyžaduje Θ(log n) paměti na zásobník. MS(A,Aux,1,16) MS(A,Aux,1,8) MS(A,Aux,9,16) M(A,Aux,1,16) MS(A,Aux,1,4) MS(A,Aux,5,8) M(A,Aux,1,8) MS(A,Aux,9,12) MS(A,Aux,13,16) M(A,Aux,9,16) MS(A,Aux,1,2) MS(A,Aux,3,4) M(A,Aux,1,4) MS(A,Aux,5,6) MS(A,Aux,7,8) M(A,Aux,5,8) MS(A,Aux,9,10) MS(A,Aux,11,12) M(A,Aux,9,12) MS(A,Aux,13,14) MS(A,Aux,15,16) M(A,Aux,13,16) MS(A,Aux,1,1); MS(A,Aux,2,2) M(A,Aux,1,2) MS(A,Aux,3,3); MS(A,Aux,4,4) M(A,Aux,3,4) MS(A,Aux,5,5); MS(A,Aux,6,6) M(A,Aux,5,6) MS(A,Aux,7,7); MS(A,Aux,8,8) M(A,Aux,7,8) MS(A,Aux,9,9); MS(A,Aux,10,10) M(A,Aux,9,10) MS(A,Aux,11,11); MS(A,Aux,12,12) M(A,Aux,11,12) MS(A,Aux,13,13); MS(A,Aux,14,14) M(A,Aux,13,14) MS(A,Aux,15,15); MS(A,Aux,16,16) M(A,Aux,15,16) prof. Pavel Tvrdík (FIT ČVUT) Rekurzivní algoritmy BI-EFA, 2010, Předn / 22
Základní datové struktury III: Stromy, haldy
Základní datové struktury III: Stromy, haldy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní
VíceStromy, haldy, prioritní fronty
Stromy, haldy, prioritní fronty prof. Ing. Pavel Tvrdík CSc. Katedra počítačů FEL České vysoké učení technické DSA, ZS 2008/9, Přednáška 6 http://service.felk.cvut.cz/courses/x36dsa/ prof. Pavel Tvrdík
VíceTechniky návrhu algoritmů
Techniky návrhu algoritmů Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2018 Datové struktury a algoritmy, B6B36DSA 01/2018, Lekce 2 https://cw.fel.cvut.cz/wiki/courses/b6b36dsa/start
VícePokročilé haldy. prof. Ing. Pavel Tvrdík CSc. Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010
Pokročilé haldy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (I-EFA) ZS 2010/11,
VíceStromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.
Stromy Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 2018, B6B36DSA 01/2018, Lekce 9 https://cw.fel.cvut.cz/wiki/courses/b6b36dsa/start
VíceStromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy
Stromy úvod Stromy Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy Neorientovaný strom Orientovaný strom Kořenový orientovaný
Více4. Rekurze. BI-EP1 Efektivní programování Martin Kačer
4. Rekurze BI-EP1 Efektivní programování 1 ZS 2011/2012 Ing. Martin Kačer, Ph.D. 2010-11 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze
VíceAlgoritmy výpočetní geometrie
Algoritmy výpočetní geometrie prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA)
VíceALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)
ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK) Strom / tree uzel, vrchol / node, vertex hrana / edge vnitřní uzel
VíceDynamické programování
Dynamické programování prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA)
VíceALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)
ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK) Strom / tree uzel, vrchol / node, vertex hrana / edge vnitřní uzel
VíceAlgoritmy a datové struktury
Algoritmy a datové struktury Stromy 1 / 32 Obsah přednášky Pole a seznamy Stromy Procházení stromů Binární stromy Procházení BS Binární vyhledávací stromy 2 / 32 Pole Hledání v poli metodou půlení intervalu
Více2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.
Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus
Více5 Rekurze a zásobník. Rekurzivní volání metody
5 Rekurze a zásobník Při volání metody z metody main() se do zásobníku uloží aktivační záznam obsahující - parametry - návratovou adresu, tedy adresu, kde bude program pokračovat v metodě main () po skončení
VíceObsah Techniky návrhu algoritmů Rekurze, algoritmy prohledávání s návratem, dynamické programování Rekurze... 5
Techniky návrhu algoritmů Rekurze, algoritmy prohledávání s návratem, dynamické programování Zametací technika, metoda rozděl a panuj a prořezávej a hledej Obsah Techniky návrhu algoritmů... 2 Rekurze,
VíceDatové struktury 2: Rozptylovací tabulky
Datové struktury 2: Rozptylovací tabulky prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy
VíceTGH07 - Chytré stromové datové struktury
TGH07 - Chytré stromové datové struktury Jan Březina Technical University of Liberec 1. dubna 2014 Prioritní fronta Datová struktura s operacemi: Odeber Minum (AccessMin, DeleteMin) - vrat prvek s minimálním
VíceAlgoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Dynamické programování Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Rozděl a panuj (divide-and-conquer) Rozděl (Divide): Rozděl problém na několik podproblémů tak, aby tyto podproblémy odpovídaly původnímu
VíceRekurze. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.
Rekurze 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) Rekurze 161 / 344 Osnova přednášky
Více5. Dynamické programování
5. Dynamické programování BI-EP1 Efektivní programování 1 ZS 2011/2012 Ing. Martin Kačer, Ph.D. 2010-11 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické
VíceStruktura programu v době běhu
Struktura programu v době běhu Miroslav Beneš Dušan Kolář Struktura programu v době běhu Vztah mezi zdrojovým programem a činností přeloženého programu reprezentace dat správa paměti aktivace podprogramů
VíceBinární vyhledávací stromy II
Binární vyhledávací stromy II doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 19. března 2019 Jiří Dvorský (VŠB TUO) Binární vyhledávací
VíceProgramování 3. hodina. RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015
Programování 3. 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 Implementace zásobníku a fronty pomocí
VíceRekurze. Pavel Töpfer, 2017 Programování 1-8 1
Rekurze V programování ve dvou hladinách: - rekurzivní algoritmus (řešení úlohy je definováno pomocí řešení podúloh stejného charakteru) - rekurzivní volání procedury nebo funkce (volá sama sebe přímo
VícePROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze
PROHLEDÁVÁNÍ GRAFŮ Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 4 Evropský sociální fond Praha & EU: Investujeme do
VíceStromy. Příklady. Rekurzivní datové struktury. Základní pojmy
Základní pojmy Stromy doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Graf uzly hrany orientované / neorientované Souvislý
VíceReprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz
Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz (2 + 5) * (13-4) * + - 2 5 13 4 - listy stromu obsahují operandy (čísla) - vnitřní uzly obsahují operátory (znaménka)
VíceČasová a prostorová složitost algoritmů
.. Časová a prostorová složitost algoritmů Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Hodnocení algoritmů Programovací techniky Časová a prostorová
VíceNEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze
NEJKRATŠÍ CESTY I Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 7 Evropský sociální fond Praha & EU: Investujeme do vaší
VíceDobSort. Úvod do programování. DobSort Implementace 1/3. DobSort Implementace 2/3. DobSort - Příklad. DobSort Implementace 3/3
DobSort Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 V roce 1980 navrhl Dobosiewicz variantu (tzv. DobSort),
VíceTGH07 - Chytré stromové datové struktury
TGH07 - Chytré stromové datové struktury Jan Březina Technical University of Liberec 5. dubna 2017 Prioritní fronta Datová struktura s operacemi: Odeber Minum (AccessMin, DeleteMin) - vrat prvek s minimálním
VíceZáklady algoritmizace c2005, 2007 Michal Krátký, Jiří Dvorský1/39
Základy algoritmizace Michal Krátký 1, Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Základy algoritmizace, 2006/2007 Základy algoritmizace c2005, 2007 Michal Krátký, Jiří Dvorský1/39
VíceProgramování v C++ 1, 16. cvičení
Programování v C++ 1, 16. cvičení binární vyhledávací strom 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí minule procvičené
VíceNP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze
NP-ÚPLNÉ PROBLÉMY Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 13 Evropský sociální fond Praha & EU: Investujeme do
VíceSpojová implementace lineárních datových struktur
Spojová implementace lineárních datových struktur doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB
VíceRozptylování, stromy - zákl. vlastnosti
Karel Müller, Josef Vogel (ČVUT FIT) Rozptylování, stromy - zákl. vlastnosti BI-PA2, 2011, Přednáška 12 1/55 Rozptylování, stromy - zákl. vlastnosti Ing. Josef Vogel, CSc Katedra softwarového inženýrství
VíceVolné stromy. Úvod do programování. Kořenové stromy a seřazené stromy. Volné stromy
Volné stromy Úvod do programování Souvislý, acyklický, neorientovaný graf nazýváme volným stromem (free tree). Často vynecháváme adjektivum volný, a říkáme jen, že daný graf je strom. Michal Krátký 1,Jiří
VíceDynamicky vázané metody. Pozdní vazba, virtuální metody
Dynamicky vázané metody Pozdní vazba, virtuální metody Motivace... class TBod protected: float x,y; public: int vrat_pocet_bodu() return 1; ; od třídy TBod odvodíme: class TUsecka: public TBod protected:
VíceRekurze. Jan Hnilica Počítačové modelování 12
Rekurze Jan Hnilica Počítačové modelování 12 1 Rekurzivní charakter úlohy Výpočet faktoriálu faktoriál : n! = n (n - 1) (n - 2)... 2 1 (0! je definován jako 1) můžeme si všimnout, že výpočet n! obsahuje
VícePrioritní fronta, halda
Prioritní fronta, halda Priority queue, heap Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2018 1 / 26 Prioritní fronta Halda Heap sort 2 / 26 Prioritní fronta (priority queue) Podporuje
VíceMělká a hluboká kopie
Karel Müller, Josef Vogel (ČVUT FIT) Mělká a hluboká kopie BI-PA2, 2011, Přednáška 5 1/28 Mělká a hluboká kopie Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky, Fakulta
VíceBinární vyhledávací stromy pokročilé partie
Binární vyhledávací stromy pokročilé partie KMI/ALS lekce Jan Konečný 30.9.204 Literatura Cormen Thomas H., Introduction to Algorithms, 2nd edition MIT Press, 200. ISBN 0-262-5396-8 6, 3, A Knuth Donald
VíceRekurze a zásobník. Jak se vypočítá rekurzivní program? volání metody. vyšší adresy. main(){... fa(); //push ret1... } ret1
Rekurze a zásobník Jak se vypočítá rekurzivní program? volání metody vyšší adresy ret1 main(){... fa(); //push ret1... PC ret2 void fa(){... fb(); //push ret2... return //pop void fb(){... return //pop
VíceAdresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce)
13. Metody vyhledávání. Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce). Asociativní vyhledávání (sekvenční, binárním půlením, interpolační, binární vyhledávací
VíceVyhledá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íce2 Datové struktury. Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky
Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky 25 Pole Datová struktura kolekce elementů (hodnot či proměnných), identifikovaných jedním nebo více indexy, ze kterých
VíceZákladní datové struktury
Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013
VíceTGH05 - Problém za milion dolarů.
TGH05 - Problém za milion dolarů. Jan Březina Technical University of Liberec 20. března 2012 Časová složitost algoritmu Závislost doby běhu programu T na velikosti vstupních dat n. O(n) notace, standardní
VíceStromy. Jan Hnilica Počítačové modelování 14
Stromy Jan Hnilica Počítačové modelování 14 1 Základní pojmy strom = dynamická datová struktura, složená z vrcholů (uzlů, prvků) propojených hranami hrany chápeme jako orientované, tzn. vedou z uzlu A
VíceDynamické datové struktury II.
Dynamické datové struktury II. Stromy. Binární vyhledávací strom. DFS. BFS. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz
VícePODOBÁ SE JAZYKU C S NĚKTERÝMI OMEZENÍMI GLOBÁLNÍ PROMĚNNÉ. NSWI162: Sémantika programů 2
PI JE JEDNODUCHÝ IMPERATIVNÍ PROGRAMOVACÍ JAZYK OBSAHUJE PODPORU ANOTACÍ NEOBSAHUJE NĚKTERÉ TYPICKÉ KONSTRUKTY PROGRAMOVACÍCH JAZYKŮ JAKO JSOU REFERENCE, UKAZATELE, GLOBÁLNÍ PROMĚNNÉ PODOBÁ SE JAZYKU C
Vícebfs, dfs, fronta, zásobník, prioritní fronta, halda
bfs, dfs, fronta, zásobník, prioritní fronta, halda Petr Ryšavý 20. září 2016 Katedra počítačů, FEL, ČVUT prohledávání grafů Proč prohledávání grafů Zkontrolovat, zda je sít spojitá. Hledání nejkratší
VíceVyhledá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ícebin arn ı vyhled av an ı a bst Karel Hor ak, Petr Ryˇsav y 23. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT
binární vyhledávání a bst Karel Horák, Petr Ryšavý 23. března 2016 Katedra počítačů, FEL, ČVUT Příklad 1 Naimplementujte binární vyhledávání. Upravte metodu BinarySearch::binarySearch. 1 Příklad 2 Mysĺım
VíceRekurze a rychlé třídění
Rekurze a rychlé třídění Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2017 1 / 54 Rekurze Rychlé třídění 2 / 54 Rekurze Recursion Rekurze = odkaz na sama sebe, definice za pomoci sebe
VíceNPRG030 Programování I, 2018/19 1 / :03:07
NPRG030 Programování I, 2018/19 1 / 20 3. 12. 2018 09:03:07 Vnitřní třídění Zadání: Uspořádejte pole délky N podle hodnot prvků Měřítko efektivity: * počet porovnání * počet přesunů NPRG030 Programování
VíceIB111 Úvod do programování skrze Python
Vyhledávání, řazení, složitost IB111 Úvod do programování skrze Python 2012 Otrávené studny 8 studen, jedna z nich je otrávená laboratorní rozbor dokáže rozpoznat přítomnost jedu ve vodě je drahý (je časově
VíceA4B33ALG 2010/05 ALG 07. Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated. Quicksort.
A4B33ALG 2010/05 ALG 07 Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated Quicksort Stabilita řazení 1 Selection sort Neseřazeno Seřazeno Start T O U B J R M A K D Z E min
VíceBinární soubory (datové, typované)
Binární soubory (datové, typované) - na rozdíl od textových souborů data uložena binárně (ve vnitřním tvaru jako v proměnných programu) není čitelné pro člověka - všechny záznamy téhož typu (může být i
VíceFunkce pokročilé možnosti. Úvod do programování 2 Tomáš Kühr
Funkce pokročilé možnosti Úvod do programování 2 Tomáš Kühr Funkce co už víme u Nebo alespoň máme vědět... J u Co je to funkce? u Co jsou to parametry funkce? u Co je to deklarace a definice funkce? K
VíceAbstraktní třídy, polymorfní struktury
Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 1/32 Abstraktní třídy, polymorfní struktury Ing. Josef Vogel, CSc Katedra softwarového inženýrství
VíceDynamické datové struktury III.
Dynamické datové struktury III. Halda. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované
VíceProhledávání do šířky = algoritmus vlny
Prohledávání do šířky = algoritmus vlny - souběžně zkoušet všechny možné varianty pokračování výpočtu, dokud nenajdeme řešení úlohy průchod stromem všech možných cest výpočtu do šířky, po vrstvách (v každé
VíceDynamické programování. Optimální binární vyhledávací strom
The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Dynamické programování Optimální binární vyhledávací strom Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)), The
VíceAlgoritmy I, složitost
A0B36PRI - PROGRAMOVÁNÍ Algoritmy I, složitost České vysoké učení technické Fakulta elektrotechnická v 1.01 Rychlost... Jeden algoritmus (program, postup, metoda ) je rychlejší než druhý. Co ta věta znamená??
VíceBINARY SEARCH TREE
---------------------------------------- BINARY SEARCH TREE --------------------------------------------------- Je dán BVS s n uzly. Máme za úkol spočítat hodnotu součtu všech klíčů v tomto stromě. Když
VíceMATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE
VíceIB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)
IB108 Sada 1, Příklad 1 ( ) Složitost třídícího algoritmu 1/-Sort je v O n log O (n.71 ). Necht n = j i (velikost pole, které je vstupním parametrem funkce 1/-Sort). Lehce spočítáme, že velikost pole předávaná
VíceDatové struktury 1: Základní datové struktury
Datové struktury 1: Základní datové struktury prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní
VíceR zné algoritmy mají r znou složitost
/ / zné algoritmy mají r znou složitost Dynamické programování / / Definice funkce Otázka Program f(x,y) = (x = ) (y = ) f(x, y-) + f(x-,y) (x > ) && (y > ) f(,) =? int f(int x, int y) { if ( (x == ) (y
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceÚvod do informatiky. Miroslav Kolařík
Úvod do informatiky přednáška desátá Miroslav Kolařík Zpracováno dle R. Bělohlávek, V. Vychodil: Diskrétní matematika 2, http://phoenix.inf.upol.cz/esf/ucebni/dm2.pdf P. Martinek: Základy teoretické informatiky,
Vícebfs, dfs, fronta, zásobník, prioritní fronta, halda
bfs, dfs, fronta, zásobník, prioritní fronta, halda Petr Ryšavý 19. září 2017 Katedra počítačů, FEL, ČVUT prohledávání grafů Proč prohledávání grafů Zkontrolovat, zda je sít spojitá. Hledání nejkratší
VíceMaturitní otázky z předmětu PROGRAMOVÁNÍ
Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti
VíceRozklad problému na podproblémy
Rozklad problému na podproblémy Postupný návrh programu rozkladem problému na podproblémy zadaný problém rozložíme na podproblémy pro řešení podproblémů zavedeme abstraktní příkazy s pomocí abstraktních
Více1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10
Úlohy- 2.cvičení 1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10 2. Převeďte dané desetinné číslo do dvojkové soustavy (DEC -> BIN): a) 0,8125 10 b) 0,35 10
VíceSTACK
Níže uvedené úlohy představují přehled otázek, které se vyskytly v tomto nebo v minulých semestrech ve cvičení nebo v minulých semestrech u zkoušky. Mezi otázkami semestrovými a zkouškovými není žádný
VíceMatematická indukce a správnost programů. Základy diskrétní matematiky, BI-ZDM ZS 2011/12, Lekce 13
Matematická indukce a správnost programů doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky FIT České vysoké učení technické v Praze c Josef Kolar, 2011 Základy diskrétní matematiky, BI-ZDM ZS
VíceFunkce, intuitivní chápání složitosti
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Funkce, intuitivní
VíceMatematická indukce. Základy diskrétní matematiky, BI-ZDM ZS 2011/12, Lekce 3
doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky FIT České vysoké učení technické v Praze c Josef Kolar, 2011 Základy diskrétní matematiky, BI-ZDM ZS 2011/12, Lekce 3 Evropský sociální fond.
VíceImplementace binárního stromu směrníky
Téma: Vypracoval: Zdeněk Alčer Implementace binárního stromu směrníky 1. Teorie stromu: Pojem strom je datová struktura, která je v teorii grafů formálně definována jako zvláštní případ grafu bez cyklů.
VíceSTROMY A KOSTRY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze. BI-GRA, LS 2010/2011, Lekce 6
STROMY A KOSTRY Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 010/011, Lekce 6 Evropský sociální fond Praha & EU: Investujeme do vaší
VíceAbstraktní datové typy
Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní datové typy BI-PA2, 2011, Přednáška 10 1/27 Abstraktní datové typy Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky,
VíceReprezentace dat v informačních systémech. Jaroslav Šmarda
Reprezentace dat v informačních systémech Jaroslav Šmarda Reprezentace dat v informačních systémech Reprezentace dat v počítači Datové typy Proměnná Uživatelské datové typy Datové struktury: pole, zásobník,
VíceDynamické datové struktury IV.
Dynamické datové struktury IV. Prioritní fronta. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra
VíceImplementace LL(1) překladů
Překladače, přednáška č. 6 Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 30. října 2007 Postup Programujeme syntaktickou analýzu: 1 Navrhneme vhodnou LL(1) gramatiku
Více8. Rekurze. doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze
Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 8 1 Základy algoritmizace 8. Rekurze doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Jiří Vokřínek,
VíceORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ
ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2/2, Lekce Evropský sociální fond Praha & EU: Investujeme
VíceBINARY SEARCH TREE
Níže uvedené úlohy představují přehled otázek, které se vyskytly v tomto nebo v minulých semestrech ve cvičení nebo v minulých semestrech u zkoušky. Mezi otázkami semestrovými a zkouškovými není žádný
VíceRed Black strom (Red Black Tree) Úvod do programování. Rotace. Red Black strom. Rotace. Rotace
Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Red Black strom je binární strom s jedním dvouhodnotovým příznakem
VíceSlepé prohledávání do šířky Algoritmus prohledávání do šířky Při tomto způsobu prohledávání máme jistotu, že vždy nalezneme koncový stav, musíme ale p
Hanojská věž Stavový prostor 1. množina stavů S = {s} 2. množina přechodů mezi stavy (operátorů) Φ = {φ} s k = φ ki (s i ) zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3] který tah
VíceGrafové algoritmy. Programovací techniky
Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být
VíceHledání k-tého nejmenšího prvku
ALG 14 Hledání k-tého nejmenšího prvku Randomized select CLRS varianta Partition v Quicksortu 0 Hledání k-tého nejmenšího prvku 1. 2. 3. Seřaď seznam/pole a vyber k-tý nejmenší, složitost (N*log(N)). Nevýhodou
VíceZdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.
1 3 4 5 6 7 8 9 10 11 1 13 14 15 16 17 18 19 0 1 3 4 5 6 7 8 9 30 31 3 Zdůvodněte, proč funkce f(n) = n log(n) 1 n 1/ roste rychleji než funkce g(n) = n. Zdůvodněte, proč funkce f(n) = n 3/ log(n) roste
VíceDYNAMICKÉ PROGRAMOVÁNÍ A PROBLÉM BATOHU
ČVUT V PRAZE FAKULTA INFORMAČNÍCH TECHNOLOGIÍ JAN SCHMIDT A PETR FIŠER MI-PAA DYNAMICKÉ PROGRAMOVÁNÍ A PROBLÉM BATOHU EVROPSKÝ SOCIÁLNÍ FOND PRAHA A EU: INVESTUJEME DO VAŠÍ BUDOUCNOSTI Dynamické programování
VíceNa začátku rozdělíme práci a určíme, které podproblémy je potřeba vyřešit. Tyto
Kapitola 1 Rozděl a panuj Rozděl a panuj je programovací metoda. Často se označuje latinsky Divide et Empera nebo anglicky Divide and Conquer. Vychází z toho, že umíme zadaný problém rozložit na menší
VíceProgramování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace
Programování: základní konstrukce, příklady, aplikace IB111 Programování a algoritmizace 2011 Připomenutí z minule, ze cvičení proměnné, výrazy, operace řízení výpočtu: if, for, while funkce příklady:
VícePROGRAMOVACÍ JAZYKY A PŘEKLADAČE LL SYNTAKTICKÁ ANALÝZA DOKONČENÍ, IMPLEMENTACE.
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LL SYNAKICKÁ ANALÝZA DOKONČENÍ, IMPLEMENACE. VLASNOSI LL GRAMAIK A JAZYKŮ. 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Gramatika
VíceNáplň. v.0.03 16.02.2014. - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění
Náplň v.0.03 16.02.2014 - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění Spojení dvou samostatně setříděných polí void Spoj(double apole1[], int adelka1, double
VíceŘešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C
Hanojské věže - 3 kolíky A, B, C - na A je N disků různé velikosti, seřazené od největšího (dole) k nejmenšímu (nahoře) - kolíky B a C jsou prázdné - úkol: přenést všechny disky z A na B, mohou se odkládat
Více