Algoritmanalys är ett område inom datavetenskap som är dedikerat till att förstå komplexiteten hos algoritmer. Algoritmer definieras generellt som processer som utför en serie operationer till ett slut. Algoritmer kan uttryckas på många sätt, i flödesscheman, ett naturligt språk och datorprogrammeringsspråk. Algoritmer används inom matematik, databehandling och lingvistik, men en vanligaste användning är i datorer för att göra beräkningar eller bearbeta data. Algoritmanalys handlar om algoritmer skrivna på datorprogrammeringsspråk, som är baserade på matematisk formalism
En algoritm är i huvudsak en uppsättning instruktioner för en dator att utföra en beräkning på ett visst sätt. Till exempel skulle en dator använda en algoritm för att beräkna en anställds lön. För att datorn ska kunna utföra beräkningarna behöver den lämpliga data läggas in i systemet, såsom den anställdes lönesats och antal arbetade timmar.
Mer än en algoritm kan fungera för att utföra samma operation, men vissa algoritmer använder mer minne och tar längre tid att utföra än andra. Dessutom, hur vet vi hur bra algoritmer fungerar i allmänhet, givet skillnader mellan datorer och datainmatningar? Det är här algoritmanalys kommer in.
Ett sätt att testa en algoritm är att köra ett datorprogram och se hur bra det fungerar. Problemet med detta tillvägagångssätt är att det bara berättar hur väl algoritmen fungerar med en viss dator och uppsättning ingångar. Syftet med algoritmanalys är att testa och sedan dra slutsatser om hur väl en viss algoritm fungerar generellt. Detta skulle vara mycket svårt och tidskrävande att göra på enskilda datorer, så forskare tar fram modeller för datorfunktioner för att testa algoritmer.
Generellt handlar algoritmanalys mest om att ta reda på hur mycket tid ett program tar att köra och hur mycket minnesutrymme det behöver för att köra programmet. Datavetare använder särskilt algoritmanalys för att avgöra hur data som tillskrivs ett program påverkar dess totala körtid, hur mycket minnesutrymme datorn behöver för programdata, hur mycket utrymme programmets kod tar i datorn, om en algoritm producerar korrekt. beräkningar, hur komplext ett program är och hur väl det hanterar oväntade resultat.