Algoritmen en datastructuren Flashcards

1
Q

Wat is een algoritme?

A

Een algoritme is een eindige reeks instructies die een probleem oplost of een specifieke taak uitvoert, vaak stap voor stap en in een gestructureerde volgorde.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Wat zijn de belangrijkste kenmerken van een goed algoritme?

A
  1. Correctheid – Het algoritme levert altijd het juiste resultaat.
  2. Efficiëntie – Het algoritme gebruikt zo min mogelijk tijd en geheugen.
  3. Eindigheid – Het algoritme stopt na een eindig aantal stappen.
  4. Duidelijkheid – Het algoritme is begrijpelijk en eenvoudig te implementeren.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Wat is het verschil tussen tijdscomplexiteit en ruimtecomplexiteit?

A

• Tijdscomplexiteit geeft aan hoeveel tijd een algoritme nodig heeft in termen van invoergrootte (bijv. O(n), O(log n)).
• Ruimtecomplexiteit geeft aan hoeveel geheugen een algoritme nodig heeft.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wat is Big-O-notatie en waarom wordt het gebruikt?

A

Big-O-notatie beschrijft de worst-case prestaties van een algoritme, waardoor we kunnen vergelijken hoe snel algoritmen schalen met grotere invoer.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Wat zijn de meest gebruikte tijdscomplexiteiten in Big-O-notatie?

A

• O(1) – Constante tijd (bijv. directe arraytoegang).
• O(log n) – Logaritmische tijd (bijv. binaire zoekalgoritme).
• O(n) – Lineaire tijd (bijv. lineaire zoekalgoritme).
• O(n log n) – Efficiënte sorteeralgoritmen (bijv. mergesort).
• O(n²) – Kwadratische tijd (bijv. bubbel- of selectionsort).
• O(2ⁿ) – Exponentiële tijd (bijv. brute-force combinaties).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Wat zijn de belangrijkste datastructuren en waarvoor worden ze gebruikt?

A
  1. Array – Opslaan van een vaste reeks elementen.
  2. Linked List – Dynamische lijsten waarbij elk element een verwijzing naar de volgende bevat.
  3. Stack (LIFO) – Laatst toegevoegd, eerst verwijderd (bijv. functie-aanroepen in een programma).
  4. Queue (FIFO) – Eerst toegevoegd, eerst verwijderd (bijv. wachtrijen in netwerken).
  5. Hash Table – Snelle zoekacties met sleutels en waarden.
  6. Binary Search Tree (BST) – Hiërarchische structuur voor efficiënte zoekacties.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Wat is het verschil tussen een array en een linked list?

A

• Array: Heeft een vaste grootte en biedt snelle toegang via indexering (O(1)), maar invoegen/verwijderen is traag (O(n)).
• Linked list: Dynamische grootte en efficiënt invoegen/verwijderen (O(1)), maar traag bij willekeurige toegang (O(n)).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Wat is het verschil tussen breadth-first search (BFS) en depth-first search (DFS)?

A

• BFS doorzoekt een graaf/laag voor laag (gebruikmakend van een queue, O(V + E)).
• DFS gaat zo diep mogelijk in een graaf voor terug te keren (gebruikmakend van een stack of recursie, O(V + E)).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Wat zijn de voordelen van een hash table ten opzichte van een array?

A

• Snellere zoekacties: Gemiddeld O(1) voor zoek-, invoeg- en verwijderoperaties.
• Geen vaste grootte: Dynamische aanpassing mogelijk.
• Efficiënter voor sleutelwaarde-koppelingen: Geschikt voor databases en caching.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wat is een greedy algoritme en wanneer werkt het goed?

A

Een greedy algoritme maakt op elk moment de lokaal optimale keuze in de hoop een globaal optimaal resultaat te bereiken. Het werkt goed bij problemen zoals:
• Huffman-codering (datacompressie)
• Kruskal’s algoritme (minimale opspannende boom)
• Dijkstra’s algoritme (kortste pad in een graaf)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly