Výpočtová zložitosť a porovnania
Čaute, viete mi prosím pomôcť toto vypočítať? Ďakujem každému za pomoc.
Marek K.
12. 06. 2023 21:38
4 odpovědi
První příklad má dle mého složitost . Za použití nějaké formy Setu, nebo Dictionary to jde zjednodušit na . Např v syntaxi pythonu:
Wanted = { }
for x in a:
if x in Wanted: return True
Wanted.add(sucet-x)
return False
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 kroků, tedy výše zmíněná složitost.
Když si rozmyslíme druhý příklad, vidíme, že uvedený algoritmus provádí řádově 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 prvků.
Nerekurzivní algoritmus provede přesně porovnání - první s ničím neporovnává, každý další porovnává s aktuálním maximem.