2. HOOFDSTUK 2: ALGORITMEN EN PROGRAMMEREN
1. Algoritmen
2.1.1 Definitie
⇒vb. recept van een chocoladecake is dus ook een algoritme
Eindige reeks instructies
⇒Instructies: welbepaalde elementaire handelingen
• “…een laagje kokend water…” > Welbepaald en elementair?
• Specifiëring hangt af van de beoogde uitvoerder van het algoritme
• Instructie moet duidelijk en uitvoerbaar zijn voor uitvoerder
⇒Eindige reeks instructies?
• Zoniet wordt beoogd doel niet bereikt
• Oneindige reeks? Doel zal nooit bereikt worden (algoritme moet bereikbaar doel garanderen)
• Eindig in aantal én tijd ⇒ als de tijd eindig is, zal het aantal ook eindig zijn
Torens van Hanoi ⇒Bemerk: de instructies waar in het algoritme van gebruik gemaakt kan worden om dit
probleem op te lossen, zijn a-priori bepaald, specifiek en in aantal beperkt (schijven kan je verplaatsen tussen
palen, grote schijf mag nooit op een kleine schijf).
Traveling Salesman Problem (TSP) ⇒Zijn de instructies waar in het algoritme van gebruik gemaakt kan worden
om dit probleem op te lossen, zijn a-priori bepaald, specifiek en in aantal beperkt?
= Dit is geen algoritme want er is geen efficientie
2.1.2 Instantiaties, correcte en incorrecte algoritmen
Een instantiatie van een probleem betreft een specifieke begintoestand en doel
• Bv., een instantiatie van het TSP probleem vereist het specifiëren van:
• Het wegennetwerk (inclusief reistijden)
• Locatie van klanten en hun vraag
• Beschikbare vloot (aantal trucks, laadcapaciteit, etc.)
• Condities die van toepassing zijn op de oplossing Bv., maximale reistijden per chauffeur
Een correct algoritme bereikt voor iedere instantiatie het beoogde doel
• M.a.w., het algoritme lost het betreffende probleem op
Een incorrect algoritme bereikt niet voor iedere instantiatie het beoogde doel
• Voor sommige bereikt het mogelijks wel het doel
• Voor andere wordt mogelijks zelfs geen uitkomst gegenereerd
2. Computeralgoritmen
2.2.1 Definitie
1
,Verschil tussen data en informatie
Data Alle gegevens die kunnen worden beschreven met een reeks bits (nullen en enen). Dit betekent
simpelweg dat er een elektrisch signaal is of niet. Op zichzelf heeft data nog geen betekenis.
• alles dat kan opgeslagen worden als een bitsequentie
Informatie Gegevens die in de vorm van een bitssequentie kunnen worden weergegeven en een nuttige
betekenis hebben voor een eindgebruiker
⇒Informatie ontstaat wanneer data wordt verwerkt en geïnterpreteerd.
• alles dat kan opgeslagen worden als een bitsequentie … dat utiliteit of waarde heeft voor
een gebruiker
Subjectief: wat informatie is, hangt af van een gebruiker (i.e., van een subject)
Computeralgoritme: creërt waarde door het omzetten van data naar informatie
• Bv.: recommender systems (Spotify, Netflix, …)
• Bv.: ChatGPT: antwoord op een vraag = informatie (en vraag = data)
Ø Computeralgorimte probeert data te verwerken tot informatie
• Uitvoer van algoritme kan ook de aansturing betreffen van een robot (= gebruiker)
Bv.: Boston Dynamics, bankautomaat
2.2.2 Sorteren van een rij gehele getallen
Bubble Sort = eenvoudig sorteeralgoritme waarbij een lijst meerdere keren wordt doorlopen.
Tijdens elke iteratie worden opeenvolgende elementen vergeleken en indien nodig verwisseld
(hier visueel weergegeven)
Hoe algoritme noteren? Tekstueel, visueel, pseudocode, combinatie, …
Voorbeeld pseudocode (slide 19) = Algoritme dat toelaat geld af tehalen aan een bankautomaat
• vanuit perspectief van systeem (niet van de gebruiker!)
2.2.3 Definitie
2
,⇒een algoritme beschrijft dus eigen een proces in
3
, Geordend?
De instructies in een algoritme moeten een zorgvuldig opgebouwde structuur hebben als het gaat om
de volgorde waarin instructies moeten uitgevoerd worden
• Uitvoeren instructies in willekeurige volgorde leidt niet (noodzakelijk) tot beoogde uitkomst
‘afhankelijke activiteiten’
• Geen losse verzameling instructies, maar geordende set
• Tenzij anders gespecifieerd
Betekent niet dat ALLE instructies in een vooraf vastgelegde volgorde uitgevoerd moeten
worden om tot hetzelfde resultaat te komen.
• Chocoladecake, instructies 2 en 3?
• Resultaat wordt mogelijks bekomen door samenvoegen deelresultaten,
• die afzonderlijk kunnen gerealiseerd worden, los van elkaar, in een niet geordende manier
• Parallel computing! Multi-core processors
⇒Parallel computing
Parallele (multi-threaded) algoritmen
• Omvatten meerdere reeksen instructies, die expliciet bepaald zijn in het algoritme, en
die afzonderlijk kunnen uitgevoerd worden
• Die ontworpen zijn precies om door verschillende processoren (cfr. deel 1) in een multi-
processormachine uitgevoerd te worden
• Niet alle algoritmen kunen (her-)ontworpen worden in een parallele structuur, bv. oorzaak-
gevolg ketens, verkeerssimulatie, …
Ondubbelzinnig?
Ondubbelzinnig: vereist omdat computer niet kan interpreteren
•Of om er voor te zorgen dat programmeur niet verkeerd begrijpt
•Daartoe moet computeralgoritme exact specifiëren wat er moet gebeuren
• Bv., recept chocoladecake: “Een snufje zout” ondubbelzinning?
•Dubbelzinnigheid hangt af van de notatie van het algoritme:
• Notatie in natuurlijke taal: gevoelig aan dubbelzinnigheid
• Notatie in (pseudo-) programmeertaal: geen dubbelzinnigheid
… of toch wel interpreteren?
• Algoritmes in ontwikkeling die een computer in staat stellen te interpreteren
• Kunnen tegenwoordig WEL om met onze dubbelzinnigheid in onze natuurlijke taal
• Bv., ChatGPT, DALL.E 2, DeepSeek, …
Computer-uitvoerbaar?
Zijn de volgende instructies computer-uitvoerbaar of doenbaar?
• Genereer een willekeurig getal tussen 0 en 1
• Muziek componeren
• Maak een lijst van alle natuurlijke getallen
Ja: indien er een computer-algoritme bestaat dat deze hogere orde instructies kan uitvoeren
• Waarbij dat algoritme zelf enkel gebruik maakt van doenbare instructies
• Bemerk: de grens van wat computer-uitvoerbaar is evolueert as we speak
Neen: indien niet
• Bv.: maak een lijst van alle natuurlijke getallen, …
• Een instructie is doenbaar indien ze bestaat uit doenbare instructies
• Hier zijn een oneindig aantal intructies nodig
→Een instructie is doenbaar indien ze bestaat uit doenbare instructies
→Een instructie bestaat op het laagste niveau uit een reeks basisinstructies in machinetaal
→Een algoritme is in die zin zelf een instructie, en een instructie (behalve basisinstructies) een algoritme
→Een computer-uitvoerbare instructie is daarom per definitie uitvoerbaar in eindige tijd
4