En algoritme er en trinvis procedure til at løse logiske, matematiske eller praktiske problemer. Den beskriver en række veldefinerede trin, som omdanner et input (data eller starttilstand) til et output (et resultat eller en løsning). For at være en rigtig algoritme skal proceduren være endelig (den slutter efter et begrænset antal trin), præcis (trin er utvetydige) og gennemførlig (trin kan udføres i praksis).

Enkelt eksempel

En opskrift er et godt eksempel på en algoritme, fordi den siger, hvad der skal gøres, trin for trin. Den tager input (ingredienser og redskaber), følger en bestemt rækkefølge af handlinger og producerer et output (den færdige ret). På samme måde kan en algoritme i matematik eller datalogi tage tal eller data som input og levere et resultat som output.

Historie og oprindelse

Ordene "algoritme" og "algorisme" stammer fra navnet på en persisk matematiker ved navn Al-Khwārizmī (persisk: خوارزمی, ca. 780–850). Hans værker om aritmetik og regnemetoder blev i middelalderen oversat og udbredt i Europa, og hans navn blev efterhånden forbundet med metoder til beregning. Begrebet udviklede sig videre gennem middelalderen og renæssancen og fik i det 20. århundrede en formel, matematisk definition i arbejdet med beregnelighed (fx Turing) og beregningskompleksitet.

Formel definition i datalogi

Inden for datalogi forstås en algoritme ofte som en præcis liste over operationer, som kan udføres af en Turing-maskine eller tilsvarende beregningsmodel. Dette gør det muligt at analysere, om en opgave kan løses automatisk, og hvor effektivt det kan gøres. Begreber som korrekthed (algoritmen giver altid rigtigt resultat) og termination (algoritmen stopper) er centrale.

Hvordan beskrives algoritmer?

  • Med almindeligt sprog — til simple procedurer eller når læseren er et menneske.
  • Med pseudokode — en struktureret, menneskelæselig måde at beskrive algoritmens logik uden konkrete sprogs syntaks.
  • Med flowdiagrammer — visuelle diagrammer, der viser beslutninger og flow mellem trin.
  • Som programkode i et programmeringssprog — når algoritmen skal køre på en computer.

Væsentlige egenskaber

  • Finithed: Algoritmen består af et endeligt antal trin.
  • Veldefinerethed: Hvert trin er klart og utvetydigt.
  • Input/output: Algoritmen kan modtage input og producerer output.
  • Effektivitet: Ressourceforbrug måles ofte i tid og plads (f.eks. Big O-notation).
  • Korrekthed: Den skal give det forventede resultat for alle gyldige input.

Eksempler på almindelige algoritmer

  • Søgealgoritmer (f.eks. lineær søgning, binær søgning).
  • Sorteringsalgoritmer (f.eks. boblesortering, mergesort, quicksort).
  • Grafalgoritmer (f.eks. Dijkstras korteste sti, breadth-first search).
  • Kryptografiske algoritmer (til sikkerhed og kryptering).
  • Maskinlæringsalgoritmer (til mønstergenkendelse og forudsigelser).

Anvendelser i hverdagen

Algoritmer ligger bag mange dagligdags systemer: ruteplanlægning i kortapps, søgeresultater på internettet, anbefalingssystemer i streamingtjenester, betalingsverifikation, automatisk billedgenkendelse og meget mere. Selv simple beslutningsskemaer i f.eks. en bank eller et hospitals triagesystem er algoritmer.

Kompleksitet og analyse

Når man vælger eller designer en algoritme, vurderer man ofte dens tidskompleksitet (hvor lang tid den tager som funktion af inputstørrelsen) og rumkompleksitet (hvor meget hukommelse den bruger). Nogle problemer har kendte effektive algoritmer; andre er vanskelige eller umulige at løse effektivt (fx NP‑fuldstændige problemer).

Afsluttende bemærkninger

En algoritme er både et praktisk redskab og et teoretisk begreb. I praksis hjælper de os med at automatisere opgaver og træffe hurtige, konsistente beslutninger. Teoretisk giver de grundlaget for at forstå, hvad der kan beregnes, og hvor hurtigt det kan gøres. For den, der ønsker at lære mere, er det nyttigt at kigge på konkrete eksempler og prøve at formulere simple algoritmer i pseudokode eller som små programmer.