Uživatelské nástroje

Nástroje pro tento web


informatika:maturita:16a

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
informatika:maturita:16a [24. 04. 2015, 18.18]
xmrnustik
informatika:maturita:16a [26. 05. 2020, 13.21] (aktuální)
xdostal [Eratosthenovo síto]
Řádek 3: Řádek 3:
 ===== Pojmy ===== ===== Pojmy =====
  
-  * **Algoritmus** ​- přesný abstraktní postup určený pro vyřešení ​dané úlohy  +  * **Algoritmus** ​– konečná sekvence operací sloužící k řešení ​určitého typu úlohy 
-  * **Program** ​- konkrétní řešení algoritmu ​daném ​programovacím jazyce +  * **Program** ​– systematicky sestavený soubor algoritmů, zapsaný ​určitém ​programovacím jazyce, který lze zkompilovat a spustit 
-  * **Programovací jazyk** ​prostředek pro zápis algoritmů+  * **Programovací jazyk** ​– prostředek pro zápis algoritmů a tvorbu programů
  
-==== Pravidla programovacích jazyků ==== +===== Pravidla programovacích jazyků ===== 
-Dělíme na: +  * **Syntaxe** (forma– Definuje kombinaci symbolů, které jsou považovány za správně strukturovaný kódV každém programovacím jazyce bývá syntaxe odlišnáJejími typickými prvky jsou napřzávorkystředníky, mezery a tabulátory. Je-li syntaxe chybná, výsledný ​program ​nelze zkompilovat 
-  * **Syntaktická** - způsob jakým máme program zapisovat ​(klíčová slova(= názvy konstrukcí a proměnných), středníky na konci řádků, pojmenování proměnných,...)při porušení syntaktických pravidel nejde program zkompilovat +  * **Sémantika** (význam) – Zhodnocuje význam syntakticky platných řetězců a provádí jejich výpočty. Popisuje procesykteré počítač provádí při běhu programuNapříklad:​ 
-  * **Sémantická** - způsob jakým budou implementovány jednotlivá klíčová slova (pokud je tam if tak je to podmínka,...)+  * //int number = 1 + 1;// 
 +  * Dojde k inicializaci deklarované proměnné "​number"​ – je do ní vložen výsledek součtu 1 + 1.
  
  
-===== Vlastnosti ​algoritmus ​===== +===== Vlastnosti ​algoritmu ​===== 
-  * **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,​ pro stejné vstupní data musí mít stejný výstup +  * **Determinovanost** ​(Určenost) – V každé situaci musí být naprosto zřejmé ​jaký krok (instrukce) ​se právě provádí a jaký má následovat 
-  * **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) +  * **Obecnost** ​– Algoritmus ​by měl řešit ​typovou úlohu co nejvíce obecněnapř. výpočty s využítím proměnných místo numerických konstant 
-  * **Finitivnost** ​- algoritmus by měl vždy mít omezený počet kroků, ​po kterých ​skončí +  * **Finitivnost** ​(Konečnost) – U algoritmu musí být možné určit po jaké době skončí, či musí být myslitelné naplnění podmínky pro jeho ukončení ​ 
-  * **Resultativnost** ​- musí mít nějaký výstup +  * **Resultativnost** ​(Výslednost) – Musí mít nějaký výstup, tím je buď řešení úlohy a nebo oznámení o nemožnosti nalezení tohoto řešení ​ 
-  * **Korektnost** ​- výstup ​by měl být správně +  * **Korektnost** ​(Správnost) – Výstup ​by měl být správně ​(platí zejména pro výpočetní algoritmy) ​ 
-  * **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+  * **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
  
  
 ===== Známé algoritmy ===== ===== Známé algoritmy =====
  
-==== Erastotenovo ​síto ====+==== Eratosthenovo ​síto ====
  
-Algoritmus pro získání všech prvočísel od dvou po dané číslo. Vytvoříme si pole ech čísel obsažených ​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 pro získání všech prvočísel od dvou po dané číslo. 
 + 
 +Postup:  
 + 
 +Krok 1: Vytvoření seznamu, obsahujícího ​echna čísla v rozsahu ​2 až n:  
 + 
 +Krok 2: První číslo ze seznamu je zapsáno jako prvočíslo do seznamu prvočísel a ze seznamu je vymazáno společně se všemi jeho násobky. 
 + 
 +Krok 3: Opakuj krok 2, dokud není původní seznam prázdný. 
 + 
 +Krok 4: Seznam prvočísel obsahuje ​všechna ​prvočísla ​od 2 po n
  
  
 [[https://​www.youtube.com/​watch?​v=2SD2lLFj4h0&​feature=player_detailpage|Ukázka erastotenova síta na číslech od 2 do 120]] [[https://​www.youtube.com/​watch?​v=2SD2lLFj4h0&​feature=player_detailpage|Ukázka erastotenova síta na číslech od 2 do 120]]
 +
  
 ==== 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 íkladu. Máme zadaná ​dvě čísla 140 a 15.+Zde íklad: jsou zadána ​dvě čísla 140 a 15. 
 Postup: Postup:
-  ​Nejprve ​podělíme větší číslo číslem menším. (V našem případě 140 = 9 * 15 + 5) +  ​Nejprve ​zjistíme zbytek po dělení většího čísla číslem menším. (V našem případě 140 = 9 * 15 + **5**
-  ​- "Z titulu toho"​(Vojtěchu :-))že obě strany rovnice by měly být litelny NSD a zároveň ​číslo 15 musí být také dělitelné NSD těchto dvou čísel, tak musí platit, že i zbytek ​po dělení ​musí být dělitelný NSD, tím pádem NSD 140 a 15 musí být zároveň NSD 15 a zbytku ​(tedy 5) a to vede k tomu, že aplikujeme znovu první krok +  ​* Nyní zopakujeme první krokale s lením menšího ​čísla zbytkem ​po dělení (15 = 3 * 5 + **0**) 
-  - Po aplikaci prvního kroku na čísla 15 a 5 nám vyjde 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+ 
 +[[http://​www.algoritmy.net/​article/​44/​Eukliduv-algoritmus|Podrobnější vysvětlení]] 
  
 ==== Djikstrův algoritmus ==== ==== Djikstrův algoritmus ====
  
-Algoritmus sloužící pro vybrání ​nejlepší trasy z bodu A do bodu B. Funguje tak, že každá cesta mezi jednotlivými body dostane hodnotu, podle "​náročnosti"​(může být délky trasy, povolená rychlost,​...). Pro výpočet trasy se jednotlivé cesty sčítají, aby a trasa s nejnižším součtem se vybere jako finální.+Algoritmus sloužící pro výběr ​nejlepší trasy z bodu A do bodu B. 
  
-{{ :informatika:​maturita:​16_djikstra.png?150 |}}+Postup: 
 +  * Každá cesta mezi jednotlivými body dostane hodnotu, podle "​náročnosti"​ (délka trasy, povolená rychlost, ...).  
 +  * 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
  
  
 +{{:​informatika:​maturita:​dijkstra_animation.gif?​283|}}
  
  
 +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,​ tak princip konečnosti (není-li běhový čas algoritmu či počet opakování cyklu nijak omezen, běhová doba algoritmu se teoreticky může blížit nekonečnu ...). 
 +
 +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á,​ postup se opakuje a to tak dlouho, dokud není nalezen prvek typově odpovídající.
 +
 +
 +==== 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.1429892284.txt.gz · Poslední úprava: 24. 04. 2015, 18.18 autor: xmrnustik