De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Berekening van de Orde Van een Algoritme

Verwante presentaties


Presentatie over: "Berekening van de Orde Van een Algoritme"— Transcript van de presentatie:

1 Berekening van de Orde Van een Algoritme
De Orde van een algoritme is het aantal operaties dat wordt uitgevoerd bij uitvoering van dit algoritme Als men een schatting wil bekomen van de tijd nodig om een algoritme uit te voeren drukt men dit uit in functie van de input. De orde is een maat voor de complexiteit van een algoritme (onafhankelijk van hardware configuration of programming language) f(n) is O(g(n)) als er 2 positieve constanten K en n0 bestaan zodanig dat f(n) <= Kg(n)  n >= n0.

2 Voorbeeld 1 Een eenvoudige Scheme-functie: Operatoren : if -- null?
Cons -- a-fun -- car my-map -- cdr (define (my-map a-fun a-list) (if (null? a-list) a-list (cons (a-fun (car a-list)) (my-map (cdr a-list)))))

3 Voorbeeld van functie a-fun :
a-fun ==> (lambda (x) (+ x 2)) ==> 1 operatie a-fun ==> (lambda (x) (+ x (* 2 x))) ==> 2 operaties a-fun ==> (define (f x) (if (< x 0) 0 (+ x (f (- x 1))))) ==> het aantal operaties hangt van x af. Voor het voorbeeld zullen we ervan uitgaan dat a-fun uit 1 operatie bestaat.

4 Berekening van de Orde vanaf het Algoritme
Input : waarde van a-list ‘() ‘(1) ‘(1 2) ‘(1 2 … n) Aantal operaties : 2 7 + 2 ==> 9 ==> 16 n * 7 + 2 Het aantal operaties groeit met n = lengte van de lijst ==> O(n)

5 Berekening van de Orde met Simulaties
Als er geen pure iteratieve operatoren (bv. Do, repeat, maar ook append, reverse…) wordt gebruikt in de body van mijn Scheme functie, staat de Orde van het geassocieerd algoritme in direct verband met het aantal recursieve oproepen van de functie. => goed bekijk welke type functies worden gebruikt. Men kan in dit geval de Orde van het algoritme bepalen door enkel naar het aantal recursieve stappen ervan te gaan kijken

6 Ik voeg een counter toe en herschrijf my-map zodat de counter wordt geincrementeerd elke keer dat een recursieve oproep is gedaan. (define counter 0) (define (my-map a-fun a-list) (define (recur a-list) (set! counter (+ counter 1)) (if (null? a-list) a-list) (cons (a-fun (car a-list)) (recur (cdr a-list))))) (set! counter 0) (recur a-list) (display counter))

7 Simulaties Input : waarde van a-list ‘() ‘(1) ‘(1 2) ‘(1 2 3) …
‘(1 2 … 20) Waarde van Counter : 1 2 3 4 21

8 Groeit de rekentijd wel met n?
Om dat te kunnen zien, moet de deling van het aantal recursieve oproep door n naar een constante gaan voor n groot genoeg: n = 1 ==> 2/1 = 2 n = 2 ==> 3/2 = 1.5 n = 3 ==> 4/3 = … n = 20 ==> 21/20 ~ 1 Als n   (het aantal recursieve oproepen / n)  1 (= constante) ==> O(n)

9 Voorbeeld 2

10 Resultaten (sim-orde 20 (lambda (x growth) (/ x (expt 1
Resultaten (sim-orde 20 (lambda (x growth) (/ x (expt growth)))) 1 ==> counter : counter / 1.62 ^ n : 2 ==> counter : counter / 1.62 ^ n : 3 ==> counter : counter / 1.62 ^ n : 4 ==> counter : counter / 1.62 ^ n : 5 ==> counter : counter / 1.62 ^ n : ... 18=> counter : counter / 1.62 ^ n : [Garbage collecting... 44K of 512K] 19=> counter : counter / 1.62 ^ n : 20=> counter : counter / 1.62 ^ n : done Als n   (het aantal recursieve oproepen / ^n)  1, (= constante) ==> O(~1.62n)

11 Dominantieregels O(1) < O (log2n) < O(n) < O(n log2n) <
O(n2) < O(n3) < O(2n) < O(10n)

12 Opdracht Bereken de Orde van een scheme-Functie “length” die de lengte van een lijst bepaalt. Doe de berekening op de twee wijzen (m.a.w. vanaf het algoritme en door simulaties). Men kan een polynoom voorstellen door middel van een Vector (cf Grimaldi pg 307 Oef 5) Schrijf je eigen functie (power x n) die xn berekent. Schrijf ook een functie die de waarde van een polynoom p(x) berekent met behulp van power. Bereken de Orde van polynoom op de twee wijzen (vergeet geen rekening te houden met de Orde van power) Implementeer ook de manier beschreven in Grimaldi (pg 308 Oef 6). Die dus geen gebruik maakt van power om de waarde van een polynoom p(x) te berekenen. Bereken de Orde ervan. Welke van de twee functies is optimaal?


Download ppt "Berekening van de Orde Van een Algoritme"

Verwante presentaties


Ads door Google