Innehåll. Träd. Träd. Traversering av träd. Binära träd. Datastrukturer och algoritmer Datastrukturer. Algoritmer.

Relevanta dokument
Innehåll. Föreläsning 7. Modeller/tillämpningar för träd. Organisation och terminologi (1) Organisation och terminologi (2)

Datastrukturer och algoritmer. Modell/tillämpningar för träd. Innehåll. Organisation och terminologi (2) Organisation och terminologi (1)

Föreläsning 11: Grafer, isomorfi, konnektivitet

Laboration 1a: En Trie-modul

Mitt barn skulle aldrig klottra!...eller?

Algoritmer och datastrukturer, föreläsning 11

v v v v 5 v v v 4 (V,E ) (V,E)

Headset för det Mobila kontoret

4.1 Förskjutning Töjning

Tillämpning - Ray Tracing och Bézier Ytor. TANA09 Föreläsning 3. Icke-Linjära Ekvationer. Ekvationslösning. Tillämpning.

SF1625 Envariabelanalys

Vill veta kvaliteten hos våra vattenföringsdata?

Operativsystemets uppgifter. Föreläsning 6 Operativsystem. Skydd, allmänt. Operativsystem, historik

PASS 1. RÄKNEOPERATIONER MED DECIMALTAL OCH BRÅKTAL

Robin Ekman och Axel Torshage. Hjälpmedel: Miniräknare

Trädstrukturer. Definitioner och terminologi. Informationsteknologi Tom Smedsaas 21 augusti 2016

Mat Grundkurs i matematik 1, del III

SF1625 Envariabelanalys

1 (3k 2)(3k + 1) k=1. 3k 2 + B 3k(A + B)+A 2B =1. A = B 3A =1. 3 (3k 2) 1. k=1 = 1. k=1. = (3k + 1) (n 1) 2 1

Tentamen TMV210 Inledande Diskret Matematik, D1/DI2

Föreläsning 9. Digital signalbehandling. Kapitel 6. Sampling. LTH 2014 Nedelko Grbic (mtrl. från Bengt Mandersson)

V Ä G E N T I L L V A T T E N w w w. a v a n t i s y s t e m. s e

Asymptotisk komplexitetsanalys

Ett förspel till Z -transformen Fibonaccitalen

Sammanfattning av ALA-B 2007

Uppsala Universitet Matematiska Institutionen T Erlandsson

Integralen. f(x) dx exakt utan man får nöja sig med att beräkna

Föreläsning 7. Splay-träd. Prioritetsköer och heapar. Union/Find TDDC70/91: DALG. Innehåll. Innehåll. 1 Splay-träd

x = x = x = x=3 x=5 x=6 42 = 10x x + 10 = 15 x = = 20 x = 65 x + 36 = 46

LINJÄRA DIFFERENTIALEKVATIONER AV FÖRSTA ORDNINGEN

6 Formella språk. Matematik för språkteknologer (5LN445) UPPSALA UNIVERSITET

Finaltävling den 20 november 2010

Associativa lagen för multiplikation: (ab)c = a(bc). Kommutativa lagen för multiplikation: ab = ba.

Datastrukturer och algoritmer

Nordic Light Roulett. Aluminiumpersienn. Nordic Light Roulett Installation - Manövrering - Rengöring. Aluminiumpersienn

Innehåll. Träd Terminologi

Induktion LCB 2000/2001

19 Integralkurvor, potentialer och kurvintegraler i R 2 och R 3

13 Generaliserade dubbelintegraler

1. (6p) (a) Använd delmängdskonstruktionen för att tillverka en DFA ekvivalent med nedanstående NFA. (b) Är den resulterande DFA:n minimal? A a b.

F8: Logiska komponenter. Introduktion. Koder. Avkodare. Logiska komponenter

Kan det vara möjligt att med endast

FACIT TILL OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Vi önskar er ett trevligt Speedwaymöte i Norrköping denna helg

Magnus Nielsen, IDA, Linköpings universitet

GOLV. Norgips Golvskivor används som underlag för golv av trä, vinyl, mattor och andra beläggningar. Här de tre viktigaste konstruktionerna

4.1 Förskjutning Töjning

24 Integraler av masstyp

Sidor i boken

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Grundläggande matematisk statistik

TENTAMEN. Matematik för basår I. Massimiliano Colarieti-Tosti, Niclas Hjelm & Philip Köck :00-12:00

Trigonometri. 2 Godtyckliga trianglar och enhetscirkeln 2. 3 Triangelsatserna Areasatsen Sinussatsen Kosinussatsen...

parkour Biotop Existerande Äldrebostäder volleyboll Biotop Vatten Våtområde Fotosyntes Sinnesupplevelser Odlingsbäddar Biotop parkour

Revisionsrapport 2/2010. Åstorps kommun. Granskning av lönekontorets utbetalningsrutiner

TRAFIKUTREDNING SILBODALSKOLAN. Tillhör detaljplan för Silbodalskolan Årjängs kommun. Upprättad av WSP Samhällsbyggnad,

247 Hemsjukvårdsinsats för boende i annan kommun

Malmö stad, Gatukontoret, maj 2003 Trafiksäkra skolan är framtaget av Upab i Malmö på uppdrag av och i samarbete med Malmö stad, Gatukontoret.

Uppsala Universitet Matematiska Institutionen Bo Styf. Sammanfattning av föreläsningarna 5-7.

Elementær diskret matematikk, MA0301, våren 2011

============================================================ V1. Intervallet [a,b] är ändligt, dvs gränserna a, b är reella tal och INTE ±.

Sfärisk trigonometri

============================================================ V1. Intervallet [a,b] är ändligt, dvs gränserna a, b är reella tal och INTE.

Lösningsförslag till tentamen i SF1683 och SF1629 (del 1) 23 oktober 2017

Matris invers, invers linjär transformation.

ICEBREAKERS. Version 1.0 Layout: Kristin Rådesjö Per Wetterstrand

Kaffe 5 kr Bulle 5 kr Kaffe och bulle 8 kr

INTRODUKTION. Akut? RING:

Slumpjusterat nyckeltal för noggrannhet vid timmerklassningen

Vilken rät linje passar bäst till givna datapunkter?


Ekosteg. En simulering om energi och klimat

Svar: a) i) Typ: linjär DE med konstanta koefficienter i homogena delen dy men också separabel ( y = 10 4y

Making room for tomorrow

Om i en differentialekvation saknas y, dvs om DE har formen F ( x, . Ekvationen z ) 0. Med andra ord får vi en ekvation av ordning (n 1).

Tillämpning av integraler

Listor = generaliserade strängar. Introduktion till programmering SMD180. Föreläsning 8: Listor. Fler listor. Listindexering.

V1. Intervallet [a,b] är ändligt, dvs gränserna a, b är reella tal och INTE ±. är begränsad i intervallet [a,b].

Tentamen Programmeringsteknik II Skrivtid: Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper.

Guide - Hur du gör din ansökan

Lösningar Datastrukturer TDA

f(x)dx definieras som arean av ytan som begränsas av y = f(t), y = 0, t = a och t = b, se figur.

Var femte folkvald sverigedemokrat är sjukpensionär

Algebraiska uttryck: Introduktionskurs i matematik. Räknelagar: a = b a. a b. Potenser: 1. = ( n gånger )

Regionmagasinet. Är det alltid bäst med piller? Här finns fler än ett skelett i garderoben. Valet till regionfullmäktige görs om 15 maj

Åstorps kommun. Revisionsrapport nr 4/2010. Granskning av kommunens kommunikation med medborgarna

Uppgiftssamling 5B1493, lektionerna 1 6. Lektion 1

Matematiska uppgifter

Integraler och statistik

Tillståndsmaskiner. Moore-automat. Mealy-automat. William Sandqvist

F5: Vektorer (Appendix B) och Vektormodulation (Kap PE 2)

1 e x2. lim. x ln(1 + x) lim. 1 (1 x 2 + O(x 4 )) = lim. x 0 x 2 /2 + O(x 3 ) x 2 + O(x 4 ) = lim. 1 + O(x 2 ) = lim = x = arctan x 1

UPPTÄCK OCH DEFINIERA SAMBANDET MELLAN TVÅ OMRÅDEN SOM DELAS AV GRAFEN TILL EN POTENSFUNKTION

V1. Intervallet [a,b] är ändligt, dvs gränserna a, b är reella tal och INTE ±. är begränsad i intervallet [a,b].

Räkneövning i Termodynamik och statistisk fysik

Sektion LÅGFRIKTIONSPLAST Kedjeglidlister Glidlister Styrlister Band, Plattor, Rundstång Specialdetaljer

ProMinent. Driftinstruktion Ultromat AT/96 och ATF/96 Serie V 4.0 Trekammaranläggning för beredning av polyelektrolyt

Föreläsning 7: Trigonometri

En krona dagen om dag ona om r e k n n E E n n k e g o r a d m o a n

The Next Generation platform Snabbguide

Transkript:

Innhåll Dtstrukturr och lgoritmr Progrmmringsmtodik - för kognitionsvtr, 5DV059 - md inriktning mot kognition, 5DV06 2008-01-1 Dtstrukturr Träd, grfr, mängdr Algoritmr komplxittsnlys Läsnvisning: Dss bildr + DoA-kompndit (+ Jnlrt&Wibrg-bokn) Träd Ett tomt träd hr ing nodr Ett träd är tomt llr hr xkt n rot. Vrj nod (utom rotn) hr xkt n föräldr. Vrj nod hr tt ändligt ntl brn. Nodr md smm föräldr klls syskon. rot Träd Nodr utn brn klls löv. Kopplingn mlln två nodr klls knt. Djupt för n nod är smm som ntlt kntr mlln nodn och rotn. Ett dlträd bstår smtlig ättlingr till n nod. knt syskon Löv Binär träd En nod i tt binärt träd kn h högst två brn Brnn klls vänstr- och högrbrn. Dt ndr brnt kn komm för dt först. Trädn ndn är OLIKA binär träd. Trvrsring v träd Tillämpningr v träd involvrr oft tt mn Sökr ftr tt lmnt md viss gnskpr Trnsformrr strukturn till n nnn struktur Exmplvis sortring och blnsring Filtrrr ut lmnt md viss gnskpr All dss byggr på tt mn trvrsrr strukturn.

Trvrsring v träd Brddn-först Mn undrsökr n nivå i tgt. Först rotn, sdn rotns brn, dss brnbrn osv. Kö oft hjälp vid implmnttionn. Vrj nod i trädt bsöks ndst n gång. Sökr mn något som finns hittr mn dt. Trvrsring v träd Brddn-först Algoritm bfordr(tr T) input: A tr T to b trvrsd for ch lvl L of T do for ch nod of L do comput(nod) Ordningn:, b, c, d,, f, g, h, i, j Trvrsring v träd Djupt-först Mn följr vrj grn i trädt utifrån rotn till lövt Stck till hjälp för implmntringn Vrj nod bsöks ndst n gång. Tr vrintr: Prordr Postordr Inordr Trvrsring v träd Djupt-först: Prordr Algoritm prordr(tr T) input: A tr T to b trvrsd comput(root(t)) // Do somthing with nod for ch child w of root(t) do prordr(w) prordr(bintr T) comput(root(t)) prordr(lftchild(t)) prordr(rightchild(t)) Ordningn:, b, c, d, f, g,, h, i, j Prordr Läs tt dokumnt Trvrsring v träd Djupt-först: Postordr Algoritm postordr(tr T) input: A tr T to b trvrsd for ch child w of root(t) do postordr(w) comput(root(t)) // Do somthing with nod postordr(bintr T) postordr(lftchild(t)) postordr(rightchild(t)) comput(root(t)) Ordningn: b, c, f, g, d, h, i, j,,

Algoritm vlutexprssion(tr t) If islf(t) rturn gtvlu(t) ls op gtvlu(t) x vlutexprssion(lftchild(t)) y vlutexprssion(rightchild(t)) rturn x op y * + 3-2 / + Postordr Bräkn ritmtisk uttryck Trvrsring v träd Djupt-först: Inordr Algoritm inordr(tr T) input: A tr T to b trvrsd nod root(t) inordr(firstchild(t)) comput(nod) // Do somthing with nod for ch child w of nod (xcpt first) do inordr(w) inordr(bintr T) inordr(lftchild(t)) comput(root(t)) inordr(rightchild(t)) 1 3 9 5 Ordningn: b,, c, f, d, g, h,, i, j Algoritm printexprssion(tr t) print ( if hslftchild(t) thn printexprssion(lftchild(t)) print gtvlu(t) if hsrightchild(t) thn printexprssion(rightchild(t)) print ) * + 3-2 3 1 9 5 / + Inordr Skriv ritmtisk uttryck Binärt sökträd (BST) Sökträd är konstrurd spcillt för sökning. Krv Dt måst xistr n linjär ordning v nodrn. Dfinition Söknyckln för nod n är störr än ll söknycklr hos n's vänstr dlträd. Söknyckln för nod n är mindr än ll söknycklr hos n's högr dlträd. Binär sökträd Dt kn finns flr rprsnttionr v smm träd. En inordr trvrsring kommr tt bsök nodrn i n sortrd ordning. Algoritmrns hstight för insättning, borttgnd och sökning är högst brond v utsndt på trädt. Blnsr trädt. Användningsområdn Träd är n dtstruktur som nvänds flitigt inom ll möjlig områdn i dtvtnskp: rtificill intlligns, syntxträd som tstr om kod är skrivn på rätt sätt, snbb inmtning v txt vi mobiltlfonr (T9), komprimring v dt, gogrfisk informtionssystm... och mång flr.

A Grfr Bstår v n uppsättning nodr och kntr. Två nodr som är koppld md n knt klls grnnr. Grfr kn vr osmmnhängnd. Kntr kn vr riktd. 6 E R C 8 5 3 F 6 6 D G B 3 d c d b c b Bild från sidn 337 i Jnlrt L-E., Wibrg T., Dttypr och lgoritmr, Studntlittrtur, 2000 Sökning i grfr Två problm Att int miss nodr Att int bsök n nod flr gångr. Strtgi Börj md n godtycklig nod. Tst ll kntr från ll bsökt nodr. Kom ihåg vilk nodr som är bsökt. Sökning i grfr Brddn först Tst ll kntr från dn ktull nodn, innn du tstr n nnn nod. Djupt först Fortsätt så långt du kn från dn ktull nodn innn du tstr dss ndr kntr. Användningsområdn Grf är n dtstruktur som också nvänds flitigt! Grftori Kortst vägn lgoritmr Mximlt flöd Minimlt uppspännnd träd Trvling slsmn problm... Dtorkommuniktion och dtornät Som visulisring v nätvrk v olik slg Algoritmr Krv på n lgoritm (Donld Knuth): Ändlight Algoritmn måst h n ändlig bskrivning Bstämdht Vrj stg måst vr ntydigt Indt Vrj lgoritm måst h noll llr flr indt Utdt Algoritmn måst h tt llr flr utdt Effktivitt Vrj stg i lgoritmn måst vr ffktiv, kunn utförs på n ändlig tidsrymd Olik sätt tt bskriv n lgoritm Nturligt språk Förklr problmlösningn md vnlig txt, v md införd vribl- och funktionsnmn. Blockdigrm Vis n grov struktur v problmlösningn i form v ritd "boxr". Vrj box är tt dlproblm. Flödsschm/flödsdigrm, strukturdigrm Ritr lgoritmn md olik symbolr, som visr när och hur skr skll sk i progrmmt. Psudokod En blndning v progrmmringsspråk och vnlig txt, dvs mn hr vriblr, funktionr, kontrollstrukturr tc

Exmplproblm Jg sk bjud på mums mums till kfft. Hur mång förpckningr måst jg köp? Vi ntr följnd: Vrj förpckning innhållr mums mums Vrj prson ätr i snitt 3 mums mums om d är färsk nnrs ätr d br 2 mums mums i snitt. Dtt xmpl är inspirrt v korvxmplt på sidn http://www.idt.mdh.s/kursr/cd5310/vt0rjn/lcturs/f1-problmsolving.pdf Algoritm nturligt språk 1. Fråg ftr ntlt prsonr; kll tlt för Prsonr. 2. Fråg om mums mumsn är färsk; kll svrt ärfärsk. 3. Om ärfärsk är snn 1. Multiplicr Prsonr md 3 (ntlmumsmums). Annrs 1. Multiplicr Prsonr md 2 (ntlmumsmums) 5. Dl ntlmumsmums md. 6. Avrund svrt uppåt till närmst hltl; kll dtt tl för Pkt. 7. Svr md tlt Pkt. Algoritm blockdigrm Progrm Antl mums mums-pkt Algoritm flödsdigrm Strt Läs in prsonr Läs in ärfärsk Läs in Prsonr och ärfärsk Bräkn Pkt Vis Pkt mumsmums = prsonr * 3 Är ärfärsk snn? mumsmums = prsonr * 2 Bräkn ntl mums mums Dl ntl mumsmums md och vrund uppåt pkt = mumsmums/ vrund uppåt Vis Pkt Stop Algoritm psduokod 1. Läs in Prsonr (ntlt prsonr) 2. Läs in ärfärsk (om mums mums är färsk) 3. If ärfärsk Thn 1. ntlmumsmums = Prsonr * 3. Els 1. ntlmumsmums = Prsonr * 2 5. svr = ntlmumsmums/ 6. Pkt = Avrund svr uppåt till närmst hltl 7. Vis Pkt. Algoritmnlys För tt vgör om n viss lgoritm är br, kollr mn oftst sämst fllt. Intrssnt tt koll hur lgoritmn växr md storlkn på problmt. Att sök ftr tt visst lmnt i n vktor är dirkt brond på ntlt lmnt, n, i vktorn.

Ordo Ordo Till hjälp tr mn då n mtmtisk funktionsdfinition som klls ordo, O. f(n) ngr ntlt bräkningr n lgoritm gör om storlkn på dtt är n. g(n) ngr n godtycklig funktion. Om dt finns tt c så tt f(n) <= c g(n) för n > n 0 sägs f(n) vr O(g(n)). Exmpl Att sök tt lmnt i n vktor är O(n). Ävn om vrj stg i sökningn krävr flr oprtionr, kn vi sätt c till tt högr tl och problmt växr nbrt v n. Att lt tt lmnt i tt blnsrt binärt sökträd är O(log 2 (n)). g(n) I g(n) vill mn nbrt h dn dl som växr fortst. Konstntr är INTE viktigt. Ex. n 2, nlog(n), n 3. Att koll på hur fort tt problm växr är för små problm oft int så intrssnt, mn för stor problm kn dt vr hlt vgörnd. Exmpl Litt räknxmpl n log 2 (n) n 2 n 3 2 n 1 oprtion tr 1μs 2 1 8 1*10 9 lmnt i n list 2 8 6 16 Kvdrtisk sortringslgoritm n 2 16 256 8 256 65.536 096 16 milj 65.536 1.15 10 77 31000 år Logritmisk sortringslgoritm n*log(n) 30000s 1 rbtsdg 102 10 1 milj 1 mrd 1.79 10 308 n 2 och dubblt så snbb => 15500 år n 2 och 1000 gångr så snbb => 31år

Anlys v lgoritmr Primitiv oprtionr Är i stort stt obrond v progrmspråk och kn dfinirs i trmr v psudokod: Anrop n mtod/funktion Rturnr från n mtod/funktion Utför n ritmtisk oprtion (+, -, ) Jämför två tl, tc. Rfrr till n/tt vribl/objkt Indxr i n rry Antg i nlysn tt dss kostr 1. Exmpl Algorithm rrymx(a,n) input: An rry A storing n intgrs output: Th mximum lmnt in A currntmx A[0] //1+1 for i 1 to n-1 do //+n(1+1+1)+(n-1)*([]+1+1+1) if currntmx < A[i] thn //1+1+1+1 currntmx A[i] //1+1+1 rturn currntmx //1+1 T mx (n)= 6+3n+(n-1)*10+2 = 13n-2 T min (n)= 6+3n+(n-1)*7+2 = 10n+1 Hur får mn ordo? Om dt finns tt c så tt f(n) <= c g(n) för n > n 0 sägs f(n) vr O(g(n)). På förr sidn hd vi T min (n) och T mx (n) T(n) är vårt f(n) och för tt få konstntn bräkns f (n) lim där g(n) är dn störst trmn n g(n) +1 i vårt fll n. 13n 2 lim + 1 = 1 n n 13n-2 <= 1n för ll n >= n 0 då n 0 =1 300 250 200 150 100 50 0 f(n) = 13n-2 g(n) = 1n 1 2 3 5 6 7 8 9 10 11 12 13 1 15 16 17 18 19 20 Algoritmnlys Smmnfttning O(n) nvänds för tt utryck ntlt primitiv oprtionr som utförs som n funktion v storlkn på indt En övr gräns för tillväxt rrymx är n linjär lgoritm dvs O(n) En lgoritm som körs på O(n) är bättr än n O(n 2 ), mn O(log(n)) är bättr än O(n) log(n) <<n<<n 2 <<n 3 <<2 n Algoritmnlys Litn vrning Vr ktsm, stor konstntr ställr till dt T(n)=1000000n är n linjär O(n), mn i mång fll sämr än T(n) = 2n 2 som är O(n 2 ) O-nottionn är n stor förnkling, dvs n övr gräns, dt finns släktingr som bgränsr ndåt. Anlysn tr j hänsyn till olik hårdvror.

Sortring En v d vnligr oprtionrn på vktorr/rryr. Komplx oprtion Vrj lmnt måst jämför sig md ll d övrig I grundn n O(n 2 ) oprtion Kn dn görs på tt bättr sätt? Bubbl sort Enklst och mst intuitiv sortringslgoritmn. Elmntn ''bubblr'' upp gnom fältt. Går ignom vktorn och bytr plts mlln två intilliggnd lmnts som int är i ordning. Upprpr dtt tills hl vktorn är sortrd (mx n ggr). Bubbl-sort Exmpl Mång implmnttionr nligt smm princip. ''Psudo''-kod: do { chngd = fls; for (i=1; i<lngth; i++) { // OBS! i=1 if (v[i-1] > v[i]) { chngd = tru; swp(v[i-1],v[i]); } } } whil(chngd); Mrg sort Jobbr md n xtr rry. Splittr vktorn för tt sdn utnyttj tt dlrryr rdn är sortrd. ''Divid nd conqur'' Byggr upp ny dl-rryr gnom tt prvis jämför frontlmntn. Exmpl mrg sort Divid-fsn 7 5 2 9 7 5 2 9 3 8 3 8 7 5 2 9 3 8 7 5 2 9 3 8

Exmpl mrg sort Qonqur-fsn Quick sort 7 5 2 9 3 8 5 7 2 9 3 8 2 5 7 9 3 8 2 3 5 7 8 9 'Divid nd conqur'' Användr tt ''pivot''-lmnt. Läggr ll lmnt mindr än pivotlmntt på n sid och d ndr på dn ndr. Upprpr procdurn för dl-rryrn. När ll dl-rryr bstår v som mst tt lmnt är d sortrd. Svåright tt hitt br pivot-lmnt "snbbt". Jämförls I mdlfllt är Bubblsort O(n 2 ). Mrg-sort och Quick-sort O(n log(n)). Mrg-sort och Quick-sort krävr n intllignt implmntring/mr minn. Kritiskt för stor dtmängdr. Mrg-sort och Quick-sort är rkursiv lgoritmr.