LO118D Forelesning 4 (DM) Mer funksjoner + følger 28.08.2007
1 Funksjoner 2 Følger og strenger
Funksjoner En funksjon f fra X til Y sies å være en-til-en (injektiv) hvis det for hver y Y er maksimalt én x X med f (x) = y En funksjon f fra X til Y sies å være på Y (surjektiv) hvis rekkevidden til f er Y med f (x) = y En funksjon som er både injektiv og surjektiv kaller vi en bijeksjon
Invers av funksjoner Gitt en injektiv, surjektiv funksjon f fra X til Y Da har vi også en injektiv, surjektiv funksjon {(y, x) (x, y) f } Denne funksjonen kalles den inverse funksjonen av f og skrives f 1
Komposisjoner La g være en funksjon fra X til Y La f være en funksjon fra Y til Z Vi kan da definere komposisjonen av f med g, f g Dette er funksjonen (f g)(x) = f (g(x))
Komposisjoner Vi kan også gå andre veien og dekomponere en komposisjon i enklere funksjoner Et eksempel er kjerneregelen i derivasjon
Binære og unære operatorer En funksjon fra X X til X kaller vi en binær (binary) operator på X Eksempel: f (x, y) = x + y, x, y R En funksjon fra X til X kaller vi en unær (unary) operator eller mono-operator på X Eksempel: f (x) = x 2, x R
Gulv og tak Gulv og tak av reelle tall. Gulvet av x er det største heltallet som er mindre eller lik x og vi skriver x Taket av x er det minste heltallet som er større eller lik x og vi skriver x
Modulus Modulus er en viktig operator Vi definerer modulus som resten av divisjonen mellom de positive heltallene x og y Vi skriver x mod y, i mange programmeringsspråk x % y
ISBN-nummer ISBN-numre består av ti siffer i fire deler skilt med bindestrek: 1 Gruppekode 2 Forlagskode 3 Unik id hos forlaget 4 Kontrollsiffer
ISBN-nummer Følgende algoritme brukes for å beregne kontrollsifferet: Kontrollsiffer Input: De ni første sifrene, s 1 til s 9 Output: Kontrollsifferet 1 mod11(s 1,..., s 9 ) 2 sum = 0 3 for i in 1 to 9 4 sum = sum + s i i 5 return sum mod 11
Oppgave Bruk algoritmen og sjekk at kontrollsifferet til lærebokens ISBN-nummer er korrekt: 0-13-127767-7 Kontrollsiffer Input: De ni første sifrene, s 1 til s 9 Output: Kontrollsifferet 1 mod11(s 1,..., s 9 ) 2 sum = 0 3 for i in 1 to 9 4 sum = sum + s i i 5 return sum mod 11
Hash-funksjoner Hash-funksjoner brukes for å gi en mengde data et digitalt fingeravtrykk Dette fingeravtrykket kan brukes til å identifisere eller kategorisere dataene Eksempel Vi skal legge tall inn i cellene i en datamaskins minne.
Hash-funksjoner Hash-funksjoner er som regel ikke injektive Må legge inn en måte å håndtere kollisjoner på Mer avaserte hash-funksjoner er designet for å ha så få kollisjoner som mulig En utbredt hash-funksjon er MD5
Tilfeldige tall Datamaskiner kan ikke generere virkelig tilfeldige tall Vi sier derfor at de er pseudotilfeldige En vanlig måte å lage tilfeldige tall på er lineær kongruensmetoden Gitt fire heltall m, a, c og s kan neste tilfeldige tall beregnes med: x 0 = s x n = (ax n 1 + c) mod m
Oppgave Finn de tre neste pseudotilfeldige tallene (x 1, x 2, x 3 ) ved hjelp av lineær kongruensmetoden x 0 = s x n = (ax n 1 + c) mod m når m = 9, a = 7, c = 4 og s = 3
Følger En følge er en spesiell type funksjon, der domenet er en mengde påfølgende heltall {1, 2, 3, 4,...} Det nte elementet kalles gjerne C n, men kan også skrives på den vanlige funksjonsmåten, C(n) n kalles indeksen til følgen En følge s kan skrives s eller {s n } Domenet spesifiseres med {u n } slutt n=start
Følger En følge er stigende (increasing) hvis s n < s n+1 for alle n hvor n og n + 1 er i følgens domene En følge er synkende (decreasing) hvis s n > s n+1 for alle n hvor n og n + 1 er i følgens domene En følge er ikke-synkende (nondecreasing) hvis s n s n+1 for alle n hvor n og n + 1 er i følgens domene En følge er ikke-stigende (nonincreasing) hvis s n s n+1 for alle n hvor n og n + 1 er i følgens domene
Delfølger Vi kan lage en ny følge ved å plukke ut en deler av en eksisterende følge Vi må passe på at rekkefølgen er den samme, men trenger ikke å ta påfølgende elementer Dette kaller vi en delfølge (subsequence)
Sum og produkt Vi kan summere opp alle elementene i en følge n a i = a m + a m+1 +... + a n i=m Dette kaller vi sumnotasjon eller sigmanotasjon Vi kan også multiplisere opp alle elementene i en følge n a i = a m a m+1... a n i=m Dette kaller vi produktnotasjon
Endringer Noen ganger kan vi ha nytte av å endre grensene og indeksen i en sum Eksempelvis kan vi bytte ut indeksen i med j hvor i = j 1 i Da får vi den nye summen n+1 j=1 n ir n i i=0 (j 1)r n j+1
Strenger En streng er en endelig følge av karakterer Weee, dette er en streng! Internt representerer en datamaskin all informasjon som strenger av 0 og 1, det kaller vi bitstrenger eller binære strenger
Strenger Definisjon En streng over X er en endelig følge av elementer fra X, der X er en endelig mengde Siden en streng er en følge, så er rekkefølgen viktig, abba baba Vi kan angi repetisjoner i en streng med superskript, aaabbcccc = a 3 b 2 c 4
Strenger En tom streng kalles nullstreng og angis med λ Mengden av alle strenger over X inkludert nullstrengen skrives X Mengden av alle ikke-tomme strenger over X skrives X + Dette kjenner vi igjen fra regulære uttrykk
Konkatenering Vi kan slå sammen strenger og lage nye strenger Dette kalles konkatenering α = ab, β = ba αβ = abba
Delstrenger Definisjon En streng β er en delstreng av α hvis det finnes strenger γ og δ slik at α = γβδ En delstreng lages ved å plukke ut noen eller alle påfølgende elementer fra en annen streng Legg merke til at dette skiller seg fra delfølger
Presentasjonsøving Første blir neste onsdag, vi bruker regnetimen på morgenen til å jobbe med øvingen Det er obligatorisk oppmøte, man må ha vært på fire av fem presentasjonsøvinger Dere presenterer oppgavene fra øvingen gruppevis Alle må presentere minst én gang Øvingene blir lagt ut på It s Learning
Neste gang Relasjoner (kap. 3)