Kuo skiriasi O (n!) Ir O (2 ^ n) laiko sudėtingumas?


Atsakymas 1:

O (n!) Suteikia žymiai daugiau išteklių (laiko atžvilgiu) sprendėjui.

Patikrinkite šiuos tris skaičius:

1 paveikslas: Tuoj po n = 3 faktoriaus klasė pirmauja.

2 paveikslas: Labai greitai padidinkite išteklių skirtumą atlikę dar 5 veiksmus.

3 paveikslas: Faktorinė klasė rodo eksponentinę klasę kaip vieną smėlio dalelę, palyginti su Himalajaus kalnu. Tai tik tada, kai jūsų įvestis yra tik 15 vienetų.

Kaip galite pastebėti, didėjant įvesties dydžiui, skiriasi ir „faktoriaus greitis“.

Taigi laiko hierarchija sako, kad kuo daugiau laiko išteklių turite, tuo daugiau problemų galite išspręsti.


Atsakymas 2:

n! ir 2 ^ n yra abi eksponentinės funkcijos - bet n! Yra daug stipresnis nei 2 ^ n. n! Daug greičiau pasiekia begalybę.

Tai tarsi skirtumas tarp x ^ 2 iki x ^ 200 - jie abu yra daugiapakopės funkcijos, bet x ^ 200 yra daug stipresnis.

Sudėtingumo teorijoje - tie skirtumai nėra daug svarbūs ar reikšmingi; x ^ 2 ir x ^ 200 yra tiek poli (x) funkcijos - tiek polinominių funkcijų klasėje, tiek kiekviena funkcija x ^ k pavidalu, o k yra pastovus skaičius; Ir n! ir 2 ^ n abu yra exp (n) - jie abu priklauso eksponentinių funkcijų klasei -, bet ne poly (n). [kiekvienas poli (x) taip pat yra exp (x), nes exp (x) yra O (exp (x)) (ir poli (x) yra O (poli (x))]]