informatika:maturita:16a
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze | ||
| informatika:maturita:16a [12. 03. 2019, 08.24] – [Djikstrův algoritmus] xbenes2 | informatika:maturita:16a [11. 02. 2026, 09.47] (aktuální) – xwolf4 | ||
|---|---|---|---|
| Řádek 3: | Řádek 3: | ||
| ===== Pojmy ===== | ===== Pojmy ===== | ||
| - | * **Algoritmus** | + | * **Algoritmus** |
| - | * **Program** | + | * **Program** |
| - | * **Programovací jazyk** | + | * **Programovací jazyk** |
| ===== Pravidla programovacích jazyků ===== | ===== Pravidla programovacích jazyků ===== | ||
| - | * **Syntaxe** (forma) | + | * **Syntaxe** (forma) |
| - | * **Sémantika** (význam) | + | * **Sémantika** (význam) |
| - | + | * //int number | |
| - | + | * Dojde k inicializaci deklarované | |
| - | ===== Vlastnosti algoritmus ===== | + | |
| - | * **Determinovanost** - v každé situaci musí být naprosto zřejmé, co a jak se má provést, jak má provádění algoritmu pokračovat, | + | |
| - | * **Obecnost** - algoritmus by neměl řešit jeden konkrétní problém (například 5 x 5), ale měl by nabízet obecné řešení daného problému (například X x Y) | + | |
| - | * **Finitivnost** - algoritmus by měl vždy mít omezený počet kroků, po kterých skončí | + | |
| - | * **Resultativnost** - musí mít nějaký výstup, který je řešením daného úkolu | + | |
| - | * **Korektnost** - výstup by měl být správně | + | |
| - | * **Efektivita** - dělí se na paměťovou efektivitu (náročnost na paměť) a výpočetní efektivitu (náročnost na výpočet), tyto dvě vlastnosti jsou většinou k sobě ve vztahu nepřímé úměry | + | |
| + | ===== Vlastnosti algoritmu ===== | ||
| + | * **Determinovanost** (Určenost) | ||
| + | * Binární vlastnost - Odpovídá na otázku: "Je výsledek algoritmu vždy stejný pro stejné vstupní hodnoty?" | ||
| + | * Algoritmus není determinovatelný pokud má vnitřní stav (například počítá kolikrát algoritmus byl spuštěn) nebo pokud používá skutečně náhodné hodnoty. | ||
| + | * Základní kámen funkcionálního programování a jednou z podmínek takzvané [[https:// | ||
| + | * **Obecnost** | ||
| + | * Popisuje pro jakou množinu vstupů algoritmus funguje. | ||
| + | * Analogií obecnosti algoritmu je definiční obor funkce. | ||
| + | * Algoritmus by měl řešit typovou úlohu co nejvíce obecně, například implementace kosinové věty je obecnější než implementace pythagorovy věty (funguje pro větší množinu úhlů). | ||
| + | * **Finitivnost** (Konečnost) | ||
| + | * Binární vlastnost - Odpovídá na otázku: " | ||
| + | * **Resultativnost** (Výslednost) | ||
| + | * Binární vlastnost - Odpovídá jestli má pro daný vstup algoritmus nějaký výstup nebo ne. | ||
| + | * Algoritmus není resultativní pokud vrací void a neměnní vnější proměnné. | ||
| + | * **Korektnost** (Správnost) | ||
| + | * Binární vlastnost - Vydá algoritmus pro všechny vstupy správný výsledek? | ||
| + | * **Efektivita** | ||
| + | * Dělí se na paměťovou efektivitu (náročnost na paměť) a výpočetní efektivitu (náročnost na výpočet), tyto dvě vlastnosti jsou často k sobě ve vztahu nepřímé úměry (například dynamické programování). | ||
| + | * Primárně se určuje pomocí velké O notace. | ||
| + | * Sekundárně se určuje podle praktických záležitostí (například cache miss nebo CPU branch prediction) | ||
| + | {{: | ||
| ===== Známé algoritmy ===== | ===== Známé algoritmy ===== | ||
| ==== Eratosthenovo síto ==== | ==== Eratosthenovo síto ==== | ||
| - | Algoritmus pro získání všech prvočísel od dvou po dané číslo. Vytvoříme si pole všech čísel obsažených v daném rozsahu. Postupujeme postupně přes všechna čísla rozsahu a odebíráme z něj čísla, která jsou násobky těchto čísel. Algoritmus končí pokud je z pole odebráno poslední | + | Algoritmus pro získání všech prvočísel od dvou po dané číslo. |
| + | |||
| + | Postup: | ||
| + | |||
| + | Krok 1: Vytvoření seznamu, obsahujícího | ||
| + | |||
| + | Krok 2: První | ||
| + | |||
| + | Krok 3: Opakuj krok 2, dokud není původní seznam prázdný. | ||
| + | |||
| + | Krok 4: Seznam prvočísel obsahuje | ||
| + | |||
| + | Časová složitost: O(n log(log(n))) | ||
| + | |||
| + | Paměťová složitost: O(1) | ||
| [[https:// | [[https:// | ||
| + | |||
| ==== Euklidův algoritmus ==== | ==== Euklidův algoritmus ==== | ||
| + | |||
| Algoritmus pro výpočet největšího společného dělitele (dále jen NSD) dvou čísel. | Algoritmus pro výpočet největšího společného dělitele (dále jen NSD) dvou čísel. | ||
| - | Nejlépe se to asi ukáže na příkladu. Máme zadaná | + | Zde příklad: jsou zadána |
| Postup: | Postup: | ||
| Řádek 39: | Řádek 69: | ||
| * Nyní zopakujeme první krok, ale s dělením menšího čísla zbytkem po dělení (15 = 3 * 5 + **0**) | * Nyní zopakujeme první krok, ale s dělením menšího čísla zbytkem po dělení (15 = 3 * 5 + **0**) | ||
| * Vyšel nám zbytek 0, takže NSD je rovno 5, pokud by nám nevyšel zbytek 0 aplikovali bychom znovu krok jedna | * Vyšel nám zbytek 0, takže NSD je rovno 5, pokud by nám nevyšel zbytek 0 aplikovali bychom znovu krok jedna | ||
| + | |||
| + | Časová složitost: O(log(min(a, | ||
| + | |||
| + | Paměťová složitost: O(1) | ||
| [[http:// | [[http:// | ||
| + | |||
| + | |||
| ==== Djikstrův algoritmus ==== | ==== Djikstrův algoritmus ==== | ||
| - | Algoritmus sloužící pro výběr nejlepší trasy z bodu A do bodu B. Funguje tak, že každá cesta mezi jednotlivými body dostane hodnotu, podle " | + | Algoritmus sloužící pro výběr nejlepší trasy z bodu A do bodu B. |
| + | Postup: | ||
| + | * Každá cesta mezi jednotlivými body dostane hodnotu, podle " | ||
| + | * Algoritmus si postupně vypočítává délku cesty z bodu A do všech sousedních bodů a z nich do dalších bodů. | ||
| + | * Pokud algoritmus najde novou cestu do již objeveného bodu, pomalejší cestu k tomuto bodu odstraní. | ||
| + | * Na konci zůstane pouze jedna nejrychlejší cesta do kažhého z bodů. | ||
| + | * Algoritmus pak jako výstup vydá nejrychlejší cestu do požadovaného bodu B. | ||
| + | Nejhorší možná časová složitost: O(V^2) | ||
| + | |||
| + | Nějhorší možná paměťová složitost: O(V + H) | ||
| + | |||
| + | V = počet vrcholů | ||
| + | |||
| + | H = počet hran | ||
| {{: | {{: | ||
| + | |||
| + | ===== Pravděpodobnostní algoritmy: ===== | ||
| + | |||
| + | ==== Algoritmus Las Vegas ==== | ||
| + | |||
| + | Algoritmus hledající prvek žádaného typu v množině s více typy prvků. V základní podobě algoritmu je narušen jak princip determinismu, | ||
| + | |||
| + | Postup: | ||
| + | * Algoritmus vybere prvek množiny s náhodně přiděleným pořadovým číslem v rámci povoleného rozsahu odpovídajícím velikosti možiny. | ||
| + | * Poté algoritmus u získaného prvku ověřuje typ, je-li typ shodný s typem hledaným, prvek vrátí jako výsledný výstup. | ||
| + | * Pokud však typ prvku neodpovídá, | ||
| + | |||
| + | |||
| + | ==== Algoritmus Monte Carlo ==== | ||
| + | |||
| + | Algoritmus s cílem analogickým k výše zmíněnému. Je alternativou k algoritmu Las Vegas, neboť nabízí konečnost (ukončení běhu cyklu v závislosti na parametru maximálního běhového času či počtu opakování cyklu) výměnou za jistou pravděpodobnost nedosažení cíle (není-li v rámci daného času či počtu opakování nalezen prvek žádaného typu, algoritmus skončí a vrátí se "s prázdnou" | ||
| + | |||
| + | Postup: | ||
| + | * Algoritmus vybere prvek množiny s náhodně přiděleným pořadovým číslem v rámci povoleného rozsahu odpovídajícím velikosti možiny. | ||
| + | * Poté algoritmus u získaného prvku ověřuje typ, je-li typ shodný s typem hledaným, prvek vrátí jako výsledný výstup. | ||
| + | * Pokud však typ prvku neodpovídá a zároveň není dosaženo maximálního času či počtu opakování cyklu, postup je zopakován. | ||
informatika/maturita/16a.1552375448.txt.gz · Poslední úprava: autor: xbenes2
