Indholdsfortegnelse:
Definition - Hvad betyder tidskompleksitet?
Tidskompleksitet er et koncept inden for datalogi, der beskæftiger sig med kvantificeringen af den tid, der tages af et sæt kode eller algoritme til at behandle eller køre som en funktion af inputmængden.
Med andre ord er tidskompleksitet i det væsentlige effektivitet, eller hvor lang tid en programfunktion tager for at behandle en given input.
Techopedia forklarer tidskompleksitet
Tidskompleksitet er simpelthen et mål for den tid det tager for en funktion eller udtryk at afslutte sin opgave, samt navnet på processen til at måle den tid. Det kan anvendes til næsten enhver algoritme eller funktion, men er mere nyttigt til rekursive funktioner. Der er ikke meget mening i at måle tidskompleksitet for applikationer som hentning af brugernavn og adgangskode fra en database til sammenligning eller blot at gemme data, uanset om det er 20 ms eller 5 ms; det ville være mere i linjen med adgangstid. Det har intet at gøre med at pleje om dens udførelsestid, men snarere at forskellen er ubetydelig. Hvis der imidlertid er en rekursiv funktion, der kan kaldes flere gange, kan bestemmelse og forståelse af kilden til dets tidskompleksitet hjælpe med at forkorte den samlede behandlingstid fra, for eksempel, 600 ms til 100 ms.
Tidskompleksitet udtrykkes typisk i den "store O-notation", men der er andre notationer. Dette er en matematisk repræsentation af den øvre grænse for skaleringsfaktoren for en algoritme og er skrevet som O (Nn), hvor "N" er antallet af input og "n" er antallet af looping-udtryk. For eksempel har vi algoritmen:
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; } }
Der er fem input i arrayet "numre", og "foreach" -sløkken gentages to gange. Derfor forekommer eksponentiel vækst i behandlingstid, når antallet af input og antallet af løkker vokser.