Wie schätze ich den Zeitaufwand? (Geburtsraten)

Angenommen, Sie haben ein Programm, das ein KI-Problem löst. Wenn das Problem groß ist N = 1 , 000 Ihr Programm braucht 10 Sekunden, um eine Lösung zu finden. Schätzen Sie die Zeit, die benötigt wird, um ein Größenproblem zu lösen N = 1 , 000 , 000 wenn die Zeitkomplexität Ihres Algorithmus:

  1. Ö ( Protokoll N )

  2. Ö ( N )

  3. Ö ( N Protokoll N )

  4. Ö ( N 2 )

  5. Ö ( N 3 )

Sie können die Näherungen verwenden Protokoll ( 1 , 000 ) = 10 Und Protokoll ( 1 , 000 , 000 ) = 20

(Ich bin nicht gut in Mathe, also schätze ich wirklich jede Hilfe)

Vermutlich sind diese Protokolle Basis 2.

Antworten (1)

Beginnen wir mit (4). Die Verwendung der Ö Notation ist hier sehr schlampig, aber was ist hier gemeint, wenn man sagt, dass die Zeitkomplexität des Algorithmus ist Ö ( N 2 ) ist, dass der Zeitaufwand in etwa proportional ist N 2 . Das heißt, es gibt eine Konstante k so dass die Zeit, die zum Verarbeiten einer Eingabegröße erforderlich ist N ist circa k N 2 . In diesem Problem wird Ihnen gesagt, wann N = 1000 , es ist ____ Uhr 10 Sekunden, also k ( 1000 ) 2 = 10 . Das könntest du lösen k , wenn du wirklich wolltest, aber es ist unnötig: du willst k N 2 Wenn N = 1 , 000 , 000 , Und 1 , 000 , 000 = 1000 2 , also du möchtest

k ( 1 , 000 , 000 ) 2 = k ( 1000 ) 2 ( 1000 ) 2 = 10 ( 1000 ) 2 = 10 , 000 , 000 ,
seit k ( 1000 ) 2 = 10 . Mit anderen Worten, in (4) benötigt Ihr Algorithmus etwa zehn Millionen Sekunden, was etwas weniger als einem Drittel eines Jahres entspricht.

In (2) wird Ihnen gesagt, dass der Algorithmus ungefähr dauert k N Sekunden, um ein Größenproblem zu lösen N , und du weißt das 1000 k = 10 . Ich lasse Sie versuchen, dieses Problem zu lösen und (5) meine Lösung für (4) als Modell zu verwenden; Sie sollten etwas mehr als zweidreiviertel Stunden für (2) und mehr als drei Jahrhunderte für (5) bekommen.

Schauen wir uns nun (1) an: Es besagt, dass die ungefähre Laufzeit bei einer Eingabe von size N Ist k Protokoll N für einige konstant k , und das wird uns gesagt k Protokoll 1000 = 10 . Die Annäherung ist erlaubt Protokoll 1000 10 , also haben wir 10 k = 10 , oder k = 1 . Somit ist die ungefähre Laufzeit z N = 1 , 000 , 000 Ist

k Protokoll 1 , 000 , 000 = Protokoll 1 , 000 , 000 20
Sekunden.

(3) sieht am chaotischsten aus, ist aber nicht schwieriger als die anderen: die ungefähre Laufzeit bei einer Größeneingabe N Ist k N Protokoll N , und das ist dir gegeben k ( 1000 ) Protokoll 1000 = 10 . Auch hier können Sie entweder nach lösen k und einstecken N = 1 , 000 , 000 oder den angegebenen Datenpunkt direkter verwenden, wie ich es bei (4) getan habe; Sie sollten eine Laufzeit von etwas mehr als fünfeinhalb Stunden erreichen.