INF5110 – 5. og 7. mai 2015 Stein Krogdahl, Ifi, UiO

Slides:



Advertisements
Liknende presentasjoner
Kvalitative studier Trond Hatling Sintef Unimed Helsetjenesteforskning
Advertisements

Mentale rom en liten innføring i teorien
Programmering i ActionScript - hva er det, og hvordan undervise?
@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no.
TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Kristian Veøy
10. Presenting Page Elements Presentere sideinformasjon.
Godt verktøy er halve jobben
Hva trenger jeg av data, og hvordan skal jeg innhente disse?
Gruppe 6 Gunnar Henrik Mathias Morten Ronny Svein Ivar.
Bedriftens kostnader Kostnader klassifiseres på en rekke forskjellige måter. En av de viktigste er hvordan de reagerer på aktivitetsnivået Faste kostnader.
Forside Korteste sti BFS Modifikasjon Dijkstra Eksempel Korrekthet Analyse Øving Spørsmål Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no.
@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no.
Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no
Kompleksitetsanalyse
Forside Motivasjon Analyse Forside Motivasjon Analyse  -notasjon O og  Relasjoner Klasser Fallgruver Spørsmål Kompleksitetsanalyse Åsmund Eldhuset asmunde.
EVALUERING AV PRODUKTER, PROSESSER OG RESSURSER. Gruppe 4 Remi Karlsen Stian Rostad Ivar Bonsaksen Jonas Lepsøy Per Øyvind Solhaug Andreas Tønnesen.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 2.10 Default values – standardverdier ved oppstart MER OM: Sub-prosedyrer og sub-funksjoner.
Gjennomgang av prøven Tidsangivelse. Prøven deles ut Vi fyller ut øvelsen sammen.
Algoritmiske metoder Innhold: Effektivitetsbetraktninger Programmeringsteknikker Datastrukturer Algoritmer tilknyttet datastrukturene Lærebok: Hafting/Ljosland:
Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker
INF 295 Algoritmer og datastrukturer Forelesning 7 ADT Lister, Stakker og Køer Hans Fr. Nordhaug (Ola Bø)
Skjema/Forms HTML II IT og læring 2/20 november 2001.
Identifisering og bruk av indikatorer
Kvalitative og kvantitative metoder
INF 4130 Eksamen 2008 Gjennomgang.
Oppgaver til kodegenerering etc. INF-5110, 2013 Oppgave 1: Vi skal se på koden generert av TA-instruksjonene til høyre i figur 9.10 i det utdelte notatet,
Kapping av plater Mål: Vi skal lage komponenter for en møbelfabrikk ut fra standardiserte plater på 12 x 24 dm. Komponentene har lengde og bredde oppgitt.
1 INF5110 – 23. april, 2013 Svar på noen oppgaver til kap. 8 Beklager noe trykkfeil og rot på forelesningene Håper dette er bedre (lagt ut 24/4) Nå fredag.
1 INF5110 – 23. april, 2013 Noen oppgaver til kap. 8 Dette er en bedre utgave av oppgavene, lagt ut 24. april Nå fredag (26/4): Det blir ikke undervisning.
De 222 mest brukte ordene i det norske språket..
Kap. 5 del 2 – SLR(1), LR(1) og LALR(1) – grammatikker INF5110 – v2005 Arne Maus, Ifi UiO.
LISP-OPPGAVER 1)Skriv en prosedyre som konverterer en liste til en array, altså en prosedyre som leser inn en liste og returnerer en endimensjonal array.
1 INF oktober 2010 Stein Krogdahl Foreløpige foiler Dagens program: –Første time: Kap 23.5: Trær og strategier for spill med to spillere –Andre.
Masterskolen 2012 : Introduksjon Opplegget for Masterskolen –Opplegget, timeplan med mer Elementene i en masteroppgave –Teori, metode og empiri (data)
HUMIT1731 Hypermedier Introduksjon til XSL Transformation (XSLT)
Inf1000 (Uke 5) Arrayer, filer og tekst
Lokalisering og max minimumavstand. LOG530 Distribusjonsplanlegging 2 2 Anta at nettverket angir en region hvor McBurger skal opprettes 3 konkurrerende.
Å ANALYSERE SAKPROSATEKSTER
Kapittel 4 Skriving av klasser. 4.1 Anatomien til ein klasse Så langt har vi brukt ferdige klasser frå klassebiblioteket i Java Vi lagar objekt og brukar.
Kapittel 7 Array (lister og tabellar). 7.1 Arrayelement Array (lister, tabellar) er kjent frå VB Blir brukt til å organisere data når vi har mange dataelement.
Operasjonsanalytiske emner Prognosemodeller basert på Tidsserieanalyse Rasmus RasmussenBØK710 OPERASJONSANALYTISKE EMNER1 Del 23Forecasting 1 - Mønster.
Android-Programmering Våren Oversikt Long-running operasjoner Introduksjon til Android services On-demand service Bruk av servicer på tvers av prosesser.
Samfunnsvitenskapelig metode – innføring Forelesning 4/
HISTORISK- BIOGRAFISK METODE. Mer moderat forhold mellom litteratur og historie. Også her er man opptatt av kontekst, men i form av avsender og forfatter.
M&L2 Kap. 5 - ver.1 Spørre- skjemaer Oslo, okt 2010.
Seminarundervisning STV2250 – Internasjonal miljø - og ressurspolitikk.
Pakkeforløp er svaret men … hva var spørsmålet?
INF5110 – 23. april, 2013 Svar på noen oppgaver til kap
Presiseringer / endringer i reglement
Brøk Regneartene.
MAT0100V Sannsynlighetsregning og kombinatorikk
LES SMARTERE Oversikt Lesemål Les aktivt Oppsummer Repeter
Samfunnsvitenskapelig metode – innføring
LES SMARTERE Oversikt Lesemål Les aktivt Oppsummer Repeter
Mulig.
IS-102 Interaksjon med objekter
Nysgjerrighet Hva er du nysgjerrig på akkurat nå?
Undersøkelse blant synshemmede For Norges Blindeforbund
Skolens utviklingsplan B – Samarbeid
Bedriftens kostnader Kostnader klassifiseres på en rekke forskjellige måter. En av de viktigste er hvordan de reagerer på aktivitetsnivået Faste kostnader.
Noen tanker før medarbeidersamtale på din arbeidsplass
Vitenskapsfilosofi og utredningsmetodikk, tirsdag 15. februar 2000.
Spørrekonkurranse om [ditt emne]
Nett og kommunikasjon Flere studenter på utveksling
Økonomistyring KRV-analyser
Eric Jul PSE, Inst. for informatikk
Begynnerkurs i Python Realfagskonferansen 2019 Henrik H. Løvold
Sensorveiledninger på MN
For, While, prosedyrer m/ parametere, funskjoner
Utskrift av presentasjonen:

INF5110 – 5. og 7. mai 2015 Stein Krogdahl, Ifi, UiO Dette er foiler om global data-analyse NB: Disse foilene er også pensum (men stoffet finnes bare her på disse foilene.)

Global dataflyt-analyse, eksempler: Gitt en TA-instruksjon der variablen x brukes: Finn alle de tilordninger (definisjoner) der denne verdien på x kan ha vært satt Gitt en tilordning der x blir satt: Finn alle de steder der denne verdien av x kan bli brukt Disse og liknende ting: Kan ”lett” bergenes ved en kompletterings-algoritme omtrent som når vi finner First og Follow. Vi skal se på en slik algoritme som finner: Hvilke variable som faktisk er i live etter hver basal blokk

Vi skal se på global dataflyt-analyse for å finne: Hvilke variable er egentlig i live etter en basal blokk? Vi har tidligere antatt at alle programvariable er i live etter hver basal blokk, og at ingen temporær-variable er det. Den analysen vi ser på her vil gi svar på hvilke variable som faktisk er i live etter hver blokk. Altså, gitt en blokk: For hvilke variable det er mulig at deres verdi på slutten av blokka vil bli brukt videre i utførelesen. Vi kan godt her også tillate at temporære variable kan bære verdier fra en basal blokk til en annen (og altså kan være i live etter en blokk).

Data for algoritmen som finner: Hvilke variable er i live etter en basal blokk Hver basal blokk har, ut fra strukturen på flytgrafen, en mengde av (direkte) etterfølgere og forgjengere (mengder av basale blokker), og disse vil altså være konstant gjennom algoritmen! Begge disse mengdene kan inkludere blokken selv Under algoritmen har hver basal blokk to mengder av variable knyttet til seg (og disse vil stadig få flere elementer gjennom algoritmen) InLive: Dette skal bli mengen av variable som er i live helt i starten av den aktuelle blokka. Initielt er denne mengden tom for alle blokker. OutLive: Dette skal bli mengden av variable som er i live helt på slutten av den aktuelle blokka. Det er den vi egentlig er interessert i (for å kunne initialisere algoritmen som finner NextUse etc. med så få variable som mulig). Også disse skal fra starten være tomme.

Eksempel på de forskjellige mengder m.m. Forgjenger-mengdene er: For B1: ingen (starten av alg.) For B2: B1 For B3: B2 og B3 For B4: B3 For B5: B1 og B1 : InLive : OutLive Denne instruksjonen tenker vi oss byttet ut med: return (fact)

Mer global dataflyt-analyse Ved “global analyse” ser vi på hele flytgrafen for en metode Vi ser på hver basal blokk, og koker den informasjonen vi trenger om hver variabel i hver blokk ned til ett av følgende tre tilfeller: 1) Blir den verdien som er i variablen ved inngang av blokken brukt før den eventuelt blir gitt ny verdi ved tilordning? 2) Får variablen ny verdi ved tilordning før den eventuelt blir brukt? 3) Blir variablen hverken brukt eller får ny verdi? Denne informasjonen kan lett samles inn for hver blokk og hver variabel. Algoritmen vil generelt arbeide seg “bakover”, både gjennom de basale blokkene, og langs kantene.

Hva kan vi i de tre tilfellene slutte om: Innholdet av InLive når vi kjenner OutLive 1) Den verdien som er i variablen x ved inngang av blokken blir brukt før x eventuelt blir gitt ny verdi ved tilordning. Eksempler: x = x + y a = x + y y = u + v y = u + v Her skal InLive inneholde x uansett om den var med i OutLive eller ikke 2) Variablen x får ny verdi ved tilordning før den eventuelt blir brukt. Eksempler: x = u + v x = u + v a = x + y a = w + y Her skal InLive ikke inneholde x uansett om den var med i OutLive eller ikke 3) Variablen x blir hverken brukt eller får ny verdi i blokka. Eksempel: a = w + y w = u + v Her skal InLive inneholde x hvis og bare hvis den var med i OutLive

Kompletterings-algoritmen: Selve algoritmen går på at vi utfører følgende kompletteringssteg så lenge ett av de tre gir noe nytt for en eller annen variabel og en eller annen blokk: Tilbakeføring gjennom en blokk: Velg en variabel og en blokk, og se om det er tilfelle 1), 2) eller 3). Ut fra det og innholdet i OutLive, avgjør så om x skal med i InLive. Tilbakeføring fra InLive til forgjengerenes OutLive: Se på en InLive-mengde, og sørg for alle dens variable er inkludert i OutLine-mengdene til alle forgjenger-blokker Virker fordi alt som her legges inn i en av mengdene InLive eller OutLive ved disse skrittene må være med i de respektive mengdene, og fordi vi til slutt må få med alle som skal være med (siden alt er endelig). Det som til slutt står i OutLive-mengdene er nå de riktige (og disse kan så brukes som initialisering til algoritmen som finner next-use etc.)

Eksempel: Initialisering: Ø Eksempel: Finn hvilke variable som er i live etter hver basal blokk. Initialisering: Alle mengder er tomme (= Ø) a = 5 B0 Ø Ø B1 x = 8 y = a + x Ø B2 B3 Ø B4 Ø Ø a = a + 1 y = 3 + z z = a + x a = y + z a = y + 8 y = 3 Ø Ø Ø Ø Ø B5 B5 a = x + y svar = a + z Return svar Ø Ø

Et par skritt senere Ø a = 5 B0 Ø Ø B1 x = 8 y = a + x Ø B2 B3 Ø B4 Ø a = a + 1 y = 3 + z z = a + x a = y + z a = y + 8 y = 3 x y z Ø x y z svar x y z B5 B5 a = x + y svar = a + z Return svar Ø svar

InLive for B2, B4 og outLive for B3 Ø B0 a = 5 Ø Ø B1 x = 8 y = a + x a x z B4 Ø x y z a = a + 1 y = 3 + z z = a + x a = y + z a = y + 8 y = 3 x y z a x z x y z svar x y z B5 B5 a = x + y svar = a + z Return svar Ø svar

InLive for B3 outLive for B1 og så inLive for B1 Ø B0 a = 5 Ø a z B1 x = 8 y = a + x a x y z B2 B3 a x z x y z B4 a x y a = a + 1 y = 3 + z z = a + x a = y + z a = y + 8 y = 3 x y z a x z x y z svar x y z B5 B5 a = x + y svar = a + z Return svar Ø svar

z B0 Til slutt outLive og inLive for B0. I tillegg skal inLive til B1 inn i outLive til B3, men det gir ikke noe nytt, så vi er ferdig. Ellers måtte vi tatt en ny runde bakover fra B3 til B2 osv. a = 5 a z Slutt-situasjonen: a z B1 x = 8 y = a + x a x y z B2 B3 a x z x y z B4 a x y a = a + 1 y = 3 + z z = a + x a = y + z a = y + 8 y = 3 x y z a x z x y z Kommentar: Her ser vi altså at z er i live før programmet starter. Det vil altså si at den verdien z har fra starten kan bli brukt i programmet. Dette kan tyde på at noe er galt, eller at z f.eks. er en parameter til hele metoden svar x y z B5 B5 a = x + y svar = a + z Return svar Ø svar

En liten vri på situasjonen gir dette til en mer interessant oppgave. Ø En oppgave: En liten vri på situasjonen gir dette til en mer interessant oppgave. B0 a = 5 y = a - 1 Ø Ø B1 x = y + 8 y = a + x Ø B2 B3 Ø B4 Ø Ø z = a + 1 y = 3 + z z = a + x a = y + z a = y + 8 y = 3 Ø Ø Ø Ø Ø B5 B5 a = x + y svar = a + 1 Return svar Ø Ø