2016-01-03 18 views
7

Wie finde ich die Komplexität dieser Funktion?Zeitkomplexität von Math.Sqrt()?

private double EuclideanDistance(MFCC.MFCCFrame vec1, MFCC.MFCCFrame vec2) 
{ 
    double Distance = 0.0; 
    for (int K = 0; K < 13; K++) 
    Distance += (vec1.Features[K] - vec2.Features[K]) * (vec1.Features[K] - vec2.Features[K]); 
    return Math.Sqrt(Distance); 
} 

Ich weiß, dass der unter Abschnitt O (1):

double Distance = 0.0; 
for (int K = 0; K < 13; K++) 
    Distance += (vec1.Features[K]-vec2.Features[K])*(vec1.Features[K]-vec2.Features[K]); 

Aber ich kann nicht herausfinden, was die Komplexität der Math.Sqrt() ist.

+0

Nur wundernd, sollte das nicht für eine Aussage Komplexität von O (n) sein, da es effektiv über ein Array iteriert? – RedLaser

+0

Nein, es ist O (13), Array-Größe ist fest, also O (1) tatsächlich. – ferit

Antwort

5

Sie können es betrachten O (1):

Mit anderen Worten, Math.Sqrt() entspricht einem einzelnen Punkt floating Maschinencodebefehl

Quelle: c# Math.Sqrt Implementation

+0

@BathantHegazy Sie sind willkommen :) – BlackBear