Rozděl a panuj. Často se setkáme s úlohami, které lze snadno rozdělit na nějaké menší úlohy a z jejich
|
|
- Blanka Müllerová
- před 6 lety
- Počet zobrazení:
Transkript
1 Rozděl a panuj Často se setkáme s úlohami, které lze snadno rozdělit na nějaké menší úlohy a z jejich výsledků zase snadno složit výsledek původní velké úlohy. Přitom menší úlohy můžeme řešit opět týmž algoritmem (zavoláme si ho rekurzivně), leda by již byly tak maličké, že dokážeme odpovědět triviálně bez jakéhokoliv počítání. Zkrátka jak říkali staří římští císaři: Divide et impera. Uveďme si pro začátek jeden staronový příklad: Quicksort QuickSort (alias QS) je algoritmus pro třídění posloupnosti prvků. Už o něm byla jednou řeč v třídicí kuchařce. Tentokrát se na něj podíváme trochu podrobněji a navíc nám poslouží jako ingredience pro další algoritmy. QS v každém svém kroku zvolí nějaký prvek (budeme mu říkat pivot) a přerovná prvky v posloupnosti tak, aby napravo od pivota byly pouze prvky větší než pivot a nalevo pouze menší. Pokud se vyskytnou prvky rovné pivotu, můžeme si dle libosti vybrat jak levou, tak pravou stranu posloupnosti, funkčnost algoritmu to nijak neovlivní. Tento postup pak rekurzivně zopakujeme zvlášť pro prvky nalevo a zvlášť pro prvky napravo od pivota, a tak získáme setříděnou posloupnost. Implementací QS je mnoho a mimo jiné se liší způsobem volby pivota. My si předvedeme jinou, než jsme ukazovali v třídicí kuchařce (hlavně proto, že se nám z ní pak budou snadno odvozovat další algoritmy) a pro jednoduchost budeme jako pivota volit poslední prvek zkoumaného úseku: { budeme třídit takováto pole } type Pole=array[1..MaxN] of Integer; { přerovnávací procedura pro úsek a[l..r] } function prerovnej(a: Pole; l, r: integer): integer; var i, j, x, q: integer; { pivotem se stane poslední prvek úseku } x:=a[r]; { hodnota pivota } i:=l-1; { a[i] bude vždy poslední <= pivotovi } { samotné přerovnávání } for j:=l to r-1 do if a[j]<=x then { právě probíraný prvek } { menší/rovný hodnotě pivota } i:=i+1; { pak zvyš ukazatel } q:=a[j]; { a proveď přerovnání prvku } a[j]:=a[i]; a[i]:=q; { nakonec přesuneme pivota za poslední <= } q:=a[r]; 55
2 a[r]:=a[i+1]; a[i+1]:=q; prerovnej:=i+1; { vrátíme novou pozici pivota } { hlavní třídicí procedura, třídí a[l..r] } procedure QuickSort(a: Pole; l, r: integer); var m: integer; if l<r then { máme ještě co dělat? } m:=prerovnej(l,r); { m pozice pivota } QuickSort(l,m-1); { setřiď prvky napravo } QuickSort(m+1,r); { setřiď prvky nalevo } Bohužel volit pivota právě takto je docela nešikovné, protože se nám snadno může stát, že si vybereme nejmenší nebo největší prvek v úseku (rozmyslete si, jak by vypadala posloupnost, ve které to nastane pokaždé), takže dostaneme-li posloupnost délky N, rozdělíme ji na úseky délek N 2 a 1 (pivot se nepočítá), načež pokračujeme s úsekem délky N 2, ten rozdělíme na N 4 a 1, atd. Přitom pokaždé na přerovnání spotřebujeme čas lineární s velikostí úseku, celkem tedy O(N + (N 2) + (N 4) ) = O(N 2 ). Na druhou stranu pokud bychom si za pivota vybrali vždy medián z právě probíraných prvků (tj. prvek, který by se v setříděné posloupnosti nacházel uprostřed; pro sudý počet prvků zvolíme libovolný z obou prostředních prvků), dosáhneme daleko lepší složitosti O(N log N). To dokážeme snadno: Přerovnávací část algoritmu běží v čase lineárním vůči počtu prvků, které máme přerovnat. V prvním kroku QS pracujeme s celou posloupností, čili přerovnáme celkem N prvků. Následuje rekurzivní volání pro levou a pravou část posloupnosti (obě dlouhé (N 1)/2±1); přerovnávání v obou částech dohromady trvá opět O(N) a vzniknou tím části dlouhé nejvýše N/4. Zanoříme-li se v rekurzi do hloubky k, pracujeme s částmi dlouhými nejvýše N/2 k, které dohromady dají nejvýše N (všechny části dohromady dají prvky vstupní posloupnosti bez těch, které jsme si už zvolili jako pivoty). V hloubce log 2 N už jsou všechny části nejvýše jednoprvkové, takže se rekurze zastaví. Celkem tedy máme log 2 N hladin (hloubek) a na každé z nich trávíme lineární čas, dohromady O(N log N). V tomto důkazu jsme se ale dopustili jednoho podvodu: Zapomněli jsme na to, že také musíme medián umět najít. Jak z této nepříjemné situace ven? Naučit se počítat medián. Ale jak? Spokojit se se lžimediánem : Kdybychom si místo mediánu vybrali libovolný prvek, který bude v setříděné posloupnosti v prostřední polovině (čili alespoň čtvrtina prvků bude větší a alespoň čtvrtina menší než on), získáme také složitost 56
3 O(N log N), neboť úsek délky N rozložíme na úseky, které budou mít délky nejvýše (1 1/4) N, takže na k-té hladině budou úseky délek nejvýše (3/4) k N, čili hladin bude maximálně log 3/4 N = O(log N). Místo 1/4 by fungovala i libovolná jiná konstanta mezi nulou a jedničkou, ale ani to nám nepomůže k tomu, abychom uměli lžimedián najít. Recyklovat pravidlo typu vezmi poslední prvek a jen ho trochu vylepšit. To bohužel nebude fungovat, protože pokud budeme při výběru pivota hledět jenom na konstantní počet prvků, bude poměrně snadné přijít na vstup, pro který toto pravidlo bude dávat kvadratickou složitost, i když obvykle půjde dokázat, že takových vstupů je málo. (Také se tak často QS implementuje.) Volit pivota náhodně ze všech prvků zkoumaného úseku. K náhodné volbě samozřejmě potřebujeme náhodný generátor a s těmi je to svízelné, ale zkusme na chvíli věřit, že jeden takový máme nebo alespoň že máme něco s podobnými vlastnostmi. Jak nám to pomůže? Náhodně zvolený pivot nebude sice přesně uprostřed, ale s pravděpodobností 1/2 to bude lžimedián, takže po průměrně dvou hladinách se ke lžimediánu dopracujeme (rozmyslete si, proč, nebo nahlédněte do seriálu o pravděpodobnostních algoritmech v 16. ročníku KSP). Proto časová složitost takovéhoto randomizovaného QS bude v průměru 2-krát větší, než lžimediánového QS, čili v průměru také O(N log N). Jednoduše řečeno, zatímco fixní pravidlo nám dalo dobrý čas pro průměrný vstup, ale existovaly vstupy, na kterých bylo pomalé, randomizování nám dává dobrý průměrný čas pro všechny možné vstupy. Hledání k-tého nejmenšího prvku Nad QuickSortem jsme zvítězili, ale současně jsme při tom zjistili, že neumíme rychle najít medián. To tak nemůžeme nechat, a proto rovnou zkusíme vyřešit obecnější problém: najít k-tý nejmenší prvek (medián dostáváme pro k = N/2 ). První řešení této úlohy se nabízí samo. Načteme posloupnost do pole, prvky pole setřídíme nějakým rychlým algoritmem a kýžený k-tý nejmenší prvek nalezneme na k-té pozici v nyní již setříděném poli. Má to však jeden háček. Pokud prvky, které máme na vstupu, umíme pouze porovnat, pak nedosáhneme lepší časové složitosti (a to ani v průměrném případě) než O(N log N) rychleji prostě třídit nelze, důkaz můžete najít například v třídicí kuchařce. O něco rychlejší řešení je založeno na výše zmíněném algoritmu QuickSort (často se mu proto říká QuickSelect). Opět si vybereme pivota a posloupnost rozdělíme na prvky menší než pivot, pivota a prvky větší než pivot (pro jednoduchost budeme předpokládat, že žádné dva prvky posloupnosti nejsou stejné). Pokud se pivot nalézá na k-té pozici, je to hledaný k-tý nejmenší prvek posloupnosti, protože právě k 1 prvků je menších. Zbývají dva případy, kdy tomu tak není. Pakliže je pozice pivota v posloupnosti větší než k, pak se hledaný prvek nalézá nalevo od pivota a postačí rekurzivně najít k-tý nejmenší prvek mezi prvky nalevo. V opačném případě, kdy je pozice pivota menší než k, je hledaný prvek v posloupnosti napravo od pivota. Mezi těmito prvky však nebudeme hledat k-tý nejmenší prvek, ale (k p)-tý nejmenší prvek, kde p je pozice pivota v posloupnosti. 57
4 Časovou složitost rozebereme podobně jako u QuickSortu. Nešikovná volba pivota dává opět v nejhorším případě kvadratickou složitost. Pokud bychom naopak volili za pivota medián, budeme nejprve přerovnávat N prvků, pak jich zbude nejvýše N/2, pak nejvýše N/4 atd., což dohromady dává složitost O(N + N/2 + N/ ) = O(N). Pro lžimedián dostaneme rovněž lineární složitost a opět stejně jako u QS můžeme nahlédnout, že náhodnou volbou pivota dostaneme v průměru stejný čas jako se lžimediánem. Program bude velmi jednoduchý, využijeme-li přerovnávací proceduru od QS: function kty(var a: Pole; l, r, k: integer): integer; var x, z: integer; x:=prerovnej(a,l,r); { x je pozice pivota } z:=x-l+1; { pozice pivota vzhledem k [l..r] } if k=z then kty:=a[x] { k-tý nejmenší je pivot } else if k<z then kty:=kty(a,l,x-1,k) { k-tý nejmenší je nalevo } else kty:=kty(a,x+1,r,k-z); { napravo } k-tý nejmenší podruhé, tentokrát lineárně a bez náhody Existuje však algoritmus, který řeší naši úlohu lineárně, a to i v nejhorším případě. Je založený na ďábelském triku: zvolit vhodného pivota (jak ukážeme, bude to jeden ze lžimediánů) rekurzivním voláním téhož algoritmu. Zařídíme to takto: Pokud jsme dostali méně než 6 prvků, použijeme nějaký triviální algoritmus, například si posloupnost setřídíme a vrátíme k-tý prvek setříděné posloupnosti. Rozdělíme prvky posloupnosti na pětice; pokud není počet prvků dělitelný pěti, poslední pětici necháme nekompletní. Spočítáme medián každé pětice. To můžeme provést například rekurzivním zavoláním celého našeho algoritmu, čili v důsledku tříděním. (Také bychom si mohli pro 5 prvků zkonstruovat rozhodovací strom s nejmenším možným počtem porovnání, což je rychlejší, ale jednak pouze konstanta-krát, jednak je to daleko pracnější.) Máme tedy N/5 mediánů. V nich rekurzivně najdeme medián m (označíme mediány pětic za novou posloupnost a na ní začneme opět od prvního bodu). Přerovnáme vstupní posloupnost po quicksortovsku a jako pivota použijeme prvek m. Po přerovnání je pivot, podobně jako v předchozím algoritmu, na (z+1)-ní pozici v posloupnosti, kde z je počet prvků s menší hodnotou, než má pivot. Podobně jako u předchozího algoritmu, pokud je k = z + 1, pak je pivot m k-tým nejmenším prvkem posloupnosti. Není-li tomu tak a k < z + 1, budeme hledat k-tý nejmenší prvek mezi prvními z členy, v opačném případě, kdy k > z + 1, vyhledáme (k z + 1)-tého nejmenšího mezi posledními n z 1 prvky. 58
5 Řečeno s panem Pascalem: { potřebujeme přerovnávací funkci, která dostane hodnotu pivota jako parametr } function prerovnejp(var a: Pole; l, r, m: integer): integer; var q, p: integer; { nalezneme pozici pivota } p:=l; while a[p]<>m do p:=p+1; { pivota prohodíme s posledním prvkem } q:=a[p]; a[p]:=a[r]; a[r]:=q; { a zavoláme původní přerovnávací fci } prerovnejp := prerovnej(a,l,r); { hledání k-tého nejmenšího prvku z a[l..r] } function kth(var a: Pole; l, r, k: integer): integer; var medp:pole; { pole pro mediány pětic } i, j, q, x, pocet, m, z: integer; pocet:=r-l+1; { s kolika prvky pracujeme } if pocet<=1 then { pouze jeden prvek? } kth:=a[l] { výsledek nemůže být jiný } else if pocet<6 then { méně než 6 prvků } QuickSort(a,l,r); kth:=a[l+k-1]; end else { mnoho prvků, jde to tuhého } { rozdělíme prvky do pětic } q:=1; { zatím máme jednu pětici } i:=l; { levý okraj první pětice } j:=i+4; { pravý okraj první pětice } while j<=r do { procházíme celé pětice } QuickSort(a,i,j); medp[q]:=a[i+2]; { medián pětice } q:=q+1; { zvyš počet pětic } i:=i+5; { nastav levý okraj pětice } j:=j+5; { nastav pravý okraj pětice } { případnou neúplnou pětici můžeme ignorovat } m:=kth(medp,1,q-1,q div 2); { najdeme medián mediánů pětic } x:=prerovnejp(a,l,r,m); { přerovnej a zjisti, kde skončil pivot } z:=x-l+1; { pozice vzhledem k [l..r] } 59
6 if k=z then kth:=m { k-tý nejmenší je pivot } else if k<z then kth:=kth(a,l,x-1,k) { k-tý nejmenší nalevo } else kth:=kth(a,x+1,r,k-z); { napravo } Zbývá dokázat, že tato dvojitá rekurze má slíbenou lineární složitost. Zkusme se proto podívat, kolik prvků posloupnosti po přerovnání je větších než prvek m. Všech pětic je N/5 a alespoň polovina z nich (tedy N/10) má medián menší než m. V každé takové pětici pak navíc najdeme dva prvky menší než medián pětice, takže celkem existuje alespoň 3/10 N prvků menších než m. Větších tedy může být maximálně 7/10 N. Symetricky ukážeme, že i menších prvků může být nejvýše 7/10 N. Rozdělení na pětice, hledání mediánů pětic a přerovnávání trvá lineárně, tedy nejvýše cn kroků pro nějakou konstantu c > 0. Pak už algoritmus pouze dvakrát rekurzivně volá sám sebe: nejprve pro N/5 mediánů pětic, pak pro 7/10 N prvků před/za pivotem. Pro celkovou časovou složitost t(n) našeho algoritmu tedy platí: t(n) cn + t(n/5) + t(7/10 N). Nyní zbývá tuto rekurzivní nerovnici vyřešit, což provedeme drobným úskokem: uhodneme, že výsledkem bude lineární funkce, tedy že t(n) = dn pro nějaké d > 0. Dostaneme: dn (c + 1/5 d + 7/10 d) N. To platí např. pro d = 10c, takže opravdu t(n) = O(N). (Lépe už to nepůjde, jelikož na každé číslo se musíme podívat alespoň jednou.) Cvičení Při hledání k-tého nejmenšího prvku jsme předpokládali, že všechny prvky jsou různé. Prohlédněte si algoritmy pozorně a rozmyslete si, že budou fungovat i bez toho. Opravdu? Proč jsme zvolili zrovna pětice? Jak by to dopadlo pro trojice? A jak pro sedmice? Fungoval by takový algoritmus? Byl by také lineární? Ve výpočtu t(n) jsme si nedali pozor na neúplné pětice a také jsme předpokládali, že pětic je sudý počet. Ono se totiž nic zlého nemůže stát. Jak se to snadno nahlédne? Proč nestačí na začátku doplnit vstup nekonečny na délku, která je mocninou deseti? Kdybychom neuhodli, že t(n) je lineární, jak by se na to dalo přijít? Násobení dlouhých čísel Dalším pěkným příkladem na rozdělování a panování je násobení dlouhých čísel tak dlouhých, že se už nevejdou do integeru, takže s nimi musíme počítat po číslicích (ať už v jakékoliv soustavě teď zvolíme desítkovou, často se hodí třeba 256-ková). Klasickým školním algoritmem pro násobení na papíře to zvládneme na kvadratický počet operací, zde si předvedeme efektivnější způsob. 60
7 Libovolné 2N-ciferné číslo můžeme zapsat jako 10 N A+B, kde A a B jsou N-ciferná. Součin dvou takových čísel pak bude (10 N A + B) (10 N C + D) = (10 2N AC + 10 N (AD + BC) + BD). Sčítat dokážeme v lineárním čase, násobit mocninou deseti také (dopíšeme příslušný počet nul na konec čísla), N-ciferná čísla budeme násobit rekurzivním zavoláním téhož algoritmu. Pro časovou složitost tedy bude platit t(n) = cn + 4t(N/2). Nyní tuto rovnici můžeme snadno vyřešit, ale ani to dělat nebudeme, neboť nám vyjde, že t(n) N 2, čili jsme si oproti původnímu algoritmu vůbec nepomohli. Přijde trik. Místo čtyř násobení čísel poloviční délky nám budou stačit jen tři: spočteme AC, BD a (A+B) (C+D) = AC+AD+BC+BD, přičemž pokud od posledního součinu odečteme AC a BD, dostaneme přesně AD+BC, které jsme předtím počítali dvěma násobeními. Časová složitost nyní bude t(n) = c N + 3t(N/2). (Konstanta c je o něco větší než c, protože přibylo sčítání a odčítání, ale stále je to konstanta. My si ovšem zvolíme jednotku času tak, aby bylo c = 1, a ušetříme si tak spoustu psaní.) Jak naši rovnici vyřešíme? Zkusíme ji dosadit do sebe samé a pozorovat, co se bude dít: t(n) = N + 3(N/2 + 3t(N/4)) = = N + 3/2 N + 9t(N/4) = = N + 3/2 N + 9/4 N + 27t(N/8) =... = = N + 3/2 N k 1 /2 k 1 N + 3 k t(n/2 k ). Pokud zvolíme k = log 2 N, vyjde N/2 k = 1, čili t(n/2 k ) = t(1) = d, kde d je nějaká konstanta. To znamená, že: t(n) = N (1 + 3/2 + 9/ (3/2) k 1 ) + 3 k d. Výraz v závorce je součet prvních k členů geometrické řady s kvocientem 3/2, čili ((3/2) k 1)/(3/2 1) = O((3/2) k ). Tato funkce však roste pomaleji než zbylý člen 3 k d, takže ji klidně můžeme zanedbat a zabývat se pouze oním posledním členem: 3 k = 2 k log 2 3 = 2 log 2 N log 2 3 = (2 log 2 N ) log 2 3 = N log 2 3 N Konstanta d se nám schová do O-čka, takže algoritmus má časovou složitost přibližně O(N 1.58 ). Existují i rychlejší algoritmy se složitostí až O(N), ale ty jsou mnohem ďábelštější a pro malá N se to sotva vyplatí. Program si pro dnešek odpustíme, šetříme naše lesy (tedy alespoň trošku). Úloha : Hluboký les David Matoušek a Martin Mareš Pomozte nám v hledání nejhlubšího lesa. Ten se nachází na místě, kde jsou dva stromy, které jsou u sebe nejblíže ze všech v lese. Váš program dostane na vstupu číslo N a dále N řádků s reálnými souřadnicemi jednotlivých stromů. V případě, že je dvojic nejbližších stromů víc, stačí vypsat libovolnou z nich. 61
8 Příklad: Pro N = 4 a stromy by měl program vypsat: Stromy 2 a 3 jsou si k sobě nejblíže. Úloha : Počet inverzí Je dána posloupnost celých čísel P 1, P 2,..., P N. Čísla P i a P j jsou v inverzi, pokud i < j a zároveň P i > P j. Inverze je tedy porucha ve vzestupném uspořádání posloupnosti. Vašim úkolem je zjistit, kolik inverzí posloupnost obsahuje. Na prvním řádku vstupu je číslo N, na druhém řádku následuje N celých čísel v desítkovém zápisu oddělených mezerami. Počet inverzí vypište na standardní výstup. Čísel v posloupnosti je maximálně Příklad: Pro vstup: vypište na standardní výstup 8. 62
Milí řešitelé! Druhá série devatenáctého ročníku KSP
Milí řešitelé! Pomalu přichází zima, a abyste měli o dlouhých večerech co dělat, máme pro vási druhou sérii našeho semináře. Neobsahuje ještě vaše opravená řešení první série, abyste na nové příklady nemuseli
NPRG030 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í
Základy algoritmizace a programování
Základy algoritmizace a programování Složitost algoritmů. Třídění Přednáška 8 16. listopadu 2009 Který algoritmus je "lepší"? Různé algoritmy, které řeší stejnou úlohu zbytek = p % i; zbytek = p - p/i*i;
Jednoduchá exponenciální rovnice
Jednoduchá exponenciální rovnice Z běžné rovnice se exponenciální stává, pokud obsahuje proměnnou v exponentu. Obecně bychom mohli exponenciální rovnici zapsat takto: a f(x) = b g(x), kde a, b > 0. Typickým
Na 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ší
DobSort. Ú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),
Anotace. Informace o praktiku z programování!!! Direktivy překladače Soubory (textové) Quicksort Metoda rozděl a panuj
Anotace Informace o praktiku z programování!!! Direktivy překladače Soubory (textové) Quicksort Metoda rozděl a panuj Direktivy překladače Překladač kontroluje plno věcí, například: zda nekoukáme za konec
Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012
Obecná informatika Přednášející Putovních přednášek Matematicko-fyzikální fakulta Univerzity Karlovy v Praze Podzim 2012 Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 1 / 18
Algoritmy 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á??
M - Kvadratické rovnice a kvadratické nerovnice
M - Kvadratické rovnice a kvadratické nerovnice Určeno jako učební tet pro studenty dálkového studia. VARIACE 1 Tento dokument byl kompletně vytvořen, sestaven a vytištěn v programu dosystem - EduBase.
Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem
Test prvočíselnosti Úkol: otestovat dané číslo N, zda je prvočíslem 1. zkusit všechny dělitele od 2 do N-1 časová složitost O(N) cca N testů 2. stačí zkoušet všechny dělitele od 2 do N/2 (větší dělitel
Mimo samotné správnosti výsledku vypočteného zapsaným algoritmem je ještě jedno
12 Délka výpočtu algoritmu Mimo samotné správnosti výsledku vypočteného zapsaným algoritmem je ještě jedno neméně důležité hledisko k posouzení vhodnosti algoritmu k řešení zadané úlohy. Jedná se o čas,
Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.
Intervalové stromy Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme průběžně provádět tyto dvě operace: 1. Změna jednoho čísla v posloupnosti. 2. Zjištění součtu čísel
přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:
Metody řazení ve vnitřní a vnější paměti. Algoritmy řazení výběrem, vkládáním a zaměňováním. Heapsort, Shell-sort, Radix-sort, Quicksort. Řazení sekvenčních souborů. Řazení souborů s přímým přístupem.
Anotace. pointery (pars prima). Martin Pergel,
Anotace Základní třídicí algoritmy, jednotky oddělený překlad, pointery (pars prima). Problém třídění jednoduché třídicí algoritmy Bublinkové třídění (BubbleSort), zatřid ování alias třídění přímým vkládáním
V exponenciální rovnici se proměnná vyskytuje v exponentu. Obecně bychom mohli exponenciální rovnici zapsat takto:
Eponenciální rovnice V eponenciální rovnici se proměnná vyskytuje v eponentu. Obecně bychom mohli eponenciální rovnici zapsat takto: a ( ) f ( ) f kde a > 0, b > 0 b Příkladem velmi jednoduché eponenciální
Úlohy klauzurní části školního kola kategorie A
62. ročník matematické olympiády Úlohy klauzurní části školního kola kategorie A 1. V obdélníku ABCD o stranách AB = 9, BC = 8 leží vzájemně se dotýkající kružnice k 1 (S 1, r 1 ) a k 2 (S 2, r 2 ) tak,
1.5.7 Znaky dělitelnosti
1.5.7 Znaky dělitelnosti Předpoklady: 010506 Pedagogická poznámka: Příklad 1 je dořešení zadání z minulé hodiny. Je třeba se u něj nezdržovat. Př. 1: Na základní škole ses učil pravidla, podle kterých
Obsah. Euler-Fermatova věta. Reziduální aritmetika. 3. a 4. přednáška z kryptografie
Obsah Počítání modulo n a jeho časová složitost 3. a 4. přednáška z kryptografie 1 Počítání modulo n - dokončení Umocňování v Zn 2 Časová složitost výpočtů modulo n Asymptotická notace Základní aritmetické
2.7.6 Rovnice vyšších řádů
6 Rovnice vyšších řádů Předpoklady: 50, 05 Pedagogická poznámka: Pokud mám jenom trochu čas probírám látku této hodiny ve dvou vyučovacích hodinách V první probíráme separaci kořenů, v druhé pak snížení
(Úlohy z MO kategorie P, 32. část)
Rozklady na součet (Úlohy z MO kategorie P, 32. část) PAVEL TÖPFER Matematicko-fyzikální fakulta UK, Praha Náš dlouhodobý seriál o úlohách z Matematické olympiády kategorie P se dnes zastaví ve 39. ročníku
1.5.2 Číselné soustavy II
.. Číselné soustavy II Předpoklady: Př. : Převeď do desítkové soustavy čísla. a) ( ) b) ( ) 4 c) ( ) 6 = + + + = 7 + 9 + = a) = 4 + 4 + 4 = 6 + 4 + = 9 b) 4 = 6 + 6 + 6 = 6 + 6 + = 6 + + = 69. c) 6 Pedagogická
Biná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
13. Třídící algoritmy a násobení matic
13. Třídící algoritmy a násobení matic Minulou přednášku jsme probírali QuickSort, jeden z historicky prvních třídících algoritmů, které překonaly kvadratickou složitost aspoň v průměrném případě. Proč
2.6.5 Další použití lineárních lomených funkcí
.6.5 Další použití lineárních lomených funkcí Předpoklady: 60, 603 U předchozích funkcí jsme měli vždy s funkcemi rovnice existují lineární lomené rovnice a nerovnice? Jak by vypadaly? Například takto:
2.7.6 Rovnice vyšších řádů
6 Rovnice vyšších řádů Předpoklady: 50, 05 Pedagogická poznámka: Pokud mám jenom trochu čas probírám látku této hodiny ve dvou vyučovacích hodinách V první probíráme separaci kořenů, v druhé pak snížení
Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují
Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují 1. u + v = v + u, u, v V 2. (u + v) + w = u + (v + w),
7 = 3 = = Učivo Vysvětlení Př. + pozn. Zlomek = vyjádření části celku 3 část snědla jsem 3 kousky
0 Učivo Vysvětlení Př. + pozn. Zlomek vyjádření části celku část snědla jsem kousky celek a pizza byla rozdělena na kousky Pojem zlomek Vyjádření zlomku Základní tvar: čitatel a jmenovatel jsou nesoudělná
Zpracoval: hypspave@fel.cvut.cz 7. Matematická indukce a rekurse. Řešení rekurentních (diferenčních) rovnic s konstantními koeficienty.
Zpracoval: hypspave@fel.cvut.cz 7. Matematická indukce a rekurse. Řešení rekurentních (diferenčních) rovnic s konstantními koeficienty. (A7B01MCS) I. Matematická indukce a rekurse. Indukční principy patří
Polynomy. Mgr. Veronika Švandová a Mgr. Zdeněk Kříž, Ph. D. 1.1 Teorie Zavedení polynomů Operace s polynomy...
Polynomy Obsah Mgr. Veronika Švandová a Mgr. Zdeněk Kříž, Ph. D. 1 Základní vlastnosti polynomů 2 1.1 Teorie........................................... 2 1.1.1 Zavedení polynomů................................
Úlohy klauzurní části školního kola kategorie A
6. ročník matematické olympiády Úlohy klauzurní části školního kola kategorie A. V oboru reálných čísel řešte soustavu rovnic y + 3x = 4x 3, x + 3y = 4y 3. 2. V rovině uvažujme lichoběžník ABCD se základnami
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
( ) Jako základ mocnin nemusíme používat jen 10. Pokud není jasné, že číslo je uvedeno v desítkové soustavě, píšeme jej takto: ( 12054 ) 10
.. Číselné soustavy I Předpoklady: základní početní operace Pedagogická poznámka: Tato a následující hodina není součástí klasické gymnaziální sady. Upřímně řečeno nevím proč. Jednak se všichni studenti
VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY
VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY Jan Krejčí 31. srpna 2006 jkrejci@physics.ujep.cz http://physics.ujep.cz/~jkrejci Obsah 1 Přímé metody řešení soustav lineárních rovnic 3 1.1 Gaussova eliminace...............................
Báze a dimenze vektorových prostorů
Báze a dimenze vektorových prostorů Buď (V, +, ) vektorový prostor nad tělesem (T, +, ). Nechť u 1, u 2,..., u n je konečná posloupnost vektorů z V. Existují-li prvky s 1, s 2,..., s n T, z nichž alespoň
7.5.3 Hledání kružnic II
753 Hledání kružnic II Předpoklady: 750 Pedagogická poznámka: Tato hodina patří mezi vůbec nejtěžší Není reálné předpokládat, že by většina studentů dokázala samostatně přijít na řešení, po čase na rozmyšlenou
1 Mnohočleny a algebraické rovnice
1 Mnohočleny a algebraické rovnice 1.1 Pojem mnohočlenu (polynomu) Připomeňme, že výrazům typu a 2 x 2 + a 1 x + a 0 říkáme kvadratický trojčlen, když a 2 0. Číslům a 0, a 1, a 2 říkáme koeficienty a písmenem
Mocniny. Nyní si ukážeme jak je to s umocňováním záporných čísel.
Mocniny Mocnina je matematická funkce, která (jednoduše řečeno) slouží ke zkrácenému zápisu násobení. Místo toho abychom složitě psali 2 2 2 2 2, napíšeme jednoduše V množině reálných čísel budeme definovat
Věta 12.3 : Věta 12.4 (princip superpozice) : [MA1-18:P12.7] rovnice typu y (n) + p n 1 (x)y (n 1) p 1 (x)y + p 0 (x)y = q(x) (6)
1. Lineární diferenciální rovnice řádu n [MA1-18:P1.7] rovnice typu y n) + p n 1 )y n 1) +... + p 1 )y + p 0 )y = q) 6) počáteční podmínky: y 0 ) = y 0 y 0 ) = y 1 y n 1) 0 ) = y n 1. 7) Věta 1.3 : Necht
Anotace. Jednotky (tvorba a využití), struktury (typ record),
Anotace Jednotky (tvorba a využití), struktury (typ record), medián v lineárním čase. Jednotky oddělený překlad Občas máme obecně využitelné funkce, které chceme používat v různých programech současně.
říkali spíš latinsky: divide et impera). Tato zásada se pak osvědčila nejen ve starořímské
1. Rozdìl a panuj Potkáme-li spletitý problém, často pomáhá rozdělit ho na jednodušší části a s těmi se pak vypořádat postupně. Jak říkali staří Římané: rozděl a panuj (oni to říkali spíš latinsky: divide
Praha & EU: investujeme do vaší budoucnosti. Daniel Turzík, Miroslava Dubcová,
E-sbírka příkladů Seminář z matematiky Evropský sociální fond Praha & EU: investujeme do vaší budoucnosti Daniel Turzík, Miroslava Dubcová, Pavla Pavlíková Obsah 1 Úpravy výrazů................................................................
- funkce, které integrujete aproximujte jejich Taylorovými řadami a ty následně zintegrujte. V obou případech vyzkoušejte Taylorovy řady
Vzorové řešení domácího úkolu na 6. 1. 1. Integrály 1 1 x2 dx, ex2 dx spočítejte přibližně následují metodou - funkce, které integrujete aproximujte jejich Taylorovými řadami a ty následně zintegrujte.
Hledání v textu algoritmem Boyer Moore
Zápočtová práce z Algoritmů a Datových Struktur II (NTIN061) Hledání v textu algoritmem Boyer Moore David Pěgřímek http://davpe.net Algoritmus Boyer Moore[1] slouží k vyhledání vzoru V v zadaném textu
M - Příprava na 1. zápočtový test - třída 3SA
M - Příprava na 1. zápočtový test - třída 3SA Autor: Mgr. Jaromír JUŘEK Kopírování a jakékoliv další využití výukového materiálu je povoleno pouze s uvedením odkazu na www.jarjurek.cz. VARIACE 1 Tento
6.1.2 Operace s komplexními čísly
6.. Operace s komplexními čísly Předpoklady: 60 Komplexním číslem nazýváme výraz ve tvaru a + bi, kde a, b jsou reálná čísla a i je číslo, pro něž platí i =. V komplexním čísle a + bi se nazývá: číslo
10. Soustava lineárních rovnic - substituční metoda
@112 10. Soustava lineárních rovnic - substituční metoda Jedna z metod, která se používá při řešení soustavy lineárních rovnic, se nazývá substituční. Nejlépe si metodu ukážeme na příkladech. Příklad:
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
2.3.7 Lineární rovnice s více neznámými I
..7 Lineární rovnice s více neznámými I Předpoklady: 01 Pedagogická poznámka: Následující hodinu považuji za velmi důležitou hlavně kvůli pochopení soustav rovnic, které mají více než jedno řešení. Proto
V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti
Kapitola 5 Vektorové prostory V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti operací sčítání a násobení
Úlohy krajského kola kategorie C
67. ročník matematické olympiády Úlohy krajského kola kategorie C 1. Najděte nejmenší přirozené číslo končící čtyřčíslím 2018, které je násobkem čísla 2017. 2. Pro celá čísla x, y, z platí x 2 + y z =
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
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í
Projekt OPVK - CZ.1.07/1.1.00/ Matematika pro všechny. Univerzita Palackého v Olomouci
Projekt OPVK - CZ.1.07/1.1.00/26.0047 Matematika pro všechny Univerzita Palackého v Olomouci Tematický okruh: Závislosti a funkční vztahy Gradovaný řetězec úloh Téma: geometrická posloupnost, geometrická
Algoritmus pro generování normálních magických čtverců
1.1 Úvod Algoritmus pro generování normálních magických čtverců Naprogramoval jsem v Matlabu funkci, která dokáže vypočítat magický čtverec libovolného přípustného rozměru. Za pomocí tří algoritmů, které
CVIČNÝ TEST 15. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17
CVIČNÝ TEST 15 Mgr. Tomáš Kotler OBSAH I. Cvičný test 2 II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17 I. CVIČNÝ TEST VÝCHOZÍ TEXT K ÚLOZE 1 Je dána čtvercová mřížka, v níž každý čtverec má délku
INFORMATIKA. Vybrané podposloupnosti
INFORMATIKA Vybrané podposloupnosti (Úlohy z MO kategorie P, 30. část) PAVEL TÖPFER Matematicko-fyzikální fakulta UK, Praha V našem seriálu putujícím po zajímavých úlohách Matematické olympiády - kategorie
0. Lineární rekurence Martin Mareš, 2010-07-04
0 Lineární rekurence Martin Mareš, 2010-07-04 V tomto krátkém textu se budeme zabývat lineárními rekurencemi, tj posloupnostmi definovanými rekurentní rovnicí typu A n+k = c 0 A n + c 1 A n+1 + + c k 1
Doba běhu daného algoritmu/programu. 1. Který fragment programu z následujících dvou proběhne rychleji?
1 Doba běhu daného algoritmu/programu 1. Který fragment programu z následujících dvou proběhne rychleji? int n = 100; int sum = 0; for (i = 0; i < n; i++) for (j = 0; j < i; j++) sum += i+j; int n = 75;
Šablona pro zadávání otázek pro přijímací řízení pro akademický rok 2009/2010
Šablona pro zadávání otázek pro přijímací řízení pro akademický rok 00/010 Zadavatel: Ekonomický přehled: kód 1 Matematické myšlení: kód Společensko historický přehled: kód Zadejte kód místo x do níže
Reprezentace 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)
a počtem sloupců druhé matice. Spočítejme součin A.B. Označme matici A.B = M, pro její prvky platí:
Řešené příklady z lineární algebry - část 1 Typové příklady s řešením Příklady jsou určeny především k zopakování látky před zkouškou, jsou proto řešeny se znalostmi učiva celého semestru. Tento fakt se
Komisionální přezkoušení 1T (druhé pololetí) 2 x. 1) Z dané rovnice vypočtěte neznámou x:. 2) Určete, pro která x R není daný výraz definován:
1) Z dané rovnice vypočtěte neznámou :. ) Určete, pro která R není daný výraz definován: 3) Určete obor hodnot funkce Komisionální přezkoušení 1T (druhé pololetí) f : y 4 3. 4 8 5 1 4) Vyšetřete vzájemnou
Jednoduché cykly 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
Jednoduché cykly Tento oddíl obsahuje úlohy na první procvičení práce s cykly. Při řešení každé ze zde uvedených úloh stačí použít vedle podmíněných příkazů jen jediný cyklus. Nepotřebujeme používat ani
Algoritmizace prostorových úloh
INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Třídění, vyhledávání Daniela Szturcová
CVIČNÝ TEST 5. OBSAH I. Cvičný test 2. Mgr. Václav Zemek. II. Autorské řešení 6 III. Klíč 17 IV. Záznamový list 19
CVIČNÝ TEST 5 Mgr. Václav Zemek OBSAH I. Cvičný test 2 II. Autorské řešení 6 III. Klíč 17 IV. Záznamový list 19 I. CVIČNÝ TEST 1 Zjednodušte výraz (2x 5) 2 (2x 5) (2x + 5) + 20x. 2 Určete nejmenší trojciferné
Řešení úloh z TSP MU SADY S 1
Řešení úloh z TSP MU SADY S 1 projekt RESENI-TSP.CZ úlohy jsou vybírány z dříve použitých TSP MU autoři řešení jsou zkušení lektoři vzdělávací agentury Kurzy-Fido.cz Masarykova univerzita nabízí uchazečům
S funkcemi můžeme počítat podobně jako s čísly, sčítat je, odečítat, násobit a dělit případně i umocňovat.
@08. Derivace funkce S funkcemi můžeme počítat podobně jako s čísly, sčítat je, odečítat, násobit a dělit případně i umocňovat. Definice: Součet funkce f a g je takový předpis, taková funkce h, která každému
Západočeská univerzita v Plzni FAKULTA PEDAGOGICKÁ KATEDRA MATEMATIKY, FYZIKY A TECHNICKÉ VÝCHOVY
Západočeská univerzita v Plzni FAKULTA PEDAGOGICKÁ KATEDRA MATEMATIKY, FYZIKY A TECHNICKÉ VÝCHOVY VYBRANÉ KAPITOLY Z ELEMENTÁRNÍ ALGEBRY DIPLOMOVÁ PRÁCE Bc. Jiří KRYČ Učitelství pro 2. stupeň ZŠ, obor
Univerzita Karlova v Praze Pedagogická fakulta
Univerzita Karlova v Praze Pedagogická fakulta SEMINÁRNÍ PRÁCE Z METOD ŘEŠENÍ 1 TEORIE ČÍSEL 000/001 Cifrik, M-ZT Příklad ze zadávacích listů 10 101 Dokažte, že číslo 101 +10 je dělitelné číslem 51 Důkaz:
Soustavy více rovnic o více neznámých III
2..15 Soustavy více rovnic o více neznámých III Předpoklady: 214 Největší problém při řešení soustav - výroba trojúhelníkového tvaru (tedy vyrábění nul). Postup v dosavadních příkladech byl rychlý - využíval
Lomené výrazy sčítání a odčítání lomených výrazů
VY_32_INOVACE_M-Ar 8.,9.15 Lomené výrazy sčítání a odčítání lomených výrazů Anotace: Prezentace připomene sčítání a odčítání zlomků. Žák použije poznatky zopakované při počítání se zlomky u zjišťování
každého programátora, a tak není divu, že třídicí algoritmy jsou jedny z nejstudovanějších.
Třídění Pojem třídění je možná maličko nepřesný, často se však používá. Nehodláme data (čísla, řetězce a jiné) rozdělovat do nějakých tříd, ale přerovnat je do správného pořadí, od nejmenšího po největší
Hledá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
A4B33ALG 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
Rekurze. 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
Rozšiřování = vynásobení čitatele i jmenovatele stejným číslem různým od nuly
Rozšiřování a krácení zlomků Rozšiřování vynásobení čitatele i jmenovatele stejným číslem různým od nuly rozšířený zlomek vznikl tak, že jsme čitatel i jmenovatel původního zlomku vynásobili číslem rozšířený
M - Příprava na pololetní písemku č. 1
M - Příprava na pololetní písemku č. 1 Určeno pro třídy 3SA, 3SB. VARIACE 1 Tento dokument byl kompletně vytvořen, sestaven a vytištěn v programu dosystem - EduBase. Více informací o programu naleznete
1.3. Číselné množiny. Cíle. Průvodce studiem. Výklad
1.3. Cíle Cílem kapitoly je seznámení čtenáře s axiomy číselných oborů a jejich podmnožin (intervalů) a zavedení nových pojmů, které nejsou náplní středoškolských osnov. Průvodce studiem Vývoj matematiky
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í
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
Diferenciální rovnice 1
Diferenciální rovnice 1 Základní pojmy Diferenciální rovnice n-tého řádu v implicitním tvaru je obecně rovnice ve tvaru,,,, = Řád diferenciální rovnice odpovídá nejvyššímu stupni derivace v rovnici použitému.
7. Geometrické algoritmy (sepsal Pavel Klavík)
7. Geometrické algoritmy (sepsal Pavel Klavík) Ukážeme si několik základních algoritmů na řešení geometrických problémů v rovině. Proč zrovna v rovině? Inu, jednorozměrné problémy bývají triviální a naopak
ARITMETICKÉ OPERACE V BINÁRNÍ SOUSTAVĚ
Sčítání binárních čísel Binární čísla je možné sčítat stejným způsobem, jakým sčítáme čísla desítková. Příklad je uveden v tabulce níže. K přenosu jedničky do vyššího řádu dojde tehdy, jeli výsledkem součtu
CVIČNÝ TEST 12. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 19 IV. Záznamový list 21
CVIČNÝ TEST 12 Mgr. Tomáš Kotler OBSAH I. Cvičný test 2 II. Autorské řešení 6 III. Klíč 19 IV. Záznamový list 21 I. CVIČNÝ TEST VÝCHOZÍ TEXT K ÚLOZE 1 Písmena A, B, C a D vyjadřují každé jednu z číslic
Výběr báze. u n. a 1 u 1
Výběr báze Mějme vektorový prostor zadán množinou generátorů. To jest V = M, kde M = {u,..., u n }. Pokud je naším úkolem najít nějakou bázi V, nejpřímočařejším postupem je napsat si vektory jako řádky
Prohledá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é
3. Reálná čísla. většinou racionálních čísel. V analytických úvahách, které praktickým výpočtům
RACIONÁLNÍ A IRACIONÁLNÍ ČÍSLA Význačnými množinami jsou číselné množiny K nejvýznamnějším patří množina reálných čísel, obsahující jako podmnožiny množiny přirozených, celých, racionálních a iracionálních
2. Určete jádro KerL zobrazení L, tj. nalezněte alespoň jednu jeho bázi a určete jeho dimenzi.
Řešené příklady z lineární algebry - část 3 Typové příklady s řešením Příklad 3.1: Zobrazení L: P 3 R 23 je zobrazení z prostoru P 3 všech polynomů do stupně 3 (včetně nulového polynomu) do prostoru R
1. Rozdìl a panuj Hanojské vì¾e
1. Rozdìl a panuj Potkáme-li spletitý problém, často pomáhá rozdělit ho na jednodušší části a s těmi se pak vypořádat postupně. Jak říkali staří Římané: rozděl a panuj. 1 Tato zásada se pak osvědčila nejen
Union-Find problém. Kapitola 1
Kapitola 1 Union-Find problém Motivace: Po světě se toulá spousta agentů. Často se stává, že jeden agent má spoustu jmen/přezdívek, které používá například při rezervaci hotelu, restaurace, na návštěvě
Lingebraické kapitolky - Počítání s maticemi
Lingebraické kapitolky - Počítání s maticemi Jaroslav Horáček KAM MFF UK 20 Rozehřívačka: Definice sčítání dvou matic a násobení matice skalárem, transpozice Řešení: (A + B ij A ij + B ij (αa ij α(a ij
Funkce a lineární funkce pro studijní obory
Variace 1 Funkce a lineární funkce pro studijní obory Autor: Mgr. Jaromír JUŘEK Kopírování a jakékoliv další využití výukového materiálu je povoleno pouze s uvedením odkazu na www.jarjurek.cz. 1. Funkce
1 Mnohočleny a algebraické rovnice
1 Mnohočleny a algebraické rovnice 1.1 Pojem mnohočlenu (polynomu) Připomeňme, že výrazům typu a 2 x 2 + a 1 x + a 0 říkáme kvadratický trojčlen, když a 2 0. Číslům a 0, a 1, a 2 říkáme koeficienty a písmenem
Algebraické výrazy - řešené úlohy
Algebraické výrazy - řešené úlohy Úloha č. 1 Určete jeho hodnotu pro =. Určete, pro kterou hodnotu proměnné je výraz roven nule. Za proměnnou dosadíme: = a vypočteme hodnotu výrazu. Nejprve zapíšeme rovnost,
Kvadratické rovnice. Řešení kvadratických rovnic. Kvadratická rovnice bez lineárního členu. Příklad 1:
Kvadratické rovnice V zadání lineární rovnice se může vyskytovat neznámá ve vyšší než první mocnině. Vždy ale při úpravě tato neznámá ve vyšší než první mocnině zmizí, odečte se, protože se vyskytuje na
Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace
Vektory a matice Aplikovaná matematika I Dana Říhová Mendelu Brno Obsah 1 Vektory Základní pojmy a operace Lineární závislost a nezávislost vektorů 2 Matice Základní pojmy, druhy matic Operace s maticemi
( ) ( ) 9.2.10 Binomické rozdělení. Předpoklady: 9209
9..1 Binomické rozdělení Předpoklady: 99 Př. 1: Basketbalista hází trestný hod (šestku) s pravděpodobností úspěchu,9. Urči pravděpodobnosti, že z pěti hodů: a) dá košů; b) dá alespoň jeden koš; c) dá nejdříve
= - rovnost dvou výrazů, za x můžeme dosazovat různá čísla, tím měníme
- FUNKCE A ROVNICE Následující základní znalosti je nezbytně nutné umět od okamžiku probrání až do konce kapitoly (většinou do napsání čtvrtletní písemné práce, na výjimky z tohoto pravidla bude upozorněno).
IB108 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á
Různé algoritmy mají různou složitost
/ 1 Různé algoritmy mají různou složitost 1/ 1 Rychlost... Jeden algoritmus (program, postup, metoda ) je rychlejší než druhý. Co ta věta znamená?? 2/ 1 Asymptotická složitost y y x x Každému algoritmu
Už známe datové typy pro representaci celých čísel i typy pro representaci
Dlouhá čísla Tomáš Holan, dlouha.txt, Verse: 19. února 2006. Už známe datové typy pro representaci celých čísel i typy pro representaci desetinných čísel. Co ale dělat, když nám žádný z dostupných datových