2016-05-27 7 views
3

f hat eine Komplexitätsklasse O(N(logN)^2), für N = 1000 das Programm in 8 Sekunden läuftRechenzeit von Komplexitätsklassen

berechnen, wie lange es dauern wird, laufen, wenn N = 1,000,000

ich die Zeit berechnet 32.000 Sekunden zu sein, aber ich bin verwirrt, weil N 1000 mal wuchs, aber die Zeit um 4000 mal erhöht. Ich dachte, da dies eine Log-Funktion ist, sollte die Faktorzunahme von N geringer sein als die der Zeit.

Sind meine Berechnungen falsch oder gibt es etwas, das ich nicht verstehe?

+2

_Sind dies eine Log-Funktion_ - es ist N multipliziert mit Log, so ist alles in Ordnung. Es ist 1000 mal für N und 4 mal für (logN)^2, und diese werden multipliziert, so dass Ihre Berechnungen korrekt zu sein scheinen. – Gassa

Antwort

3

"da dies eine Protokollfunktion ist": nein, das ist eine linpolylog Funktion. Weil es einen linearen Faktor N und einen polylog one log^2(N) gibt, d.h. ein Polynom eines Logarithmus.

So wächst N um einen Faktor 1000 und log(N) um einen Faktor 2 (undisputably kleiner als 1000) so log^2(N) um einen Faktor 4, für insgesamt Faktor 4000.

1

Ihre Berechnungen sind korrekt. N(logN)^2 wächst etwas schneller als N tut. In der Tat, N Faktoren beide Komplexitäten aber (logN)^2 ist halbmondförmig und ungebunden und so größer als eine Konstante eine ausreichend große Eingabe zu erreichen.

+0

Sie denken an 'logN^2' das ist * nicht * das selbe wie' (logN)^2' –

+0

Hoppla, meine Mathe-Kurse fangen an, weit weg zu sein –

+0

Keine Sorge mein Mann;) –

Verwandte Themen