Beskjeder MAT1030 Diskre maemaikk Forelesning 25: Trær Dag Normann Maemaisk Insiu, Universiee i Oslo 23. april 2008 Roger har bed meg gi følgende beskjeder: 1 De mese av plenumsregningen i morgen, 24/4, blir avleregning, slik a sudenene ikke kan belage seg på finne al på foiler senere. 2 Roger vil repeere induksjonsbevis i forskjellige varianer, eer ønske fra mange sudener. Nese uke vil vi forelese soff som går u over boka, men som vil bli berake som pensum. Vi vil gå mye mer inn på bruk av rær i informaikk-sammenheng enn de boka gjør, og kan eerspørre noen eknikker vi beskriver il eksamen. Vi vil spesiel se på de som kalles unifiseringsalgorimer. Torsdag 1. mai er de selvfølgelig ingen plenumsregning. MAT1030 Diskre maemaikk 23. april 2008 2 Oppsummering Oppsummering Mandag bruke vi mye id på å illusrere Prims algorime. Prims algorime vil finne de minse uspennende ree i en veke graf. Prims algorime er grådig i den forsand a den vurderer lokal hva som er de bese nese skrie. Vi gir ikke korrekhesbevise for Prims algorime, men nevner a resulae blir de samme uanse hvor i grafen man begynner. Prims algorime er svær eksamensrelevan. Vi ga også en kor innføring i Dijksras algorime for å finne korese vei -ree i en veke graf. Da upeker vi en av nodene i grafen som senrum, og ar sike på å finne de ree som gir kores mulig vei fra hver av de andre nodene il senrum. Poenge med Dijksras algorime er a man hver gang legger en ny kan il en ny node il ree slik a den nye veisrekningen fra en ny node il senrum blir kores mulig. Vi illusrere Dijksras algorime med e eksempel. Dijksras algorime brukes også il å finne avsanden mellom o noder i en veke graf, og en si mellom o noder med kores mulig lengde. Dijksras algorime er også eksamensrelevan. MAT1030 Diskre maemaikk 23. april 2008 3 MAT1030 Diskre maemaikk 23. april 2008 4
Oppsummering Mo sluen av mandagens forelesning kom vi inn på rær med ro. E re med ro er e re i grafeoreisk forsand hvor en av nodene er upek som ro. E slik re egner vi ofe ovenfra og ned, med roen øvers og de andre nodene lagvis nedover. Ofe kan vi see merkelapper på nodene og på kanene. Vi så på noen eksempler på dee på mandag. Hvis vi ar ugangspunk i e re uen ro, og så egner de som e re med ro, vil de visuelle resulae avhenge mye av hvor vi plasserer roen. Oppgave Tegn følgende re som e re med ro når vi plasserer roen henholdsvis i nodene 1, 3 og 6: 7 6 5 1 2 3 4 MAT1030 Diskre maemaikk 23. april 2008 5 MAT1030 Diskre maemaikk 23. april 2008 6 Mandag ga vi e eksempel på e synaksre hvor vi løse opp e usagnslogisk urykk i en resrukur. p q p r p q p r Når vi skriver usagnslogiske urykk eller algebraiske urykk, er vi vane med å skrive symbolene,, +, og liknende mellom delurykkene. Denne skrivemåen heer med e fin ord for infiks, vi skriver symbolene innimellom eksen. Denne måen å skrive formler og algebraiske urykk på er hisorisk beinge, men den er nok også den måen som gir den bes lesbare fremsillingen. De finnes imidlerid andre måer som er vel så god egne for innmaing i algorimer, polsk; forlengs og baklengs. MAT1030 Diskre maemaikk 23. april 2008 7 MAT1030 Diskre maemaikk 23. april 2008 8
Fordelen med forlengs og baklengs polsk noasjon er a man slipper pareneser. Disse måene å skrive urykk på er også bedre egne når urykkene skal maes inn i en daamaskin. Programmeringsspråke LISP er baser på bruk av polsk noasjon, og i gamle dager måe lommeregnere programmeres med baklengs polsk noasjon. Brukere av edioren emacs vil oppdage a den innebygde kalkulaoren bruker baklengs polsk noasjon. La oss se på e eksempel. Vi skal gi en grammaikk som definerer alle ermer i symbolene 0, 1, + og i forlengs polsk noasjon. En erm er e urykk som beskriver e all. Vi skal se på alle måer å beskrive all på hvor vi bruker symbolene nevn over. Poenge med polsk noasjon er a funksjonssymbol, logiske bindeord og andre symboler vi bruker il å binde sammen enkle urykk il mer komplekse sees førs, og så kommer delurykkene eer, uen pareneser. MAT1030 Diskre maemaikk 23. april 2008 9 MAT1030 Diskre maemaikk 23. april 2008 10 En grammaikk er e se regler som foreller oss hvilke ord som ilhører de formelle språke vi vil beskrive. I informaikk-lieraur har man uvikle en rask skrivemåe for slike grammaikker. Term ::= 0 1 + Denne definisjonen skal leses som følger: Mengden av ermer er den minse mengden som oppfyller 0 og 1 er ermer. Hvis og s er ermer, er +s og s også ermer. Vi har se på ilsvarende konsruksjoner da vi så på formelle språk definer ved generell induksjon. En indukiv definisjon foreller oss a de ligger en resrukur bak hver ord i språke. Hvordan kan vi bruke rær il å besemme om e ord i alfabee {0, 1, +, } er en erm eller ikke, og hvordan kan vi bruke rær il å finne en mer lesbar form av ermen? MAT1030 Diskre maemaikk 23. april 2008 11 MAT1030 Diskre maemaikk 23. april 2008 12
Er + 00 +100 en erm slik de ble definer på forrige side? Vi kan prøve å uvikle e synaksre for dee orde, hvor vi bruker boksaven for å markere a her må de så en enklere erm. Førse ilnærming il synaksree må være + Den førse ukjene ermen må begynne med, så synaksree må se u som + hvor = 00 +100 hvor = 00 +100. Her kan vi se direke hva de re -ene må så for, så vi får ree MAT1030 Diskre maemaikk 23. april 2008 13 MAT1030 Diskre maemaikk 23. april 2008 14 + Vi kan forsee å avsløre hvordan synaksree må se u ved å lese problemorde vår fra vensre mo høyre. Vi ser a nese erm er e produk hvor førse fakor er summen av 1 og 0 og andre fakor er 0 0 0 (Vi er ikke ineresser i verdien av denne ermen, bare om de er en erm). De gir oss de fullsendige synaksree på nese side: hvor = + 100. MAT1030 Diskre maemaikk 23. april 2008 15 MAT1030 Diskre maemaikk 23. april 2008 16
+ 0 0 + 0 Når man bruker baklengs polsk noasjon på en lommeregner, aser man inn all og funksjonsurykk som +, exp, sin i rekkefølge. Hver gang man aser inn e funksjonsurykk, vil lommeregneren oppfae sise all, eller de o sise allene, som inpu, og ersae disse med funksjonsverdien. De er alså funksjonsverdien som oppfaes som de sise alle du ase inn i forseelsen. 1 0 Skreve på vanlig infiks-form får vi De er ikke vanskelig å se a lommeregneren kan behandle en sekvens av all og funksjoner på bare en måe. De beyr a e urykk i baklengs polsk noasjon bare kan olkes på en måe. De samme gjelder da selvfølgelig for forlengs polsk noasjon. (0 0) + ((1 + 0) 0). MAT1030 Diskre maemaikk 23. april 2008 17 MAT1030 Diskre maemaikk 23. april 2008 18 Synaksree for en erm eller e usagnslogisk urykk er uavhengig av om vi har bruk vanlig infiks noasjon, forlengs polsk eller baklengs polsk noasjon. De beyr a de må være mulig å finne disse urykkene på en sysemaisk måe fra synaksree. Dee er noe vi skal komme ilbake il når vi har snakke mer generel om rekursive definisjoner over rær. Nå skal vi se hvordan vi kan formulere en algorime som 1. Avgjør om e ord w i alfabee {+,, 0, 1} er en erm i forlengs polsk noasjon eller ikke. 2. Finner synaksree il w når w er en erm. Vi skal bruke en del urykk som blir gjor presise senere i forelesningene, men hvor meningen er så opplag a de ikke bør lede il noen misforsåelser. På denne måen forbereder vi oss også på innføringen av binære rær og merkede rær. Vi gir ikke en fullverdig pseudokode, men beskriver hvordan algorimen skal uføres skri for skri. For enkelhes skyld anar vi a w ikke er de omme orde. På forelesningen ble algorimen gjennomgå parallell med e eksempel på avla. MAT1030 Diskre maemaikk 23. april 2008 19 MAT1030 Diskre maemaikk 23. april 2008 20
1 Lag en node. Denne førse noden vil vi kalle roen. 2 Så lenge de finnes ulese boksaver i w gjør vi følgende: [En while-løkke] 2.1 Hvis førse ulese boksav er 0 eller 1, merk noden med boksaven. Gå sien mo roen il du passerer en vensre-kan eller il du kommer il roen uen å ha passer noen vensre-kan. Passerer du en vensrekan, lag e ny barn il høyre for den noden du er på, fly deg il denne barnenoden, begynn på nese boksav i w og gå ilbake il skri 2. Treffer du noden uen å ha passer en vensrekan, akseperer du w og har skreve ferdig ree hvis de ikke er flere boksaver igjen, mens du underkjenner w hvis de er flere boksaver igjen. 2.2 Hvis førse boksav er + eller, merk noden med boksaven. Lag e ny barn il vensre for den noden du er på, fly deg il denne barnenoden, begynn på nese boksav i w og gå ilbake il skri 2. 3 Hvis de ikke finnes flere boksaver i w og du ikke sår på roen, underkjenner du w. Vi skal ese algorimen på ordene og på avla. + +010 +0 +010 MAT1030 Diskre maemaikk 23. april 2008 21 MAT1030 Diskre maemaikk 23. april 2008 22 Vi har nå se på noen eksempler på rær med ro. De er på ide å gjøre noe av den erminologien vi bruker når vi snakker om rær med ro mer presis. Definisjon La T være e re med ro. Med nivåe il en node mener vi anall kaner mellom noden og roen. Hvis de finnes en kan mellom node a og node b og a har laves nivå (ligger øvers i egningen) sier vi a b er barne il a. Hvis de finnes en si mellom o noder a og b som ikke går via roen, vil den som har de høyese nivåe (ligger laves i egningen) være eerkommer il den andre, som omvend er forgjenger il den førse. Definisjon (Forsa) En node som ikke har noen barn er e blad. En gren er en si fra roen il e blad. Noen vil kalle dee en maksimal gren og la en gren være en si fra roen il en node. Oppgave Vis a de finnes en bijeksjon mellom mengden av blader og mengden av grener i e re med ro. MAT1030 Diskre maemaikk 23. april 2008 23 MAT1030 Diskre maemaikk 23. april 2008 24
Binære rær Binære rær De aller flese rærne vi har se på, og il nå alle de som har komme u av informaive eksempler, har den egenskapen a hvis en node ikke er en bladnode, har den nøyakig o barn. De finnes mange rær som ikke har den egenskapen, eksempelvis familieree il Harald Hårfagre, men de er så mange som har egenskapen a vi skiller dem u ved en egen beegnelse, og ved å legge eksra srukur på dem: Definisjon E binær re er e re med ro slik a Enhver node er enen en bladnode eller har nøyakig o barn. Hvis en node har o barn, vil de ene barne beegnes som barne il vensre og de andre som barne il høyre MAT1030 Diskre maemaikk 23. april 2008 25 MAT1030 Diskre maemaikk 23. april 2008 26 Binære rær Binære rær Hvis T er e binær re, kan vi snakke om vensre delre og høyre delre. De vensre delree får vi ved å fjerne roen, barne il høyre og alle eerkommerne av de. Tilsvarende får vi de høyre delree ved å fjerne roen, barne il vensre og alle eerkommerne il de. I vensre (høyre) delre blir da barne il vensre (høyre) den nye roen. I ree hvor roen også er e blad, kan vi ikke snakke om vensre eller høyre delre. Snur vi på dee, kan vi oppfae mengden av binære rær som indukiv definer. Ugangspunke, eller induksjonsaren er nullree, ree som besår av en node og ingen kaner. Denne noden er da både ro og blad. Induksjonskrie besår i a vi ar o binære rær T v og T h, en ny ronode og o nye kaner, mo vensre il roen i T v og il høyre mo roen i T h. MAT1030 Diskre maemaikk 23. april 2008 27 MAT1030 Diskre maemaikk 23. april 2008 28
Binære rær Binære rær T v T h Sammensening av o binære rær il e. Noen konkree eksempler vises på avla. Vi kan oppfae denne sammenseningen som en form for sum av o binære rær, vi legger sammen o rær il e ny re. Vi kan god skrive T v T h for denne sammenseningen av rær. Merk a den kommuaive loven ikke gjelder, de beyr mye hvilke av rærne som sees il vensre og hvilke som sees il høyre. Som grafer beyr de ikke så mye, men for rerekursjon beyr de endel, siden vi der kan referere il vensre og høyre delre. Vi skal nå se på en form for produk av rær. Vi skriver for null-ree. MAT1030 Diskre maemaikk 23. april 2008 29 MAT1030 Diskre maemaikk 23. april 2008 30 Binære rær Binære rær Definisjon Vi definerer reproduke ved S = S (T v T h ) S = (T v S) (T h S) Poenge med å gi denne definisjonen er å gi e eksempel på hvordan man kan definere ing ved rekursjon på oppbyggingen av e re. Vi illusrerer hva som skjer ved e par eksempler på avla. Vi så a effeken er å ersae alle bladnodene i T med kopier av S. De er en inim sammenheng mellom bisekvenser og binære rær. For hver node i e binær re kan vi lage oss en ilsvarende bisekvens ved rekursjon på nivåe (avsanden il roen) il noden: bi( ) er den omme sekvensen hvis er ronoden. Hvis a er en node med o barn, b il vensre og c il høyre, og bi(a) = x 1 x k, lar vi bi(b) = x 1 x k 0. bi(c) = x 1 x k 1. Denne definisjonen illusreres på avla. MAT1030 Diskre maemaikk 23. april 2008 31 MAT1030 Diskre maemaikk 23. april 2008 32
Binære rær Omvend vil enhver endelig mengde X av bisekvenser, eller 0-1-sekvenser, besemme e binær re hvor vi førs ser på alle delsekvenser av sekvensene i X, så lar bladnodene være de minimale bisekvensene som ikke er delsekvens av noen sekvens i X og il slu organiserer dee il e re ved å la den omme sekvensen bli roen, og så gå il vensre eller høyre avhengig av om nese bi er 0 eller 1. Vi illusrerer denne konsruksjonen på avla. MAT1030 Diskre maemaikk 23. april 2008 33