Module 1A: Algoritmes en Software Flashcards
Grote voordeel computers
- Ze zijn niet beperkt tot 1 specifieke taak, maar programmeerbaar voor meerdere taken via softwareprogramma in een specifieke programmeertaal (bv. Java, C++, Python,…) = computerafhankelijk.
Wat is een softwareprogramma?
Softwareprogramma → vertaald naar een uitvoerbaar of executeerbaar programma dat uitgeschreven is in termen van de specifieke instructies die gekend zijn door de computer die je wenst te gebruiken, inclusief kennis van de beschikbare geheugens, invoer en uitvoer. De computer voert aldus de gewenste taak uit naar het beoogde einddoel toe.
Wat is een algoritme?
- Eindige reeks instructies om een (wiskundig) probleem op te lossen, d.w.z. een procedure om het probleem van een gegeven begintoestand naar een beoogd einddoel te brengen. Het is vergelijkbaar met een recept om een gerecht te bereiden.
- Voorbeelden:
- Tekenen cirkel op een computerscherm
- Het numeriek berekenen van de oplossing van een veeltermvergelijking van hogere orde
- Het bepalen van de resultaten van een zoekactie in een webbrowser
Zijn er meerdere algoritmes voor hetzelfde probleem mogelijk?
- Op te lossen probleem vaak wiskundig gedefinieerd en er zijn ook meerdere algoritmes mogelijk voor hetzelfde probleem, maar meestal wel verschil in hoeveelheid tijd en of hardware die nodig is om het probleem op te lossen = complexiteit of efficiëntie van het algoritme.
Staat een algoritme volledig los van computers?
- Ja, maar in de praktijk worden meestal computers gebruikt voor uitvoering algoritmes.
Wat is de implementatie van algoritme?
- Daar waar een algoritme dus de beschrijving is van de oplossingsprocedure van een probleem, is het overeenkomstige computerprogramma (software, geschreven in een of andere programmeertaal) de implementatie van dat algoritme.
- Bij de uitvoering van het computerprogramma is het belangrijk dat het algoritme effectief de juiste taak uitvoert en het correcte resultaat genereert.
Wat neemt toe in onze samenleving?
- Door toenemende rekenkracht van computers, neemt het aantal softwareprogramma’s toe. Daarom nemen ook ethische en juridische implicaties toe van software.
- Bv. foto’s manipuleren en misbruiken.
- Hoe krachtiger de mogelijkheden van software, hoe moeilijker het is om echt van fake en bonafide van malafide te onderscheiden:
- Bv. softwarematig afslanken van je gezicht kan een verkeerd ideaalbeeld creëren en anderen aanzetten tot plastische chirurgie om ook hun gezicht af te slanken
Uit wat bestaat een algoritme?
- Typisch meerdere stappen in sequentie die zich kunnen herhalen (iteratie) of die beslissingen (logica of vergelijkingen) vereisen om de taak te voltooien.
- Een simpel voorbeeld is het algoritme van Euclides om de grootste gemene deler van twee getallen a en b te bepalen. Het algoritme gebruikt de twee wiskundige variabelen A en B.
Hoe stellen we een algoritme voor?
- Vaak wordt dit ook als stroomdiagramma (flowchart) voorgesteld, maar een wiskundige formulering of een formulering in pseudo-computercode is even handig.
Wat is declaratieve kennis?
- Feitelijke uitspraak over een aspect uit de wereld, geeft de definitie van een probleem:
- Bijvoorbeeld is de wiskundige uitdrukking voor de punten die in het tweedimensionale (x, y)-vlak op een cirkel met middelpunt (a, b) en straal r liggen als volgt: (x-a)2+(y-b)2= r2. Maar dit zegt niets over hoe je dergelijke cirkel op een computerscherm moet tekenen.
Procedurele kennis
- Procedurele kennis
- Bv. zet je vanuit een startpunt een klein stapje vooruit, dan draai je over een aantal graden en zet je weer een stapje, enz. Als je heel kleine stapjes en draaihoekjes neemt wordt dit uiteindelijk een cirkel.
Aan welke vereisten moet een algoritme voor ingenieurs en informatici voldoen?
- Correctheid
- Eindigheid
- Uitvoeringssnelheid
- Robuustheid
- Elegantie
Correctheid
Het algoritme moet correct zijn, d.w.z. de juiste output geven voor een gegeven input.
Eindigheid
Het algoritme moet in een eindige tijd stoppen met een zinnig antwoord.
Uitvoeringssnelheid
Hoe snel berekent het algoritme het gewenste antwoord
Robuustheid
- Kan het algoritme overweg met alle mogelijke vormen van invoer, zelfs onverwachte of foutieve invoer (bv. als men een negatief getal of iets dat geen getal is ingeeft in een programma om de vierkantswortel te berekenen)is het algoritme (de computercode) leesbaar en begrijpbaar voor de programmeurs?;
Elegantie
Is het algoritme (de computercode) leesbaar en begrijpbaar voor de programmeurs?
Wat zijn enkele recentere uitdagingen die eveneens belangrijk zijn?
- Is een algoritme ethisch? Zeker als we algoritmes autonoom beslissingen laten nemen (bv. een algoritme dat autonoom CV’s scant en preselecteert voor een jobvacature)
- Is een algoritme duurzaam?
- Wat is de impact op het milieu? (bv. een simpele zoekactie in een browser heeft een sterke ecologische voetafdruk omdat het elders ter wereld een rekenpark laat werken om de zoekresultaten te berekenen).
Wat zijn de eisen van de eindgebruiker?
- Het computerprogramma dat het algoritme implementeert moet eenvoudig om gebruiken zijn, er mooi uitzien, niet te duur zijn, en zo verder.
Hoe kunnen we algoritmes classificeren?
- Deterministische
- Probabilistische of stochastische
- Slimme algoritmes of machinaal leren