Algoritmická složitost

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Které z následujících slovních druhů se skloňují?

  • Spojky
  • Příslovce
  • Podstatná jména (correct)
  • Předložky

Co označují slova mladý, sladký, cizí?

  • Zájmena
  • Přídavná jména (correct)
  • Přísloví
  • Podstatná jména

Který z uvedených vzorů se používá pro skloňování vlastních jmen ženského rodu zakončených na -ea nebo -ua, jako například jméno Ester?

  • Žena
  • Město
  • Růže (correct)
  • Pán

Které z následujících slov se neskloňuje?

<p>Angažmá (A)</p> Signup and view all the answers

Jaký vzor se obvykle používá pro skloňování jmen zakončených na -us, -es, -um, -on?

<p>Muzeum (A)</p> Signup and view all the answers

Podle kterého vzoru se skloňuje podstatné jméno mládí?

<p>Stavení (C)</p> Signup and view all the answers

Které z následujících slov je pomnožné?

<p>Nůžky (C)</p> Signup and view all the answers

Který z uvedených vzorů se používá pro skloňování jmen zakončených na -a, -i, -y?

<p>Verdi (C)</p> Signup and view all the answers

Jaký slovní druh je slovo štíhlý?

<p>Přídavné jméno (B)</p> Signup and view all the answers

Která z uvedených skupin slov jsou látky?

<p>Krví, Uhlí, Stromoví (D)</p> Signup and view all the answers

Flashcards

Skloňování ženských jmen

Vlastní jména ženská se skloňují podle vzoru žena nebo růže.

Skloňování názvů měst

Názvy měst se skloňují podle vzoru kostel, moře, město, nebo kuře.

Skloňování jmen zakončených na -e

Jména, která se v 1. pádě jednotného čísla skloňují bez koncovky a podle pán 2. p. Danta (Dante), Schulze (nebo moze).

Skloňování slov zakončených na -i, -o, -j

Slova na -i, -o, -í, -j jako mladý Tolstoj, Tolstého, Tolstému.

Signup and view all the flashcards

Jména řeckého a latinského původu

Jména řeckého a latinského původu.

Signup and view all the flashcards

Koncovky ke kmeni

Jména na -us, -os, -es, -um, -on – koncovky ke kmeni (odsun nominativních koncovek).

Signup and view all the flashcards

Study Notes

Algoritmická složitost

  • Měří, kolik času nebo prostoru algoritmus potřebuje v závislosti na velikosti vstupu.

Příklad

  • Pro seřazení pole o $n$ prvcích je nutné se na každý prvek podívat alespoň jednou, takže složitost algoritmu je minimálně $n$.

Definice

  • $f(n) = O(g(n))$ pokud existují konstanty $c$ a $n_0$ takové, že pro všechna $n > n_0$ platí $f(n) \le c \cdot g(n)$.
    • $O(g(n))$ je řád algoritmu.

Běžné řády

  • $O(1)$: Konstantní (přístup k prvku pole).
  • $O(\log n)$: Logaritmický (binární vyhledávání).
  • $O(n)$: Lineární (procházení pole).
  • $O(n \log n)$: "n log n" (dobré třídicí algoritmy).
  • $O(n^2)$: Kvadratický (jednoduché třídicí algoritmy).
  • $O(n^3)$: Kubický (násobení matic).
  • $O(2^n)$: Exponenciální (zkoušení všech možností).
  • $O(n!)$: Faktoriál (zkoušení všech pořadí).

Porovnání řádů

  • Konstantní čas je neměnný velikostí vstupu.
  • Logaritmický čas roste velmi pomalu.
  • Lineární čas roste lineárně.
  • $n \log n$ roste mírně rychleji než lineární.
  • Kvadratický roste ještě rychleji.
  • Exponenciální roste velmi rychle.
  • Faktoriál roste rychleji než exponenciální.

Jak najít řád algoritmu

  • Zjistit, co algoritmus dělá.
  • Určit, co je vstup.
  • Zjistit, kolik kroků algoritmus provede jako funkci velikosti vstupu.
  • Vzít nejvýznamnější člen.
  • Ignorovat konstantní faktory.

Příklad

int sum = 0;
for (int i = 0; i < n; i++) {
  sum += i;
}
  • Algoritmus provede $n$ kroků, takže je $O(n)$.

Příklad

int sum = 0;
for (int i = 0; i < n; i++) {
  for (int j = 0; j < n; j++) {
    sum += i * j;
  }
}
  • Algoritmus provede $n^2$ kroků, takže je $O(n^2)$.

Příklad

int sum = 0;
for (int i = 0; i < n; i++) {
  for (int j = 0; j < i; j++) {
    sum += i * j;
  }
}
  • Algoritmus provede $n(n + 1) / 2$ kroků, takže je $O(n^2)$.

Logaritmické algoritmy

  • Problém se v každém kroku dělí konstantním faktorem.
Příklad: Binární vyhledávání
  • Hledání čísla v seřazeném poli se provádí tak, že se podíváme na prostřední prvek. Pokud je číslo menší, vyhledáváme v levé polovině, jinak v pravé polovině.
  • Každý krok dělí velikost problému 2, takže trvá $O(\log n)$ kroků.

Užitečná fakta

  • Algoritmus, který prochází všechny podmnožiny množiny o $n$ prvcích, je $O(2^n)$.
  • Algoritmus, který prochází všechny permutace množiny o $n$ prvcích, je $O(n!)$.
  • Sečtení čísel od $1$ do $n$ je $n(n + 1) / 2 = O(n^2)$.
  • Sečtení mocnin 2 od $1$ do $n$ je $2n - 1 = O(n)$.

NP-úplné problémy

  • Pro některé problémy neznáme efektivní algoritmy a nazýváme je NP-úplné problémy.
  • Pokud lze jeden NP-úplný problém převést na jiný NP-úplný problém v polynomiálním čase, jsou ekvivalentní.
Příklady
  • Problém obchodního cestujícího.
  • Problém batohu.
  • Problém splnitelnosti booleovských formulí (Boolean Satisfiability Problem).

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

More Like This

Big O Notation Overview
8 questions
Algorithm Complexity and Analysis
13 questions

Algorithm Complexity and Analysis

MeaningfulSpatialism6820 avatar
MeaningfulSpatialism6820
Big O Notation and Time Complexity
5 questions
Algorithm Analysis Fundamentals
48 questions
Use Quizgecko on...
Browser
Browser