Loading
Loading
Grondslagen is het theoretische hart van informatica: hier leer je wat een algoritme precies is, hoe je de snelheid ervan met de grote-O-notatie inschat, en welke datastructuren, automaten en talen onder alle software liggen. Je oefent met zoeken en sorteren, bouwt bomen en grafen, laat eindige automaten strings accepteren, leidt expressies af met een grammatica en rekent tussen binaire, decimale en hexadecimale getallen. Zo krijg je grip op de denkgereedschappen waarmee je in de rest van het vak programmeert en systemen ontwerpt.
6Onderdelenca. 33min leestijd4VaardighedenNiveauBasis 1 · Standaard 3 · Verdieping 2
basisniveau
Zorg dat je de kernbegrippen kunt benoemen en een algoritme of automaat stap voor stap kunt naspelen op een klein voorbeeld.
verhoogd niveau
Leg verbanden: waarom is iets , hoe hangen automaten en grammatica's samen, en hoe onderbouw je met een waarheidstabel dat twee expressies gelijkwaardig zijn?
Lesetiefe: Verdieping
Schriftgröße: Standard
Groei van complexiteitsklassen
Grote-O-notatie
is het aantal stappen bij invoergrootte ; geeft een bovengrens op de groei, waarbij constanten en lagere termen wegvallen.
Rangorde van de complexiteitsklassen
Voor grote groeit elke klasse sneller dan de vorige; deze volgorde bepaalt welke aanpak bij grote invoer nog haalbaar is.
Binair zoeken in 1000 elementen
Je kunt 1000 elementen hooguit tien keer halveren, dus binair zoeken doet maximaal 10 vergelijkingen.
Big-O in getallen
Een gesorteerde lijst bevat 1000 elementen. Bepaal het maximale aantal vergelijkingen dat binair zoeken nodig heeft en vergelijk dat met lineair zoeken.
Binair zoeken vergelijkt de gezochte waarde met het middelste element en gooit daarna de helft van de kandidaten weg. Elke vergelijking halveert dus het zoekgebied.
Van 1000 blijven achtereenvolgens over: 500, 250, 125, 63, 32, 16, 8, 4, 2, 1. Na tien halveringen is er nog één element over.
Het aantal halveringen is naar boven afgerond de tweelog van 1000.
Lineair zoeken doet in het slechtste geval 1000 vergelijkingen (); binair zoeken maar 10 () — honderd keer minder werk, mits de lijst gesorteerd is.
Resultaat: Binair zoeken heeft maximaal 10 vergelijkingen nodig, tegen 1000 voor lineair zoeken.
Veelgemaakte fouten
Actieve herhaling
Een gesorteerde lijst bevat 1.000.000 namen. Bepaal hoeveel vergelijkingen lineair zoeken en binair zoeken in het slechtste geval nodig hebben, en leg met de grote-O-notatie uit waarom het verschil zo groot is.
Actief ophalen
Haal de kernpunten op — onthul ze daarna.
Bronnen: Examenprogramma informatica (HAVO) (CvTE / Examenblad)
Bubble sort, pass voor pass
Aantal vergelijkingen bij selection sort
De som van de vergelijkingen per ronde; de -term overheerst, dus de complexiteit is .
Complexiteit van bubble, insertion en selection sort
Twee geneste lussen over elementen geven een kwadratisch aantal stappen: bij dubbele invoer ongeveer vier keer zo veel werk.
Speel bubble sort volledig na op de rij [5, 1, 4, 2, 8] en tel het totale aantal wissels.
Vergelijk steeds twee buren: (5,1) wissel → [1,5,4,2,8]; (5,4) wissel → [1,4,5,2,8]; (5,2) wissel → [1,4,2,5,8]; (5,8) geen wissel. Drie wissels; de 8 stond al achteraan.
(1,4) geen wissel; (4,2) wissel → [1,2,4,5,8]; (4,5) geen wissel. Eén wissel deze ronde.
(1,2) en (2,4) geven geen wissel. Nul wissels: dat is het teken dat de rij gesorteerd is, dus we stoppen.
Tel de wissels van alle passes op. Dat komt overeen met het aantal 'inversies' (paren die verkeerd om staan) in de beginrij.
Resultaat: De gesorteerde rij is [1, 2, 4, 5, 8], bereikt met 4 wissels.
Veelgemaakte fouten
Actieve herhaling
Speel bubble sort volledig na op de rij [3, 6, 1, 5, 2]. Schrijf de rij na elke pass op en tel het totale aantal wissels.
Actief ophalen
Haal de kernpunten op — onthul ze daarna.
Bronnen: Examenprogramma informatica (HAVO) (CvTE / Examenblad)
Binaire zoekboom
Array-index en hashtabel (gemiddeld)
Toegang tot element van een array en opzoeken in een hashtabel kosten gemiddeld constante tijd, ongeacht de grootte.
Zoeken in een gebalanceerde binaire zoekboom
Bij elke knoop kies je links of rechts, waardoor je het aantal kandidaten telkens ongeveer halveert.
Gerichte graaf
Voeg de getallen 8, 3, 10, 1, 6, 14, 4, 7, 13 in die volgorde in een lege binaire zoekboom in en beschrijf de ontstane structuur.
De eerste 8 wordt de wortel. Voor elk volgend getal geldt: kleiner → naar links, groter → naar rechts, net zo lang tot je een lege plek vindt.
3 < 8 → linkerkind van 8. 10 > 8 → rechterkind van 8.
1 < 8 (links), 1 < 3 (links) → linkerkind van 3. 6 < 8 (links), 6 > 3 (rechts) → rechterkind van 3.
14 > 8, 14 > 10 → rechterkind van 10. 4 < 8, 4 > 3, 4 < 6 → linkerkind van 6. 7 < 8, 7 > 3, 7 > 6 → rechterkind van 6.
13 > 8, 13 > 10, 13 < 14 → linkerkind van 14.
Resultaat: Je krijgt de boom van Afbeelding 4: wortel 8, met bladeren 1, 4, 7 en 13. Zoeken naar 7 volgt kort de weg 8 → 3 → 6 → 7.
Veelgemaakte fouten
Actieve herhaling
Voeg de getallen 6, 2, 8, 1, 4, 7, 9 in die volgorde in een lege binaire zoekboom in. Teken de boom en geef aan welke knopen bladeren zijn.
Actief ophalen
Haal de kernpunten op — onthul ze daarna.
Bronnen: Examenprogramma informatica (HAVO) (CvTE / Examenblad)
Deterministische eindige automaat
Een DFA als vijftal
= toestanden, = invoeralfabet, = overgangsfunctie, = begintoestand, = accepterende toestanden.
Een overgang lezen
In toestand brengt het symbool 1 je naar ; zo legt de overgangsfunctie elke pijl vast.
Bepaal met de DFA uit Afbeelding 6 of de string '1101' wordt geaccepteerd. Schrijf alle doorlopen toestanden op.
Je begint in de begintoestand q0. De string is 1-1-0-1.
In q0 gaat een 1 via de zelf-lus terug naar q0.
Opnieuw houdt de 1 je in q0.
Nu brengt de 0 je van q0 naar q1: je hebt net een 0 gezien, mogelijk het begin van '01'.
In q1 brengt de 1 je naar q2, de accepterende toestand — je zag '01' aan het eind.
De string is op en je bent in q2, dat in F zit. Dus geaccepteerd.
Resultaat: De doorlopen weg is q0 → q0 → q0 → q1 → q2; je eindigt in de accepterende toestand q2, dus '1101' wordt geaccepteerd.
Veelgemaakte fouten
Actieve herhaling
Gegeven de DFA uit Afbeelding 6 (accepteert binaire strings die eindigen op '01'). Bepaal voor de strings '0101', '110' en '001' of ze worden geaccepteerd, door telkens de doorlopen toestanden op te schrijven.
Actief ophalen
Haal de kernpunten op — onthul ze daarna.
Bronnen: Examenprogramma informatica (HAVO) (CvTE / Examenblad)
Parseboom van 3 + 4 * 5
Regel voor een expressie
Een expressie is een expressie plus een term, of gewoon een term; de betekent 'of'.
Regel voor een term
Een term is een term maal een factor, of een factor; hierdoor bindt de vermenigvuldiging sterker dan de optelling.
Regel voor een factor
Een factor is in deze eenvoudige taal precies één cijfer (een terminal).
Leid met de regels , en cijfer de string '3 + 4 * 5' af, en leg uit welke rekenvolgorde de parseboom vastlegt.
We starten met E en passen steeds één regel toe tot er alleen cijfers en tekens overblijven. De linker-nonterminal werken we telkens eerst uit.
Kies E → T, dan T → F, dan F → 3.
De term T rechts van de + wordt 4 5: kies T → T F en werk beide factoren uit tot cijfers.
Omdat 4 en 5 samen onder één term T vallen, groepeert de parseboom ze: eerst 4 * 5 = 20, dan 3 + 20 = 23. De grammatica geeft de vermenigvuldiging dus voorrang.
Resultaat: De afleiding vanuit E slaagt en levert 3 + 4 * 5 op, dus de string is geldig; de parseboom (Afb. 7) legt vast dat de uitkomst 23 is, niet 35.
Veelgemaakte fouten
Actieve herhaling
Gebruik de grammatica , en cijfer. Leid de string '2 * 3 + 1' af en teken de bijbehorende parseboom.
Actief ophalen
Haal de kernpunten op — onthul ze daarna.
Bronnen: Examenprogramma informatica (HAVO) (CvTE / Examenblad)
Waarheidstabel van AND, OR en XOR
Binair naar decimaal met plaatswaarden
Tel de machten van 2 op de posities met een 1 op: .
Decimaal naar hexadecimaal
13 is kleiner dan 16 en komt overeen met het hexcijfer D.
Wet van De Morgan
Een NOT over een AND wordt een OR van de losse NOT's — de operator klapt om.
Waarheidstabel van A ∧ (¬B ∨ C)
Reken om naar decimaal en hexadecimaal, en vul de waarheidstabel van in.
Schrijf de plaatswaarden 8, 4, 2, 1 onder de bits en tel de posities met een 1 op.
13 past in één hexcijfer: de waarde 13 heet in hex D. Dus 1101 binair is 0xD.
Drie variabelen geven 2³ = 8 rijen. Maak eerst tussenkolommen voor ¬B en ¬B ∨ C, en reken dan de AND met A uit.
De expressie is alleen waar als A = 1 én (¬B ∨ C) waar is. Dat gebeurt in de rijen (A,B,C) = (1,0,0), (1,0,1) en (1,1,1); in alle andere rijen is de uitkomst 0.
Resultaat: Er geldt ; de expressie is waar in 3 van de 8 rijen (zie Afb. 9).
Veelgemaakte fouten
Actieve herhaling
Reken om naar decimaal en naar hexadecimaal, en stel de volledige waarheidstabel op van de expressie .
Actief ophalen
Haal de kernpunten op — onthul ze daarna.
Bronnen: Examenprogramma informatica (HAVO) (CvTE / Examenblad)
Referenties en bronnen
CvTE / Examenblad