this dir | view | cards | source | edit | dark top

Algoritmizace: přednášky

Algoritmizace: přednášky

zkouška

materiály

Algoritmus

vlastnosti algoritmu – konečnost, hromadnost, resultativnost, jednoznačnost, determinismus (nebude na zkoušce :)

determinismus – po provedení každého kroku je jednoznačně určeno, který krok se bude provádět dále

Algoritmus

správnost Eukleidova algoritmu

  1. konečnost = výpočet pro jakákoliv vstupní data skončí
    • na začátku výpočtu i stále v jeho průběhu je x > 0, y > 0
    • v každém kroku výpočtu se hodnota x+y sníží alespoň o 1 -> nejpozději po x+y krocích výpočet skončí, je tedy konečný
  2. parciální správnost
Algoritmus

efektivita algoritmu – funkce velikosti vstupních dat

Algoritmus

asymptotická časová složitost

Algoritmus

složitost algoritmu v různých případech – v nejlepším (prakticky se nepoužívá), nejhorším (používá se nejčastěji) a průměrném (je obtížné odvodit tuto složitost)

algoritmus problému stabilních manželství – v nejhorším případě Θ(n)\Theta(n), v nejlepším případě Θ(n2)\Theta(n^2)

Algoritmus

složitost problému – složitost nejlepšího algoritmu (z hlediska časové složitosti), kterým lze řešit daný problém; odvození bývá často obtížné, pro řadu problémů neznáme

složitost problému vnitřního třídění – O(nlogn)O(n \cdot \log{n})

Algoritmus

test prvočíselnosti

Algoritmus

hledání všech prvočísel od 2 do N

Vyhodnocení polynomu v bodě

úloha: vyhodnocení polynomu v bodě x (dosazení konkrétního x do polynomu)

Vyhodnocení polynomu v bodě

operace s polynomy

nejdříve polynom uložíme do pole – index v poli odpovídá mocnině (první prvek v poli je absolutní člen)

Vyhodnocení polynomu v bodě

vyhledávání v seznamu

Řadicí algoritmy

třídění sléváním (merge sort)

Řadicí algoritmy

problém třídění n dat – musíme udělat log2n!\log_2 n! porovnání

Řadicí algoritmy

třídění počítáním (counting sort)

Řadicí algoritmy

přihrádkové třídění (bucket sort)

Řadicí algoritmy

víceprůchodové přihrádkové třídění (radix sort)

Řadicí algoritmy

vnější třídění = třídění dat, která se nevejdou do paměti (tedy je máme uložená v souborech)

lze použít merge sort

Ukládání dat

seznam vs. pole

Ukládání dat

abstraktní datové typy

Rekurze

ukončení rekurze

Rekurze

Fibonacciho posloupnost

Rekurze

doplnění znamének

Rekurze

rozklad čísla na součet kladných celých sčítanců

Binární stromy

průchod do hloubky

Binární stromy

průchod do šířky

Binární stromy

binární vyhledávací strom

Prohledávání stavového prostoru

hledání pokladu v bludišti

Prohledávání stavového prostoru

urychlení prohledávání do hloubky

Prohledávání stavového prostoru

prohledávání stavového prostoru do šířky – breadth-first search (BFS), algoritmus „vlny“

Prohledávání stavového prostoru

zkouška

Prohledávání stavového prostoru

minimax

Prohledávání stavového prostoru

rozděl a panuj (divide et impera)

Prohledávání stavového prostoru

nalezení K-tého nejmenšího prvku z N čísel

Prohledávání stavového prostoru

quickselect

Prohledávání stavového prostoru

lineární algoritmus

Prohledávání stavového prostoru

vyhodnocení aritmetického výrazu reprezentovaného binárním stromem

Grafy

reprezentace grafu v programu

Grafy

časová složitost – záleží na reprezentaci grafu

ke zkoušce: zdůvodnit, proč má algoritmus takovou časovou složitost

Grafy

obecný strom

Grafy

hešování – hešovací funkce mi z klíče vyrobí index

Grafy

metody návrhu algoritmů

Hurá, máš hotovo! 🎉
Pokud ti moje kartičky pomohly, můžeš mi koupit pivo.