Tartalomjegyzék:
Meghatározás - Mit jelent az idő komplexitása?
Az idő bonyolultsága egy fogalom a számítástechnikában, amely a kód vagy algoritmus készlete feldolgozásához vagy futtatásához szükséges idő mennyiségi meghatározásával foglalkozik, a bemeneti mennyiség függvényében.
Más szavakkal, az idő bonyolultsága alapvetően a hatékonyság, vagy az, hogy egy program funkció mennyi ideig vesz igénybe egy adott bemenet feldolgozását.
A Techopedia magyarázza az idő komplexitását
Az idő bonyolultsága egyszerűen annak az időnek a mértéke, amelyre egy függvény vagy kifejezés elvégzi a feladatát, valamint az idő mérésére szolgáló folyamat neve. Szinte bármilyen algoritmusra vagy függvényre alkalmazható, de hasznosabb a rekurzív függvényeknél. Nincs értelme mérni az alkalmazások időbonyolítását, például a felhasználónév és a jelszó beolvasása az adatbázisból összehasonlítás céljából, vagy egyszerűen csak az adatok mentése, akár 20 ms, akár 5 ms; ez inkább a hozzáférési idő sorában lenne. Semmi köze nincs annak végrehajtási idejének gondozásához, inkább azzal, hogy a különbség elhanyagolható. Ha azonban van egy rekurzív funkció, amelyet többször is meg lehet hívni, az idő bonyolultságának forrásának meghatározása és megértése elősegítheti a teljes feldolgozási idő csökkentését, mondjuk, 600 ms-ról 100 ms-ra.
Az idő bonyolultságát jellemzően a "nagy O jelölés" fejezi ki, de vannak más jelölések is. Ez egy algoritmus skálázási tényezőjének felső határának matematikai ábrázolása, O (Nn) -vel írva, ahol "N" a bemenetek száma és "n" a hurkoló kifejezések száma. Például van az algoritmus:
numbers = {5, 6, 10, 11, 2}; foreach (number as number1)
{
foreach(number as number2)
{
statements; } }
numbers = {5, 6, 10, 11, 2};
foreach (number as number1)
{
foreach(number as number2)
{
statements; } }
numbers = {5, 6, 10, 11, 2};
foreach (number as number1)
{
foreach(number as number2) {
statements; } }
numbers = {5, 6, 10, 11, 2};
foreach (number as number1)
{
foreach(number as number2)
{
statements; } }
numbers = {5, 6, 10, 11, 2};
foreach (number as number1)
{
foreach(number as number2)
{
statements; } }
Öt bemenet van a "szám" tömbben, és a "foreach" hurkot kétszer megismételjük. Ezért a feldolgozási idő exponenciális növekedése akkor fordul elő, amikor a bemenetek száma és a hurkok száma növekszik.