Viktige begrep i kapittel 1. 1. Egenskaper ved relasjoner. La R A A være en binær relasjon. (a) At R er refleksiv betyr at x (x, x) R. (b) At R er symmetrisk betyr at x y ((x, y) R (y, x) R ). (c) At R er transitiv betyr at x y z (((x, y) R (y, z) R ) (x, z) R ). (d) At R er antisymmetrisk betyr at x y ((x, y) R (y, x) R ) x = y ). (e) At R er asymmetrisk betyr at x y ((x, y) R (y, x) R ). Dersom R er en relasjon så definerer vi R(x) = [x] R = {y (x, y) R}. En relasjon som har egenskapene a,b og c kalles en ekvivalensrelasjon. I dette tilfellet kalles [x] R for ekvivalensklassen til x m.h.p. R. En relasjon som har egenskapene a,c og d kalles en delvisordning. 2. Partisjon av en mengde. En partisjon Π av en mengde A er en delmengde Π P (A) av potensmengden til A med følge egensskaper. (a) Ingen av mengdene i Π er tomme. (x Π) (x ). (b) Mengdene i Π er disjunkte eller sammenfalle. (x Π) (y Π) (x y = x = y). (c) Π er uttømme. A = Π eller (x A) (y Π) x y. Spør meg hvis det er noe her som er uklart. 3. Sammenhengen mellom ekvivalensrelasjoner og partisjoner på en mengde. La A være en mengde. Vi lar Ekv(A) betegne mengden av ekvivalensrelasjoner på A og Part(A) betegne mengden av partisjoner av A. Dersom Π er en partisjon av A, la R(Π) = {(x, y) (z Π) (x z y z)} = {z z z Π}. Leseren kan sjekke at R(Π) er en ekvivalensrelasjon. Dersom R er en ekvivalensrelasjon på A, la Π(R) = {[x] R x R}. Leseren kan sjekke at Π(R) er en partisjon. Med andre ord så har vi definert funksjoner Π : Ekv(A) Part(A), og R : Part(A) Ekv(A). Teorem 1.1 Funksjonene Π og R gir en naturlig en til en korrespondanse mellom ekvivalensrelasjoner og partisjoner. Beviset overlates til leseren. La R være en ekvivalensrelasjon på A. Det er vanlig i matematikk å betegne den tilhøre partisjonen Π(R) med A/R. Merk at funksjonen A A/R definert ved x [x] R er surjektiv og at fibrene til denne funksjonen er ekvivalensklassene til R. Mengden A/R kalles også for kvotientmengden til A m.h.p. R. 4. Vekstklasser av funksjoner N N. I det følge vil variablene ta verdier i de naturlige tallene N = {0, 1, 2, 3,...}. Vi sier at en funksjon f er av orden g, og betegner dette med f O(g), dersom c d n f(n) cg(n)+d. Leseren kan sjekke at relasjonen definert ved f O(g) er transitiv. Vi sier at to funksjoner f og g har samme vekst, eller er i samme vekstklasse og vi skriver f g eller f Θ(g), dersom f O(g) og g O(f). Leseren kan sjekke at relasjonen er refleksiv, symmetrisk og transitiv, det vil si en ekvivalenrelasjon. Ekvivalensklassene under kalles vekstklasser. Kvotientmengden, altså vekstklassene danner en delvisordnet mengde under relasjonen Θ(f) Θ(g) f O(g). Merk at relasjonen er veldefinert. Det vil si den avhenger ikke av valg av funksjon i Θ(f) eller Θ(g). Leseren kan vise at dersom h Θ(f), k Θ(g), så gjelder f O(g) h
Teorem 1.2 Polynomer av samme grad er i samme vekstklasse. Teorem 1.3 For etthvert polynom f, så er Θ(f) Θ(2 n ). (Merk at 2 n er den tradisjonelle betegnelsen på funksjonen n 2 n.) 5. Refleksiv Transitiv tillukning og Warshalls algoritme. For en vilkårlig relasjon R på en mengde A så lar vi R betegne den refleksive og transitive tillukningen til R. Vi kan også si direkte at R består av alle par (a, b) for hvilke det finnes en vei i R fra a til b. I mengdespråket har vi R = {(x, y) (x = y) k x 0 x 1... x k ((x 0 = x) (x k = y) i (0 i k 1 (x i, x i+1 ) R ))}. Warshalls algoritme Her er R en relasjon på en mengde A som er ordnet A = {a i 1 i n}. Anta at R = k og A = n. R := R {(a i, a i ) 1 i n} for j = 1 to n for i = 1 to n for k = 1 to n if (a i, a j ) R (a j, a k ) R (a i, a j ) R then R := R {(a i, a k )} Leseren kan sjekke at vi trenger høyst 3k sammenligninger i den innerste for sløyfen, så denne algoritmen er av orden O(kn 3 ). Beviset for at algoritmen er korrekt står på side 37 i Lewis og Papadimitriou. Oppgave 1.6.8. You have five algorithms for a problem, with these running times: 10 6 n, 10 4 n 2, n 4, 2 n, n! (a) Your computer executes 10 8 steps per second. What is the largest size n you can solve by each algorithm in a second? (b) In a day? (Assume that a day is 10 5 seconds.) (c) How would the numbers in (a) and (b) change if you bought a computer ten times faster? 6. Tillukningsegenskaper i P (D). n-ganger {}}{ La D være en mengde. Vi skriver D n = D D D for det kartesiske produktet n ganger. (Merk at D 0 = { } og D 1 = D.) En delmengde R D k kaller vi en k-ær relasjon, eller en relasjon av aritet k på D. Dersom R er en relasjon av aritet r på D, kan vi definere en egenskap på P (D) som følger. C R (B) x 1 x 2... x r ((x 1 B x 2 B x r 1 B (x 1, x 2,..., x r ) R ) x r B ) Mer generelt, dersom R = (R 1, R 2,..., R k ) er et k-tuppel av relasjoner på D, med R i av aritet r i, kan vi definere egenskapen C R (B) C R1 (B) C R2 (B) C Rk (B). Egenskaper av typen C R (B), hvor R = (R 1, R 2,..., R k ) er et k-tuppel av relasjoner på D vil vi kalle en tillukningsegenkap på D. Teorem 1.4 For enhver tillukningsegenskap C R på D, og for enhver delmengde A D, finnes en entydig bestemt minste mengde A D slik at A A og C R (A ). Vi kaller A for
Bevis: Vi definerer først familien av mengder som inneholder A og som har egenskapen C R. S R (A) = {B A B C R (B)}, så setter vi A = S R (A). Siden alle elementene i S R (A) inneholder A har vi A A. Det gjenstår bare å vise C R (A ). Anta at 1 i k og la a 1, a 2,..., a ri være et r i elementer i D, slik at a j A for 1 j r i 1 og (a 1, a 2,..., a ri ) R i. Da ser vi at r i B for enhver B S R (A), og følgelig er a ri A. Mengden A sies å være definert induktivt ut fra mengden A og relasjonene R i. Når en mengde er definert induktivt kan vi alltid bruke bevismetoden strukturell induksjon, som vi vil beskrive i neste avsnitt. 7. Strukturell induksjon. La R = (R 1, R 2,..., R k ) er et k-tuppel av relasjoner på D, med R i av aritet r i, og la A D. La A være tillukningen til A m.h.p. R. La E være en egenskap ved noen av elementene i D. (Eller rett og slett en delmengde av D.) For å vise at alle elementene i A har egenskapen E er det tilstrekkelig å vise at 1 Alle elementene i A har egenskapen E. 2 For 1 i k og (a 1, a 2,..., a ri ) D r i, derom a j E for 1 j r i 1 og (a 1, a 2,..., a ri ) R i, så er a ri E. Eller med andre ord at E S R (A). Dette vil bli klarere når vi får se noen eksempler. Eksemplene kommer stort sett fra språkteorien. 8. Språk. Det første eksempelet på tillukning som det er rimelig å se på er mengden av strenger over et alfabet Σ. Et alfabet er bare en mengde, som oftest elig. Mengden av strenger over Σ kalles Σ, og er den minste mengden som inneholder { }, og som er lukket under alle relasjonene R a = {< x, < a, x >> a Σ x Σ }. I Lewis og Papadimitriou betegnes med e, og < a, x > med ax når det er snakk om strenger. La X være en mengde. Vi vil betegne mengden av alle funksjoner fra X til X med EndX. Teorem 1.5 (Induktiv definisjon) For enhver funksjon f : Σ EndX finnes en og kun en funksjon, f : Σ EndX med følge egenskaper. (1) fe = 1 X Identitetsfunksjonen på X. (2) fa = f a (3) fax = f a f x Sammensetningen av funksjonene. Bevis: Dersom D Σ er den mengden som f kun kan defineres på en entydig måte på, så er e D og vi ser også av (3) at dersom x D så er også ax D, følgelig er D = Σ. Teorem 1.6 (Induksjonsprinsippet for Σ ) For ethvert utsqagn P (x) om x Σ, gjelder følge. For å vise at P (x) er sann for alle x er det tilstrekkelig å vise at (1) P (e) er sann. (2) P (x) P (ax) er sann for vilkårlig x Σ og vilkårlig a Σ. Bevis: Dersom S Σ er mengden som består av alle x som gjør P (x) sann, i.e. S = {x x Σ P (x)}, så er e S og vi ser også av (2) at dersom x S så er også ax S, følgelig er S = Σ. Eksempel 1.7 (Lengdefunksjonen på Σ ) Dersom vi velger X = N, de naturlige tallene og f a : N N som etterfølgerfunksjonen f a (n) = n = n + 1 for hver a Σ, så er lengdefunksjonen gitt ved l(x) = f x (0). Merk at l(e) = 0 og l(ax) = l(x) + 1, og dette karakteriserer lengdefunksjonen fullstig i følge teorem 1.5. Eksempel 1.8 (Konkatenasjon) Dersom vi velger X = Σ, og f a : Σ Σ til å være
Merk at (e y) = y og (ax y) = a(x y), og dette karakteriserer konkatenasjon fullstig i følge teorem 1.5. Vi vil nå se et eksempel på hvordan vi bruker induksjonsprinsippet. Teorem 1.9 (Assosiativitet av konkatenasjon) For alle strenger gjelder ((x y) z) = (x( y z)). Bevis: La P (x) være utsagnet ((x y) z) = (x( y z)). Vi overlater til leseren å verifisere P (e). For å vise teoremet er det altså tilstrekkelig å vise P (x) P (ax). Merk at (3) sier at (av w) = a(v w). Vi har ((ax y) z) = (a(x y) z) (3) (a(x y) z) = a((x y) z) (3) a((x y) z) = a(x (y z)) (Induksjonshypotesen) a(x (y z)) = (ax (y z)) (3) P (ax) følger fordi likhetsrelasjonen er symmetrisk og transitiv. Fra nå av betegner vi konkatenasjonen x y bare med xy. Leseren oppfordres å bruke assosiativiteten samt induksjon til å vise at xe = x. Eksempel 1.10 (Reversering) Dersom vi velger X = Σ, og f a : Σ Σ til å være funksjonen definert ved at f a (y) = ya for hver a Σ, så er reversering gitt ved x R = f x (e). Merk at a R = a og at (3) sier at (ax) R = x R a, og dette karakteriserer reverseringen fullstig i følge teorem 1.5. Teorem 1.11 For alle strenger gjelder (xy) R = y R x R. Bevis: La P (x) være utsagnet (xy) R = y R x R. Vi overlater til leseren å verifisere P (e). For å vise teoremet er det altså tilstrekkelig å vise P (x) P (ax). Vi har ((ax)y) R = (a(xy)) R (Assosiativitet av konkatenasjon) (a(xy)) R = (xy) R a (3) (xy) R a = (y R x R )a (Induksjonshypotesen) (y R x R )a = y R (x R a) (Assosiativitet av konkatenasjon) y R (x R a) = y R (ax) R (3) P (ax) følger fordi likhetsrelasjonen er symmetrisk og transitiv. Fra nå av betegner vi konkatenasjonen x y bare med xy. Leseren oppfordres å bruke assosiativiteten samt induksjon til å vise at xe = x. Et språk over et alfabet Σ er en delmengde av Σ. Vi har følge elementære operasjoner på språk. A B, A B, Σ A, AB = {αβ α A β B}, A = {e} {α 1 α k α i A for 1 i k}. Språket A kalles Kleenestjerne-tillukningenen til A og er det minste språket som inneholder A, den tomme strengen, og som er lukket under konkatenasjon. 9. Regulære språk. I dette avsnittet skal vi operere pa et plan høyere enn i det forrige. Vi skal betrakte klasser av språk. Det er delmengder av P (Σ ). Merk at union, snitt, kompliment, konkatenasjon av språk og Kleenestjerne er relasjoner på P (Σ ), av aritet henholdsvis 3,3,2,3 og 2. La E P (Σ ) være følge språk. E = {, {e}} {{a} a Σ}. De regulære språkene er den minste klassen av språk som inneholder E og som er lukket under union, konkatenasjon og Kleenestjerne. Denne klassen vil vi betegne med Reg(Σ), eller bare Reg når det er klart hvilket alfabet vi har å gjøre med. Vi skal se senere at klassen av regulære språk også er lukket under snitt og komplement. Dette er langt fra opplagt. 10. Regulære uttrykk.
I dette avsnittet skal Σ være et alfabet, og vi skal anta at Σ ikke inneholder de spesielle symbolene Spes = {(, ),,, }. De Regulære uttrykkene over alfabetet Σ er et språk reg(σ) (Σ Spes), og er definert som det minste språket med følge egenskaper. Dersom α reg og β reg, så er også reg a reg for alle a Σ (α β) reg (αβ) reg α reg Teorem 1.12 Det finnes en og kun en funksjon, L : reg Reg med følge egenskaper. L( ) = L(a) = {a} for alle a Σ L((α β)) = L(α) L(β) L((αβ)) = L(α)L(β) L(α ) = L(α) Det er ikke gjordt noe forsøk på å bevise dette teoremet i boka. Teoremet er egentlig et korollar av et annet teorem, nemlig teoremet om entydig lesbarhet for regulære uttrykk. Dette er noe vi skal komme tilbake til i kapitlet om gramatikker og derivasjonstrær. Hva er L( )? Oppgave 1.8.6. The star height h(α) of a regular expression α is defined by induction as follows. h( ) = 0 h(a) = 0 for each a Σ h((α β)) = h((αβ)) = max{h(α), h(β)} h(α ) = h(α) + 1 For example, if α = (((ab) b ) a ), then h(α) = 2. Find in each case, a regular expression which represents the same language and has star height as small as possible. (a) ((abc) ab) (b) (a(ab c) ) (c) (c(a b) ) (d) (a b ab) (e) (abb a) (Alle språkene kan representeres av uttrykk med mindre stjernehøyde)