Heuristieken zijn niets nieuws, ze spelen een belangrijke rol in ons dagelijks leven, zowel bij het oplossen van problemen als bij het nemen van beslissingen. Omdat de wereld tegenwoordig vol zit met informatie, en onze hersenen maar een bepaalde hoeveelheid daarvan kunnen verwerken, helpen heuristieken ons daar enorm bij. Want als je zou proberen elk aspect van elke situatie of beslissing te analyseren, zou je nooit iets gedaan krijgen. We nemen elke dag duizenden beslissingen en over de meeste daarvan denken we niet echt na, we “weten” hoe we ons in bepaalde situaties moeten gedragen op basis van onze ervaring en dat is waar het bij heuristiek om gaat. Wanneer we een probleem proberen op te lossen of een beslissing nemen, grijpen we vaak naar deze mentale shortcuts wanneer we een snelle oplossing nodig hebben.
Dus, wat is heuristisch programmeren?
Heuristieken zijn mentale snelkoppelingen die ons helpen snel beslissingen te nemen en te oordelen zonder dat we veel tijd hoeven te besteden aan het onderzoeken en analyseren van informatie. Meestal concentreren ze zich op één aspect van een complex probleem en negeren ze andere. Onder de meeste omstandigheden werken ze goed, maar ze kunnen leiden tot systematische afwijkingen van logica, waarschijnlijkheid of rationele keuze. Voorbeelden van heuristieken zijn het gebruik van een vuistregel, een educated guess, een intuïtief oordeel, een schatting, stereotypering, profilering of gezond verstand.
In de informatica, kunstmatige intelligentie en wiskundige optimalisatie is een heuristiek een techniek om een probleem sneller op te lossen wanneer klassieke methoden te traag zijn, of om een oplossing bij benadering te vinden wanneer klassieke methoden er niet in slagen een exacte oplossing te vinden. Dit wordt bereikt door optimaliteit, volledigheid, nauwkeurigheid of precisie te ruilen voor snelheid.
Een heuristische programmering maakt gebruik van een praktische methode, die niet gegarandeerd optimaal, perfect, logisch of rationeel is, maar in plaats daarvan volstaat om een onmiddellijk doel te bereiken. Het is belangrijk te benadrukken dat heuristieken de strategieën zijn die zijn afgeleid van eerdere ervaringen met soortgelijke problemen. Deze strategieën berusten op het gebruik van gemakkelijk toegankelijke, zij het losjes toepasbare, informatie om het oplossen van problemen bij mensen, machines en abstracte vraagstukken te sturen.
En het doel van een heuristiek is om binnen een redelijk tijdsbestek een oplossing te produceren die goed genoeg is voor het oplossen van het voorliggende probleem.
De afwegingscriteria om te besluiten of een heuristiek moet worden gebruikt voor het oplossen van een gegeven probleem:
- Optimaliteit: Wanneer er meerdere oplossingen bestaan voor een gegeven probleem, garandeert de heuristiek dan dat de beste oplossing zal worden gevonden? Is het eigenlijk wel nodig om de beste oplossing te vinden?
- Volledigheid: Als er meerdere oplossingen bestaan voor een bepaald probleem, kan de heuristiek ze dan allemaal vinden? Hebben we eigenlijk wel alle oplossingen nodig? Veel heuristieken zijn bedoeld om slechts één oplossing te vinden.
- Nauwkeurigheid en precisie: Kan de heuristiek een betrouwbaarheidsinterval geven voor de beweerde oplossing? Is de foutbalk op de oplossing onredelijk groot?
- Uitvoeringstijd: Is dit de best bekende heuristiek voor het oplossen van dit type probleem? Sommige heuristieken convergeren sneller dan andere. Sommige heuristieken zijn slechts marginaal sneller dan klassieke methoden.
En nu is de belangrijkste vraag: waarom vertrouwen we op heuristieken?
Psychologen hebben een paar verschillende theorieën geopperd:
- Effort reduction: Volgens deze theorie gebruiken mensen heuristieken als een vorm van cognitieve luiheid. Heuristieken verminderen de mentale inspanning die nodig is om keuzes te maken en beslissingen te nemen.
- Attribuutvervanging: Andere theorieën suggereren dat mensen eenvoudigere maar gerelateerde vragen vervangen door meer complexe en moeilijke vragen.
- Snel en zuinig: Weer andere theorieën beweren dat heuristieken eigenlijk nauwkeuriger zijn dan dat ze bevooroordeeld zijn. Met andere woorden, we gebruiken heuristieken omdat ze snel en meestal juist zijn.
Dit in tegenstelling tot algoritmisch programmeren, dat is gebaseerd op wiskundig bewijsbare procedures. Maar wat hier belangrijk is om te begrijpen, is dat Heuristisch programmeren wordt gekenmerkt door programma’s die zelflerend zijn; ze worden beter met ervaring. Heuristische programma’s bereiken niet altijd het allerbeste resultaat, maar leveren meestal wel een goed resultaat op.