Výpočtová zložitosť a porovnania

Čaute, viete mi prosím pomôcť toto vypočítať? Ďakujem každému za pomoc.

Příloha k dotazu

Obtížnost: Vysoká škola
Kategorie: Vysoká škola
Marek K.

Marek K.

12. 06. 2023   21:38

4 odpovědi

Marek K.
Marek K.
12.06.2023 21:39:24
  • toto
Příloha ke komentáři
Jan Z.
Jan Z.
15.06.2023 09:19:22

První příklad má dle mého složitost O(N2). Za použití nějaké formy Setu, nebo Dictionary to jde zjednodušit na O(N). Např v syntaxi pythonu:


Wanted  = { } 

for x in a:
    if x in Wanted: return True
    Wanted.add(sucet-x)

return False
Jan Z.
Jan Z.
15.06.2023 09:21:18

Vnořené cykly se délkou násobí. V nejhorším případě tedy "Pro každý prvek pole projdu všechny po něm následující", tedy N(N1)/2 kroků, tedy výše zmíněná složitost.

Jan Z.
Jan Z.
15.06.2023 09:27:31

Když si rozmyslíme druhý příklad, vidíme, že uvedený algoritmus provádí řádově O(N) porovnání. Zkus si to nakreslit pro pár počtů... pro 8 dostanu 7 porovnání, pro 10 dostanu 11 a pro 5 dostanu 5. Nejlépe to dopadne pro 2n prvků.

Nerekurzivní algoritmus provede přesně n1 porovnání - první s ničím neporovnává, každý další porovnává s aktuálním maximem.

Pro napsání komentáře se musíte přihlásit.