Algoritmische problemen Onbeslisbaar / niet-berekenbaar Geen algoritme mogelijk Tegel- of domino-problemen Woordcorrespondentie-probleem Syntactisch equivalentie probleem Onhandelbaar Geen redelijk algoritme mogelijk Aapjespuzzel 2-D rangschikkingen Kortste pad Hamilton pad (Les)rooster Kleuren van grafen en kaarten Handelbaar Redelijk algoritme mogelijk
Algoritmische problemen Wat is een redelijk algoritme ? Gebruik van: Tijd Geheugenruimte Samenhang tussen invoer en gebruik van tijd en ruimte Complexiteit van algoritmen Tellen van handelingen / vergelijkingen om van input naar gewenste output te komen O - notatie (grote O notatie) O(log n) : logaritmisch O(n) : lineair O(n 2 ) :kwadratisch O(2 n ) : exponentieel
Complexiteit Lineair zoeken: Array A met n namen; X moet gezocht Onbekend of array geordend is X komt voor in het array Met kans 1/n te viden op plek I Hoe complex is dit probleem ? Hoeveel vergelijkingen zijn er nodig ? Als X op plek 1 staat -> 1 vergelijking Als X op plek 2 staat -> 2 Als X op plek n staat -> n Algemeen: (1+2+3+…+n)/n= 0.5 n (n+1)/n = 0.5 (n+1)-> O(n)
Complexiteit Binair zoeken: Array A met n namen; X moet gezocht Array is alfabetisch geordend X komt voor in het array Hoe complex is dit probleem ? Hoeveel vergelijkingen zijn er nodig ? Stel n = 2 k - 1; k = 3, dan n = 7 Stap 1: als X middelste element, -> 1 Anders stap 2: Als X middelste -> 2 Anders stap 3: Als X middelste -> 3 In het algemeen: (1x1 + 2x2 + 4x3 + 2 k - 1 x k)/n = ((k-1) x 2 k - 1)/n = (n+1)x( 2 log(n+1)-1)/n)+1/n = 2 log (n+1) - 1->O(log n)