Přejít k hlavnímu obsahu
DL 1
  • Titulní stránka
  • Podpora uživatelů
    Moodleoffice Moodle tutoriál Podpora uživatelů Návody GDPR
  • Další
Čeština ‎(cs)‎
Čeština ‎(cs)‎ Deutsch ‎(de)‎ English ‎(en)‎ Français ‎(fr)‎ Русский ‎(ru)‎
Momentálně na stránky přistupujete s právy hosta.
Přihlášení
DL 1
Titulní stránka Podpora uživatelů Sbalit Rozbalit
Moodleoffice Moodle tutoriál Podpora uživatelů Návody GDPR
Rozbalit vše Sbalit vše
  1. Cvičení z Programování II pro pokročilé
  2. Cvičení #6
  3. Optimální vyhledávací stromy

Optimální vyhledávací stromy

Požadavky na absolvování
Otevřené: pátek, 27. března 2020, 09.10
Termín: středa, 8. dubna 2020, 23.59

O většině binárních vyhledávacích stromů se ví, že v nich jde hledat v logaritmickém čase a že v porovnávacím modelu to obecně ani rychleji nejde, protože bychom pak mohli třídit rychleji než v O(n log n). Co kdybychom ale věděli, že nějaké prvky budeme vyhledávat často a nějaké skoro vůbec?

Je dána posloupnost různých prvků a1 < … < an. Máme nějaký čas, abychom z nich postavili binární vyhledávací strom, a poté nám bude chodit plno dotazů tvaru "vyhledej prvek x ve stromě" (strom se tedy nebude v průběhu měnit). Navíc dopředu známe počty dotazů w1, …, wn na jednotlivé prvky. Chtěli bychom vybudovat takový vyhledávací strom, se kterým na dotazy dohromady odpovíme v co nejmenším čase. Na jeden dotaz na prvek x odpovíme v čase h(x), kde h(x) je hloubka vrcholu s prvkem x a kořen je v hloubce 1.

Jinými slovy, chceme z prvků a1, …, an postavit binární vyhledávací strom tak, aby součet Σ wi·h(ai) byl co nejmenší. Strom musí pořád být binární a vyhledávací, tj. levý (resp. pravý) podstrom musí mít menší (větší) hodnotu než otec.

Příklad: Pro prvky 1, 2, 3 a počty dotazů 10, 2, 5 je optimální strom s 1 v kořeni a hranami 1 → 3 a 3 → 2. Jeho celková cena je 1·10 + 3·2 + 2·5 = 26. Kdyby byla kořenem dvojka, byla by celková cena 2·10 + 1·2 + 2·5 = 32.

◄ Diskuse k úlohám
Řezání trámů ►
Kontaktujte podporu stránek
Momentálně na stránky přistupujete s právy hosta. (Přihlášení)
Stáhněte si mobilní aplikaci
Používá Moodle