WIS5 1 5 Afronden en afkappen 5.1 Floor en ceiling Floor en ceiling Conversiefuncties van reële getallen naar gehele getallen. x = het grootste gehele getal et x x = het kleinste gehele getal et x Uitspraak: x als floor x of entier x, en x als ceiling x. Verband et typeconversie in Java: { x als x 0 (int)x = x als x < 0 Grafiek Rekenregels Voor x R en n Z geldt x 1 < x x x < x + 1 x x = [x Z] x = x x = x x = n n x < n + 1 x = n x 1 < n x x = n n 1 < x n x = n x n < x + 1 x + n = x + n x + n = x + n
WIS5 Rekenregels Voor x R en n Z geldt Bewijs (van de eerste equivalentie): x < n { x x } x < n {beide leden geheeltallig} x n 1 { x 1 < x } x 1 < n 1 {tel 1 op bij beide leden} x < n x < n x < n n < x n < x x n x n n x n x Geheeltallige logarite Linear search int ilg(int n) { int k = 0; int t = 1; // invariant t = k while (t < n) { t*=; k++; } // k iniaal et k n return k; } Dit prograa berekent log n. Aantal bits Noe bits(n) het aantal bits in de binaire voorstelling van een getal n. Odat geldt (1 } {{ 1} ) = 1 (1)
WIS5 3 bits(n) {(1)} n 1 {tel bij beide leden 1 op} n + 1 {onotonie van log } log(n + 1) {eigenschap } log(n + 1) dus bits(n) = log(n + 1) Wortel van floor = x. Bewijs: voor gehele niet- Te bewijzen: voor reële niet-negatieve x is negatieve is x < {eigenschap van } x < {onotonie van kwadrateren} x < {eigenschap van } x < {onotonie van kwadrateren} x < {eigenschap van } x < x Integers in een interval Gegeven een interval tussen de reële getallen α en β, de eindpunten al dan niet daarbij ingesloten, hoeveel gehele getallen bevat dit? Voor α < β en gehele n geldt n [α.. β] {per definitie} α n β {eigenschap van en } α n β dus het aantal gehele getallen in [α.. β] is β α + 1. Evenzo: [α.. β) β α (α.. β] β α (α.. β) β α 1
WIS5 4 Roulette Een getal n et 1 n 1000 heet een winnaar als 3 n \n. Het aantal winnaars is 1000 n=1 [ 3 n \n] = {introduceer teller k, eenpuntsregel} k,n [k = 3 n ][k\n][1 n 1000] = {introduceer teller, eenpuntsregel} k,,n [k = 3 n ][n = k][1 n 1000] = {splits af n = 1000 } 1 + k,,n [k = 3 n ][n = k][1 n < 1000] = {eigenschap van } 1 + k,,n [k3 n < (k + 1) 3 ][n = k][1 n < 1000] = {eliinatie teller n, eenpuntsregel} 1 + k, [k3 k < (k + 1) 3 ][1 k < 1000] = {herordenen dubbelso, erk op k 3 < 1000 alss k < 10 } 1 + k, [1 k < 10][k < (k + 1) 3 /k] = {aantal integers in interval} 1 + k [1 k < 10]( (k + 1) 3 /k k ) Roulette Het aantal winnaars is 1 + k [1 k < 10]( (k + 1) 3 /k k ) = { (k + 1) 3 /k = k + 3k + 3 + 1/k } 1 + 9 k=1 (3k + 4) = {rekenkundige rij} 1 + 9 7+31 = {rekenen} 17 Asyptotische roulette Vervang 1000 in het voorgaande door N. Dan is het aantal winnaars k, [k3 k < (k + 1) 3 ][1 k N] = {herordenen dubbelso, noe K := 3 N } k, [1 k < K][k < (k + 1) 3 /k] + [K N/K] = {eerste so als voorheen; tweede via aantal integers in interval} K 1 k=1 (3k + 4) + ( N/K K + 1 ) = {rekenkundige rij; K Z } 1 (7 + 3K + 1)(K 1) + ( N/K K + 1 ) = {rekenen} 1 K + 5 K 3 + N/K Hierin is, voor grote waarden van N, als benadering N/K N /3 en 1 K 1 N/3, terwijl de andere teren van de orde van grootte van N 1/3 of inder zijn. We schrijven het
WIS5 5 aantal winnaars als 3 N/3 + O(N 1/3 ) Recurrente betrekkingen Veel recurrente betrekkingen kunnen worden vereenvoudigd worden door floor en ceiling te gebruiken. In college zagen we als forule voor M n, het aantal vergelijkingen nodig voor het sorteren van n eleenten et Mergesort, M k = M k + k 1 M k+1 = M k + M k+1 + k Dit kan eenvoudiger worden geschreven (en opgelost!) als M n = M n/ + M n/ + n 1 In college 1 hadden we de recurrente betrekking voor het Josephus-problee wat eenvoudiger is te schrijven als J(k) = J(k) 1 J(k + 1) = J(k) + 1 J(n) = J( n/ ) ( 1) n 5. Geheeltallige deling Geheeltallige deling Voor willekeurige x en y 0 noteren we x od y = x y x/y Uitspraak: x odulo y. Dit is voor positieve gehele x en y de rest bij deling van x door y, in Java genoteerd als x%y. Bijvoorbeeld 5 od 3 = 5 od 3 = 1 5 od 3 = 1 5 od 3 = (Merk op dat in Java 5%(-3) == en (-5)%3 == -, dus bij negatieve operanden steen de definities niet overeen.) Voor de volledigheid definiëren we nog x od 0 = x
WIS5 6 Rekenregels 0 x od y < y als y > 0 0 x od y > y als y < 0 x = x + x od 1 c(x od y) = (cx) od (cy) 5.3 Soatie Tekst in koloen Gegeven een tekst van n regels die we in koloen willen verdelen. Dan zijn er n od lange koloen, ter lengte n/. En er zijn n od korte koloen, ter lengte n/. Tekst in koloen Laat k lopen over het gebied 0 k <. Dan n k k = {zij q := n/ en r := n od } k q+r k = {rekenen} q + r k k = {eigenschap van, gebruik q geheel} ( q + r k ) k = {tersplitsing, constante ter} q + r k k = { 0 r < } q + k [k < r] = {doeinsplitsing, constante ter} q + r = {definitie van q en r, definitie van od } n Merk op: n k is de lengte van kolo k in het voorgaande problee.
WIS5 7 So van wortels Stilzwijgend laten we k en alleen over niet-negatieve gehele getallen lopen. k [k < n] k = {introduceer teller ; eenpuntsregel} k, [k < n][ = k ] = {eigenschap } k, [k < n][ k < + 1] = {onotonie kwadrateren} k, [k < n][ k < ( + 1) ] = {doeinsplitsing} k, [ k < ( + 1) n] + k, [ k < n < ( + 1) ] = {zij a := n } k, [ k < ( + 1) ][ + 1 a] + k, [ = a][a k < n] So van wortels De eerste so geeft k, [ k < ( + 1) ][ + 1 a] = {constante ter} ( ( + 1) ) [ + 1 a] = {rekenen} ( + 1)[ < a] = {zie ( college 4} + 3 1) [ < a] = {notatie} a ( 0 + 3 1) δ = {differentie-soatiestelling} 3 a3 + 3 a = {definitie van a i } 3 a(a 1)(a ) + 3 a(a 1) = {rekenen} 3 a3 1 a 1 6 a So van wortels De tweede so geeft k, [ = a][a k < n] = {eenpuntsregel} k a[a k < n] = {constante ter} a(n a ) Conclusie: n 1 k = na 1 3 a3 1 a 1 6 a k=0
waarin a = n. Asyptotisch dus 3 n3/. WIS5 8