Gedistribueerde Algoritmen

Inleiding

In de cursus Algoritmen en Programma's heb je kennis gemaakt met het begrip algoritme. Algoritmen zijn voor een computer wat recepten zijn voor een kok: een reeks instructies die in een eindig aantal stappen van een begintoestand naar een beoogd doel leidt. Daar waar een recept helpt om iets lekkers te maken, zoals een appeltaart of een aardappelsalade, is het doel van een algoritme om iets uit te rekenen: de kortste route tussen twee steden, een plaatje van een fractal, enzovoorts.

De algoritmen in de cursus Algoritmen en Programma's worden uitgevoerd door één enkele computer.  Maar in computernetwerken zijn ook algoritmen nodig waarbij een aantal computers samen een probleem oplossen. We noemen dit gedistribueerde algoritmen.  Voorbeelden van problemen waarbij gedistribueerde algoritmen een rol spelen zijn:

Zonder te overdrijven kunnen we stellen dat het Internet en de moderne informatiemaatschappij onmogelijk zouden zijn zonder gedistribueerde algoritmen. Het ontwerpen van gedistribueerde algoritmen is uitdagend omdat je de activiteiten van meerdere computers op elkaar moet afstemmen. Omdat al deze computers tegelijk rekenen en berichten versturen, is het soms razend moeilijk om overzicht te behouden. Het is dus ook lastig om aan te tonen dat deze algoritmen altijd werken. In dit onderwerp maak je kennis met een paar eenvoudige gedistribueerde algoritmen en zul je leren hoe Uppaal kan helpen om de correctheid ervan aan te tonen.