Wie finde ich die Laufzeit gegebenen Algorithmus Geschwindigkeit und die Geschwindigkeit des Computers?

StackOverflow https://stackoverflow.com/questions/216825

  •  03-07-2019
  •  | 
  •  

Frage

Im Moment arbeite ich durch eine Zuordnung, die mit Big-O und Laufzeiten beschäftigt. Ich habe diese eine Frage, die mir präsentiert, die sehr einfach zu sein scheint, aber ich bin nicht sicher, ob ich es richtig mache. Der Rest der Probleme ist inzwischen recht schwierig gewesen, und ich fühle mich wie ich hier etwas mit Blick auf bin.

Als erstes müssen Sie diese Dinge: Algorithmus A, die eine Laufzeit von 50 N hat ^ 3. Computer A, die eine Geschwindigkeit von 1 Millisekunde pro Betrieb hat. Computer B, die eine Geschwindigkeit von 2 Millisekunden pro Betrieb hat. Eine Instanz der Größe 300.

Ich möchte finden, wie lange es Algorithmus A nimmt diese Instanz auf Computer A zu lösen, und wie lange es dauert es auf Computer B.

Was ich tun möchte, ist sub 300 in für n, so dass Sie 50 * haben (300 ^ 2) = 4.500.000.

Dann multiplizieren die von 1 für den ersten Computer und durch 2 für den zweiten Computer.

Das fühlt sich seltsam für mich, aber, weil es die „Laufzeit“, sagt 50n ist ^ 3, nicht „die Anzahl der Operationen ist 50n ^ 3“, so dass ich das Gefühl, dass ich von Zeit zu Zeit bin Multiplikation und mit Einheiten von Millisekunden würde am Ende quadriert, die nicht direkt überhaupt nicht erscheinen.

Ich würde gerne wissen, ob ich recht habe, und wenn nicht, was die Frage eigentlich bedeutet.

War es hilfreich?

Lösung

Es würde keinen Sinn machen, wenn Sie O hatte (n ^ 3), aber sie sind nicht mit O-Notation in Ihrem Beispiel. D. h wenn Sie O (n ^ 3) hatte würden Sie die Komplexität des Algorithmus wissen, aber Sie würden die genaue Anzahl der Operationen nicht wissen, wie Sie gesagt haben.

Stattdessen sieht es aus, als ob Sie die genaue Anzahl der Operationen gegeben, die getroffen werden. (Weiß Auch ist es nicht explizit angegeben). So Substitution für n Sinn machen würde.

Big O-Notation beschreibt, wie die Größe der Eingabe Ihrer Laufzeit oder Speichernutzung bewirken würde. Aber mit Big O konnte man keine genaue Laufzeit auch die Geschwindigkeit jeder Operation gegeben abzuleiten.

Putting eine Erklärung, warum Ihre Antwort so einfach aussieht (wie ich oben beschrieben) wäre auch ein sicherer Weg sein. Aber ich bin sicher, auch ohne es Sie die Markierungen für die Frage zu bekommen.

Andere Tipps

Nun, abgesehen von der Sinnlosigkeit, herauszufinden, wie lange etwas wird auf diese Weise nehmen auf den meisten modernen Computern, obwohl es wahrscheinlich machen einige in einem eingebetteten System bedeutet, es mir sieht rechts die wie Sie es getan haben.

Wenn der Algorithmus benötigt 50n ^ 3 Operationen etwas zu vervollständigen, wobei n die Anzahl der Elemente zu verarbeiten ist, dann ersetzt 300 für n Ihnen die Anzahl der Operationen geben auszuführen, nicht eine Zeiteinheit.

So mit der Zeit pro Betrieb multiplizieren und Sie würden die benötigte Zeit erhalten.

Sieht richtig für mich.

50 * n ^ 3 Daten werden als „Laufzeit“, aber das ist, weil das Modell für die Drehzahlauswertungen benutzt, um eine Maschine mit mehreren Basisoperationen übernimmt, wobei jede dieser Zeiteinheit 1 nimmt.

Sie Fall nimmt der Algorithmus läuft 50 * 500 ^ 3 Zeiteinheiten. Auf Computer A ist jede Zeiteinheit 1ms, und auf Computer B 2ms.

Hope dies bringt einen Sinn in die Einheiten,
Asaf.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top