Algoritmische problemen

advertisement
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(n2) :kwadratisch
O(2n) : 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 = 2k - 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 + 2k - 1 x k)/n =
((k-1) x 2k - 1)/n =
(n+1)x(2log(n+1)-1)/n)+1/n =
->
O(log n)
2log (n+1) - 1
Download