In de informatica is een algoritme een eindige reeks goed gedefinieerde, door de computer implementeerbare instructies, doorgaans om een klasse problemen op te lossen of een berekening uit te voeren. Het is een stapsgewijze procedure waarbij invoer (gegevens) nodig is, deze wordt verwerkt en een uitvoer (resultaat) wordt geproduceerd.
Een formele definitie benadrukt verschillende belangrijke kenmerken:
* Eindigheid: Het algoritme moet eindigen na een eindig aantal stappen. Het kan niet eeuwig doorgaan.
* Bepaaldheid: Elke stap moet nauwkeurig worden gedefinieerd; de uit te voeren acties moeten per geval strikt en ondubbelzinnig worden gespecificeerd. Er mag geen ruimte zijn voor interpretatie.
* Invoer: Een algoritme heeft nul of meer invoer (hoeveelheden die er aanvankelijk aan worden gegeven voordat het algoritme begint).
* Uitvoer: Een algoritme heeft een of meer outputs (grootheden die een gespecificeerde relatie hebben met de inputs).
* Effectiviteit: Elke stap moet haalbaar zijn, wat betekent dat het iets moet zijn dat precies en in een eindige tijd kan worden gedaan. Het gaat om handelingen die voldoende basaal zijn om in principe exact en in een eindige tijd te kunnen worden uitgevoerd.
In wezen is een algoritme een recept of een reeks instructies voor het oplossen van een specifiek probleem. Het is niet zomaar een programma (hoewel het kan worden geïmplementeerd als een programma in een programmeertaal), maar eerder de onderliggende logische procedure die het programma belichaamt. Hetzelfde algoritme kan in veel verschillende programmeertalen worden geïmplementeerd.
Een recept voor het bakken van een cake is bijvoorbeeld analoog aan een algoritme. Het specificeert de ingrediënten (input), de stappen (instructies) en het eindproduct (output). Een sorteeralgoritme, zoals bellensortering of samenvoegsortering, is een nauwkeurige reeks stappen om een lijst met items in een specifieke volgorde te ordenen. |