En heuristik er en praktisk måde at løse et problem på. Det er bedre end tilfældigheder, men det virker ikke altid. En person udvikler en heuristik ved at bruge intelligens, erfaring og sund fornuft. Forsøg og fejl er den enkleste heuristik, men også en af de svageste. Tommelfingerregel og "kvalificerede gæt" er andre betegnelser for simple heuristikker. Da en heuristik ikke er sikker på at opnå et resultat, er der altid undtagelser. Ordet kommer fra det græske heuriskein, "at finde" eller "at opdage" — derfor bruges heuristikker ofte, når en sikker eller fuldstændig løsning er svær eller dyr at opnå.
Nogle gange er heuristikker ret vage: "Se før du springer" er en vejledning i adfærd, men "tænk over konsekvenserne" er lidt mere klart. Nogle gange er en heuristik en hel række trin. Når læger undersøger en patient, gennemgår de en hel række prøver og observationer. De finder måske ikke ud af, hvad der er galt, men de giver sig selv den bedste chance for at lykkes. Dette kaldes en diagnose. I praksis kombineres ofte flere heuristikker: enkle regler, tjeklister og prioriteringsregler, så arbejdet bliver både hurtigt og robust.
Inden for datalogi er en "heuristik" en slags algoritme. Algoritmer skrives for at finde en god løsning på et problem. En heuristisk algoritme kan normalt finde ret gode løsninger, men der er ingen garanti eller beviser for, at løsningerne er korrekte. Den tid, det tager at køre algoritmen, er en anden faktor at tage i betragtning. Heuristikker bruges især, når eksakt beregning er for langsom (NP‑hårde problemer), eller når man har brug for et svar hurtigt i en praktisk situation.
Typer af heuristikker
- Enkle tommelfingerregler: Let anvendelige regler, fx "vælg den billigste løsning først".
- Forsøg og fejl: Prøv muligheder og lær af resultaterne — enkel, men ofte ineffektiv.
- Grådige algoritmer: Vælger lokalt bedste valg i håb om et godt globalt resultat (fx i knapsack‑approximation).
- Lokalsøgning: Ændr en nuværende løsning lidt ad gangen for at finde forbedringer (hill climbing, tabu search).
- Metaheuristikker: Overordnede strategier der styrer søgningen, fx simulated annealing og genetiske algoritmer.
- Admissible heuristics: I søgealgoritmer (fx A*) bruges heuristikker der aldrig overvurderer omkostningen til målet for at sikre optimalitet under visse betingelser.
Eksempler
- Hverdagsbeslutninger: "Se før du springer", "køb billigere mærke først".
- Medicinsk diagnose: Læger bruger tjeklister og mønstre for at indsnævre mulige sygdomme.
- Ruteplanlægning: Brug af nærmeste‑nabo‑valg eller heuristikker der estimerer afstand til mål (som i A*).
- Optimering: Til f.eks. skemalægning eller routing bruger man ofte lokal søgning eller genetiske algoritmer for at finde gode løsninger hurtigt.
- Kognitionsforskning: Menneskelige heuristikker som tilgængelighed (availability), repræsentativitet og forankring (anchoring) forklarer hurtige beslutninger — men også systematiske fejl (bias).
Fordele og ulemper
- Fordele: Hurtigere beslutninger, lavere beregningsomkostning, praktisk anvendelige i virkelige problemer, ofte tilstrækkeligt gode løsninger.
- Ulemper: Ingen garanti for optimalitet eller korrekthed, kan give fejl eller bias, kræver ofte tuning og empirisk evaluering.
Hvornår bør man bruge heuristikker?
- Når eksakte metoder er for langsomme eller umulige i praksis.
- Når man skal have et svar hurtigt og kan tolerere, at det ikke er perfekt.
- Når man vil kombinere hurtige vurderinger med efterfølgende kontrol eller verifikation (fallback til dyrere, sikre metoder ved behov).
Vurdering og bedste praksis
- Test heuristikken empirisk på realistiske eksempler for at måle kvalitet og robusthed.
- Tune parametre og kombinér flere heuristikker for bedre præstation.
- Overvåg resultater i produktion og hav sikkerhedscheck, hvis fejlagtige svar kan få alvorlige konsekvenser.
- For kritiske anvendelser (medicin, sikkerhed) brug heuristik som støtte til — ikke erstatning for — formel verifikation eller ekspertevaluering.
Sammenfattende er heuristikker nyttige redskaber både i dagligdagen og i datalogi: de gør komplekse problemer håndterbare ved at bytte fuldstændig sikkerhed for hurtighed og praksisnær anvendelighed. Forståelse af deres begrænsninger og omhyggelig testning gør dem mest effektive.

