MAT1030 Diskre Maemaikk Forelesning 26: Trær Roger Anonsen Insiu for informaikk, Universiee i Oslo Forelesning 26 5. mai 2009 (Sis oppdaer: 2009-05-06 22:27) MAT1030 Diskre Maemaikk 5. mai 2009 2 Li repeisjon Trær med ro Prims algorime finne de minse uspennende ree i en veke graf en grådig algorime i den forsand a den vurderer lokal hva som er de bese nese skrie Dijksras algorime en av nodene er senrum finne de ree som gir kores mulig vei fra hver av de andre nodene il senrum Mariserepresenasjoner Trær med ro en av nodene har saus som ro Definisjon La T være e re med ro (ana a vi egner T med roen øvers). Med nivåe il en node mener vi anall kaner mellom noden og roen. Hvis de fins en kan mellom node a og b, og a har laves nivå (ligger øvers i egningen) sier vi a b er barne il a. Hvis de fins en si mellom o noder slik a en kan k i sien ligger innil nodene a og b (de vil si a sekvensen akb er en del av sien) nøyakig når b er barne il a, så vil den som har de høyese nivåe (ligger neders i egningen) være eerkommer il den andre, som omvend er forgjenger il den førse. MAT1030 Diskre Maemaikk 5. mai 2009 3 MAT1030 Diskre Maemaikk 5. mai 2009 4
Trær med ro Definisjon (Forsa) En node som ikke har noen barn er e blad eller en løvnode. 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. Binære rær Veldig mange rør har den egenskapen a hvis en node ikke er en bladnode, så har den nøyakig o barn. Vi skiller u disse ved en egen beegnelse. Definisjon E binær re er e re med ro slik a følgende holder. 1. Enhver node er enen en bladnode eller har nøyakig o barn. 2. Hvis en node har o barn, vil de ene barne beegnes som barne il vensre og de andre som barne il høyre De vensre delree får vi ved å fjerne roen og barne il høyre og alle des eerkommerne. Tilsvarende for de høyre delree. (I e delre blir de ene barne den nye roen.) I e re med kun én node kan vi ikke snakke om delrær. MAT1030 Diskre Maemaikk 5. mai 2009 5 MAT1030 Diskre Maemaikk 5. mai 2009 6 Traverseringer In-order-raversering En raversering av e re innebærer a vi leser nodene i ree i en besem rekkefølge og ufører operasjoner (som å skrive symboler) i en besem rekkefølge. 3 4 Vi skal se på re vanlige måer å raversere e re på. in-order raversering svarer il infiks noasjon: 3 4 pre-order raversering svarer il prefiks noasjon: 34 pos-order raversering svarer il posfiks noasjon: 34 Her er algorimen for den raverseringen som gir infiks noasjon hvis inpu er e synaksre. Algorime in-order raverse(t): 1. If T ikke er e blad hen 1.1. in-order raverse(vensre delre av T) 2. Oupu roen il T 3. If T ikke er e blad hen 3.1. in-order raverse(høyre delre av T) MAT1030 Diskre Maemaikk 5. mai 2009 7 MAT1030 Diskre Maemaikk 5. mai 2009 8
Pre-order-raversering 1 2 3 4 5 6 7 8 9 in-order-raversering gir 4 2 5 1 8 6 9 3 7 Her er algorimen for den raverseringen som gir polsk prefiks noasjon hvis inpu er e synaksre. Algorime pre-order raverse(t): 1. Oupu roen il T 2. If T ikke er e blad hen 2.1. pre-order raverse(vensre delre av T) 3. If T ikke er e blad hen 3.1. pre-order raverse(høyre delre av T) MAT1030 Diskre Maemaikk 5. mai 2009 9 MAT1030 Diskre Maemaikk 5. mai 2009 10 Pre-order-raversering Pos-order-raversering 1 2 3 4 5 6 7 8 9 Her er algorimen for den raverseringen som gir baklengs polsk noasjon, eller posfiks noasjon, hvis inpu er e synaksre. Algorime pos-order raverse(t): 1. If T ikke er e blad hen 1.1. pos-order raverse(vensre delre av T) 2. If T ikke er e blad hen 2.1. pos-order raverse(høyre delre av T) 3. Oupu roen il T pre-order-raversering gir 1 2 4 5 3 6 8 9 7 MAT1030 Diskre Maemaikk 5. mai 2009 11 MAT1030 Diskre Maemaikk 5. mai 2009 12
Pos-order-raversering Noasjon: infiks, prefiks, posfiks 1 2 3 4 5 6 7 8 9 pos-order-raversering gir 4 5 2 8 9 6 7 3 1 Når vi skriver usagnslogiske eller algebraiske urykk, er vi van il å skrive symbolene,,,, ec. mellom delurykkene. Denne skrivemåen er hisorisk beinge og kalles for infiks. Fordelen med forlengs og baklengs polsk noasjon, eller prefiks og posfiks, er a man slipper pareneser. Disse kan være bedre egne for innmaing i algorimer. 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 (RPN). MAT1030 Diskre Maemaikk 5. mai 2009 13 MAT1030 Diskre Maemaikk 5. mai 2009 14 Vi skal gi en grammaikk som definerer alle ermer i symbolene 0, 1, og i forlengs polsk, eller prefiks, 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. 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 5. mai 2009 15 MAT1030 Diskre Maemaikk 5. mai 2009 16
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 5. mai 2009 17 MAT1030 Diskre Maemaikk 5. mai 2009 18 hvor = 100. 0 0 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 (Vi er ikke ineresser i verdien av denne ermen, bare om de er en erm). De gir oss følgende fullsendige synaksre. MAT1030 Diskre Maemaikk 5. mai 2009 19 MAT1030 Diskre Maemaikk 5. mai 2009 20
Mer om noasjon 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 5. mai 2009 21 MAT1030 Diskre Maemaikk 5. mai 2009 22 Mer om noasjon Induksjon og rekursjon for binære rær Synaksree for en erm eller e usagnslogisk urykk er uavhengig av om vi har bruk vanlig infiks noasjon, forlengs polsk eller baklengs polsk noasjon. Når synaksree er gi, så kan disse urykkene gjenskapes ved hjelp av de ulike raverseringsalgorimene. De er enkel å lage en algorime som ar e urykk, sjekker om de er korrek og som evenuel gir synaksree som oupu. Mengden av binære rær kan også defineres indukiv. Ugangspunke, eller induksjonsaren, blir 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. T v T h Sammensening av o binære rær il e. MAT1030 Diskre Maemaikk 5. mai 2009 23 MAT1030 Diskre Maemaikk 5. mai 2009 24
Induksjon og rekursjon for binære rær Induksjon og rekursjon for binære rær Definisjon Vi kan oppfae denne sammenseningen som en form for sum av o binære rær: vi legger sammen o rær og får e ny re. Vi kan god skrive T v T h for denne sammenseningen av rær. Merk a den kommuaive loven (x y = y x) ikke gjelder; de er essensiel 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 er de vikig, 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 nullree. 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 ser a effeken er å ersae alle bladnodene i T med kopier av S. Generel kan vi definere en funksjon f ved rekursjon over oppbyggingen av binære rær ved følgende. 1. Besemme hva f( ) er, når er nullree. 2. Besemme hvordan f(t) avhenger av de o delrærne f(t v ) og f(t h ), når T er e sammensa re. MAT1030 Diskre Maemaikk 5. mai 2009 25 MAT1030 Diskre Maemaikk 5. mai 2009 26 Induksjon og rekursjon for binære rær Hvis vi går ilbake il synaksrær, så kan vi se hvordan de re ulike noasjonsformene kan defineres via rerekursjon. De re algorimene svarer il hver sin rekursive funksjon. Vi definerer funksjonen infiks ved rerekursjon på følgende måe. Hvis roen i T er en bladnode med merke a, så lar vi infiks(t) = a. Hvis T er på formen T 1 T 2 lar vi infiks(t) = (infiks(t 1 ) infiks(t 2 )). De o andre funksjonene er definer på samme måe for bladnoder, og på følgende måe for sammensae rær. prefiks(t) = prefiks(t 1 )prefiks(t 2 ) posfiks(t) = posfiks(t 1 )posfiks(t 2 ) Bisekvenser og binære rær 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. La bi( ) være 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 5. mai 2009 27 MAT1030 Diskre Maemaikk 5. mai 2009 28
Bisekvenser og binære rær Bisekvenser og binære rær Omvend vil en 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. Hvis vi markere nodene i e binær re med bisekvensene, så får vi følgende bilde. 00 0 01 e 10 1 11 000 001 010 011 100 101 110 111 MAT1030 Diskre Maemaikk 5. mai 2009 29 MAT1030 Diskre Maemaikk 5. mai 2009 30 Li om srømmer Li om srømmer En digial srøm er en uendelig følge {x n } n N hvor hver x i er en bi, marker som 0 eller 1. En digial srøm kan oppfaes som en srøm av daa på digial form. Ana a vi har en prosedyre hvor inpu kan være en digial srøm og hvor oupu er en eller annen melding på digial form. De vil finnes siuasjoner hvor vi aldri får noe oupu hvis inpu er spesiel ekle digiale srømmer, men normal vil vi a prosedyren skal avsløre om den digiale srømmen vi moar er uen ineresse, og skal avslue med en melding om de. Vi enker oss alså en siuasjon hvor prosedyren avsluer med e svar uanse hvilken srøm den fores med. For enhver srøm finnes de da en endelig del som er sor nok il a prosedyren vår kan gi e oupu på grunnlag av denne. De er fordi prosedyren vår bare kan unye endelig mye informasjon om ver enkel srøm. La T være ree av endelige bisekvenser som er så små a prosedyren vår ikke har nok grunnlag i disse il å gi e oupu. Er T e endelig re? MAT1030 Diskre Maemaikk 5. mai 2009 31 MAT1030 Diskre Maemaikk 5. mai 2009 32
Li om srømmer Li om srømmer Vi skal vise a de er ilfelle. Bevise er e eksempel på e konraposiiv bevis, alså på e bevis hvor vi anar a konklusjonen er feil, og resonnerer oss frem il a da er premissene feil. Ana derfor a ree er uendelig. Da må vensre delre være uendelig eller høyre delre være uendelig. Sar en digial srøm med 0 om vensre delre er uendelig og med 1 om de er endelig. La T 1 være de ilsvarende uendelige delree. Forse srømmen med 0 om vensre delre i T 1 er uendelig og med 1 om de er endelig (da er høyre delre i T 1 uendelig). Slik forseer vi ved å gå il vensre når delree i den reningen er uendelig, og il høyre når de er nødvendig for forsa å ha e uendelig delre. På den måen bygger vi opp en digial srøm som prosedyren vår ikke kan gi noe oupu fra, for da ville den gjøre de fra en endelig del av srømmen. Vi har imidlerid sørge for a enhver endelig del av den srømmen vi konsruerer, ligger i T, og derfor er uilsrekkelig for dee. MAT1030 Diskre Maemaikk 5. mai 2009 33 MAT1030 Diskre Maemaikk 5. mai 2009 34 Li om srømmer Påsanden vi nå har vis, har den prakiske konsekvensen a hvis vi førs har greid å lage en prosedyre som gir e svar uanse hvilken digial srøm vi forer den med, så finnes de en øvre grense for hvor lenge vi må vene på e svar, uavhengig av hva inpu er. Dee er e eksempel på en påsand hvor vi må gi e indireke bevis, eller i de minse gå uenom den konsrukive delen av maemaikken. Dee er ikke noe ema i MAT1030, og vi skal ikke forfølge dee aspeke videre. MAT1030 Diskre Maemaikk 5. mai 2009 35