Hva er algoritmeanalyse?
Algoritmeanalyse er et felt innen informatikk som er dedikert til å forstå kompleksiteten til algoritmer. Algoritmer er generelt definert som prosesser som utfører en serie operasjoner til slutt. Algoritmer kan komme til uttrykk på mange måter, i flytskjema, et naturlig språk og programmeringsspråk for datamaskiner. Algoritmer brukes i matematikk, databehandling og språkvitenskap, men en vanlig bruk er i datamaskiner for å gjøre beregninger eller prosessere data. Algoritmeanalyse omhandler algoritmer skrevet på dataprogrammeringsspråk, som er basert på matematisk formalisme
En algoritme er egentlig et sett med instruksjoner for en datamaskin for å utføre en beregning på en viss måte. For eksempel vil en datamaskin bruke en algoritme for å beregne en ansattes lønnsslipp. For at datamaskinen skal utføre beregningene, trenger den passende data som er lagt inn i systemet, for eksempel den ansattes lønnsgrad og antall arbeidstimer.
Mer enn en algoritme kan arbeide for å utføre den samme operasjonen, men noen algoritmer bruker mer minne og tar lenger tid å utføre enn andre. Hvordan vet vi hvor bra algoritmer fungerer generelt, gitt forskjeller mellom datamaskiner og datainnganger? Det er her algoritmeanalysen kommer inn.
En måte å teste en algoritme er å kjøre et dataprogram og se hvor bra det fungerer. Problemet med denne tilnærmingen er at den bare forteller oss hvor godt algoritmen fungerer med en bestemt datamaskin og sett med innganger. Hensikten med algoritmeanalyse er å teste og deretter trekke konklusjoner om hvor bra en bestemt algoritme fungerer generelt. Dette vil være veldig vanskelig og tidkrevende å gjøre på individuelle datamaskiner, så forskere utvikler modeller for datamaskinfunksjon for å teste algoritmer.
Generelt er algoritmeanalyse mest opptatt av å finne ut hvor mye tid et program tar å kjøre, og hvor mye minne lagringsplass det trenger for å utføre programmet. Spesielt bruker dataforskere algoritmeanalyse for å bestemme hvordan dataene som tildeles et program påvirker den totale kjøretiden, hvor mye minne plass datamaskinen trenger for programdata, hvor mye plass programkoden tar i datamaskinen, om en algoritme produserer riktig beregninger, hvor komplisert et program er, og hvor godt det takler uventede resultater.