729G43'Ar*ficiell'intelligens' Planering' Planering' Planering'vs'sökning,'1' Planering'vs'sökning,'2' Arne'Jönsson' HCS/IDA' '

Storlek: px
Starta visningen från sidan:

Download "729G43'Ar*ficiell'intelligens' Planering' Planering' Planering'vs'sökning,'1' Planering'vs'sökning,'2' Arne'Jönsson' HCS/IDA' '"

Transkript

1 Planering' 729G43'Ar*ficiell'intelligens' Planering' Arne'Jönsson' HCS/IDA' ' Sökning'vs'planering' Planeringsnota*oner' Enkel'planering' Par*alordningsplanering' Resursplanering' Hierarkisk'planering' Planering'i'ickeFdeterminis*ska'domäner' Planering'vs'sökning,'1' Sökning' Handlingarna'ger'möjliga'nya'*llstånd' Tillstånden'är'kompleOa,'oPast'enkla' omvärldsbeskrivningar,''*llståndsvektorer' Agenten'kan'testa'om'målet'är'uppnåO'genom'aO' applicera'en'heuris*sk'funk*on,'f,'på'eo'*llstånd,'p,'f(p).' Kan'inte'välja'handling'som'för'närmare'målet'u*från' f(p).' Sökningen'leder'*ll'en'obruten'sekvens'av'handlingar' Planering'vs'sökning,'2' Planering' Använder'en'mer'uOrycksfull'representa*on'som'låter' agenten'resonera'om'*llstånd'och'handlingar' FOPL'kopplar'handlingar'och'*llstånd' Söker'inte'blint'utan'kan'välja'operatorer'som'för'agenten'framåt' Agenten'kan'ta'de'stora'besluten'först' Låter'agenten'lägga'*ll'handlingar'när'de'behövs' Arbetar'med'flera'delplaner'sam*digt'

2 Handlingsrepresenta*on' STRIPSFnota*onen:' Precondi*ons:'villkor'som'måste'vara'uppfyllda'för'aO'u]öra' handlingen' Effect:'effekten'av'aO'u]öra'handlingen.'Delas'ibland'i'en'add' list'och'en'delete'list' Bara'posi*va'predikat'i'*llstånd,'inga'nega*oner' Closed'world'assump*on' Bara'konjunk*oner' Inga'kvan*fierare' Ingen'likhet' Ingen'typning' Inga'situa*onsvariabler' Exempel,'Blocks'world' Predikat: On(x, y) Clear(x) Handling: Move(b, x, y) Precond: On(b, x) Clear(b) Clear(y) Effect: On(b, y) Clear(x) On(b, x) Clear(y) STRIPS hade ADD och DELETE: ADD: On(b, y) Clear(x) DELETE: On(b, x) Clear(y) Exempel' A B C On(A,B) Clear(A) Clear(C) On(B, Table) On(C, Table) STRIPS' Effek*v'men'begränsad' Tar'bort'predikat,'DELETEFlist,'dvs'ickeFmonoton' Move(A, B, C) Precond: On(A, B) Clear(A) Clear(C) ADD: On(A, C) Clear(B) DELETE: Clear(C) On(A, B) A B C On(A,C) Clear(A) Clear(B) On(B, Table) On(C, Table)

3 ADL' Mer uttrycksfullt Tillåter negation Open world assumption Kraftfullare effekter: P Q innebär också P Q Kvantifierade målvariabler: ex, x At(P, x) At(R, x) Konjunktion och disjunktion Villkorliga effekter: when P : E Likhet Typning: b : Block Planeringsalgoritmer' Generera'en'sekvens'av'handlingar'från'start'*ll'mål' Framåtsökning' Bakåtsökning' STRIPS' STRIPSFoperatorer' Exempel' Stack(x, y) P: Clear(y) Holdning(x) D: Clear(y) Holdning(x) A: ArmEmpty On(x, y) UnStack(x, y) P: On(x,y) Clear(x) ArmEmpty D: On(x, y) ArmEmpty A: Holdning(x) Clear(y) PickUp(x) P: Clear(x) OnTable(x) ArmEmpty D: OnTable(x) ArmEmpty A: Holdning(x) PutDown(x) P: Holdning(x) D: Holdning(x) A: OnTable(x) ArmEmpty Start B C A On(B, C) Clear(A) Clear(B) OnTable(A) OnTable(C) ArmEmpty Uppfyllt A Mål B C On(B, C) On(A, B) OnTable(C) ArmEmpty Leta efter operatorer som har On(x, y) på sin ADD-list, dvs Stack(A, B) Precond: Clear(B), Holding(A) Leta efter operator som har Holding(x) på ADD-list: PickUp eller UnStack Välj PickUp(A). Precond: ArmEmpty, Clear(A), OnTable(A) uppfyllt

4 Start NyO'exempel' Mål C A A B C On(A, B) On(B, C) OnTable(C) ArmEmpty B On(C, A) Clear(C) Clear(B) OnTable(A) OnTable(B) ArmEmpty Börja med ett mål, t.ex. On(A, B), ger UnStack(C, A), PutDown(C), PickUp(A), Stack(A, B) Ta sen nästa mål On(B, C). Ger UnStack(A, B), PutDown(A), PickUp(B), Stack(B, C) Nu är inte On(A, B) uppfyllt så PickUp(A), Stack(A, B) Par*alordningsplanering' Problemet'beror'på'aO'STRIPS'arbetar'med'eO'mål'i'taget' Vill'kunna'avbryta'uppfyllandet'av'eO'mål'och'påbörja' nästa'och'sen'fortsäoa'med'det'första'igen' Uppnå'On(A,'B)' 'UnStack(C,'A),'PutDown(C)' FortsäO'med'On(B,'C)' 'PickUp(B),'Stack(B,'C)' Återuppta'On(A,'B)' 'PickUp(A),'Stack(A,'B)' Par*alordningplanerare'skapar'par*ellt'ordnade' delplaner'enligt'least'commitment'strategy,'dvs'faoa'så'få' beslut'som'möjligt' Ännu inte uppfyllt men först partialordnas delplanerna Clear(A) OnTable(A) ArmEmpty PickUp(A) Holding(A) ArmEmpty OnTable(A) Clear(B) Holding(A) Stack(A,B) ArmEmpty ON(A,B) Clear(B) Holdning(A) START OnTable(A) OnTable(B) ON(C,A) ArmEmpty Clear(C) Clear(B) Clear(B) OnTable(B) ArmEmpty PickUp(B) Holding(B) ArmEmpty OnTable(B) Clear(C) Holding(B) Stack(B,C) ArmEmpty On(B,C) Clear(C) Holdning(B) On(A,B) On(B,C) OnTable(C) {x/a} On(C,A) Clear(C) ArmEmpty UnStack(C,A) Holding(C) Clear(A) ArmEmpty On(C,A) Holding(C) PutDown(C) ArmEmpty OnTable(C) Holdning(C) Partialordna, 1 Operatorer som lagts till för att uppnå delmål partialordnas PickUp(A) Stack(A,B) PickUp(B) Stack(B,C) UnStack(C,A) PutDown(C) Vid konflikt ordnas operatorer så att konflikten undviks Stack(A,B) är i konflikt med PickUp(B) eftersom Stack tar bort Clear(B) Stack(B,C) är pss i konflikt med UnStack(C,A) Partialordna: PickUp(B) Stack(A,B) UnStack(C, A) Stack(B,C) MÅL

5 Partialordna, 2 Finns det ytterligare ordning mellan de partiellt ordnade planerna? PickUp(A) Stack(A,B) PickUp(B) Stack(B,C) UnStack(C, A) PutDown(C) PickUp(B) Stack(A,B) UnStack(C, A) Stack(B,C) PickUp(B) (och därmed också Stack(B,C)) före Stack(A,B) och UnStack(C,A) före Stack(B,C) UnStack(C,A) PutDown(C) PickUp(B) Stack(B,C) PickUp(A) Stack(A,B) START OnTable(A) OnTable(B) ON(C,A) ArmEmpty Clear(C) Clear(B) On(C,A) Clear(C) ArmEmpty UnStack(C,A) Holding(C) Clear(A) ArmEmpty On(C,A) Holding(C) PutDown(C) ArmEmpty OnTable(C) Holdning(C) Clear(B) OnTable(B) ArmEmpty PickUp(B) Holding(B) ArmEmpty OnTable(B) Clear(C) Holding(B) Stack(B,C) ArmEmpty On(B,C) Clear(C) Holdning(B) Clear(A) OnTable(A) ArmEmpty PickUp(A) Holding(A) ArmEmpty OnTable(A) Clear(B) Holding(A) Stack(A,B) ArmEmpty ON(A,B) Clear(B) Holdning(A) On(A,B) On(B,C) OnTable(C) MÅL Alla preconditions uppfyllda så planeraren är klar Planeringsgraf Graf med en sekvens av nivåer som svarar mot temporala steg i planen. Bara för propositioner, dvs inga variabler i tillstånden Representerar handlingar och icke-handlingar Ex S 0 A 0 S 1 Have(Cake) Eaten(Cake) Eat(Cake) Have(Cake) Have(Cake) Eaten(Cake) Eaten(Cake) Ömsesidigt uteslutande relationer Mutexlänkar Inkonsistenta effekter en handling negerar en annan handlings effekt Interference en handling negerar en annans precondition Konkurrerande behov två handlingars preconditions är ömsesidigt uteslutande Inkonsistent stöd två satser på samma nivå är varandras komplement eller alla handlingar som kan uppnå satserna är ömsesidigt uteslutande Mutexlänk

6 Planering' 'GraphPlan' 1. Skapa'en'planeringsgraf'med'djup'k' 2. Om'det'finns'en'lösning'returnera'den' 3. I'annat'fall'öka'djupet'med'1'och'gå'*ll'1.' Det'finns'en'lösning'om:' Alla'fakta'i'målet'finns'på'djup'k'och'inte'är'mutex' Om'det'för'alla'delmål'på'djup'kF1,'kF2,' 1'' finns'en'handling'som'inte'är'mutex'med'någon'annan' handling' Planen'är'en'linjärisering'av'eventuella'parallella'' handlingar' GraphPlan def graphplan(problem): graph = initialplanninggraph(problem) goals = goals(problem) while True: if goals all non-mutex in last level of graph: solution = extractsolution(graph, goals, length(graph)) if solution <> failure: return solution elif nosolutionpossible(graph): return failure graph = expandgraph(graph, problem) Punkteringsexemplet S 0 A 0 S 1 Init(At(Flat, Axle) At(Spare, Trunk)) Goal(At(Spare, Axle)) Action(Remove(Spare, Trunk), Precond: At(Spare, Trunk), Effect: At(Spare, Trunk) At(Spare, Ground)) Action(Remove(Flat, Axle), Precond: At(Flat, Axle), Effect: At(Flat, Axle) At(Flat, Ground)) Action(PutOn(Spare, Axle), Precond: At(Spare, Ground) At(Flat, Axle), Effect: At(Spare, Ground) At(Spare, Axle)) Action(LeaveOvernight, Precond: Effect: At(Spare, Ground) At(Spare, Axle) At(Spare, Trunk) At(Flat, Ground) At(Flat, Axle)) CWA At(Spare,Trunk) At(Flat,Axle) At(Spare,Axle) At(Flat,Ground) At(Spare,Ground) Remove(Spare,Trunk) Remove(Flat,Axle) LeaveOvernight At(Spare,Trunk) At(Spare,Trunk) At(Flat,Axle) At(Flat,Axle) At(Spare,Axle) At(Flat.Ground) At(Flat,Ground) At(Spare,Ground) At(Spare,Ground)

7 S 0 A 0 S 1 A 1 S 2 Planering i världen At(Spare,Trunk) Remove(Spare,Trunk) At(Spare,Trunk) At(Spare,Trunk) Remove(Spare,Trunk) At(Spare,Trunk) At(Spare,Trunk) Resursplanering Handlingar tar en viss tid att utföras At(Flat,Axle) Remove(Flat,Axle) LeaveOvernight At(Flat,Axle) At(Flat,Axle) Remove(Flat,Axle) LeaveOvernight At(Flat,Axle) At(Flat,Axle) Planhierarkier Planering i icke-deterministiska domäner Kontinuerlig planering At(Spare,Axle) At(Spare,Axle) PutOn(Spare,Axle) At(Spare,Axle) At(Spare,Axle) At(Flat,Ground) At(Spare,Ground) At(Flat.Ground) At(Flat,Ground) At(Spare,Ground) At(Flat.Ground) At(Flat,Ground) At(Spare,Ground) At(Spare,Ground) At(Spare,Ground) Resursplanering, exempel Vanlig partialordningsplanerare Init(Vinge(v 1 ) Vinge(v 2 ) Motor(m 1, v 1, 40) Motor(m 2, v 2, 30) Hjul(h 1, v 1, 20) Hjul(h 2, v 2, 15)) Goal(Klar(v 1 ) Klar(v 2 )) Action(AddMotor(m, v, d), Precond : Motor(m, v, d) Vinge(v) MotorOn(v), Effect: MotorOn(v) Duration(d)) Action(AddHjul(h, v, d), Precond : Hjul(h, v, d) Vinge(v) MotorOn(v) HjulOn(v), Effect: HjulOn(h) Duration(d)) Start AddMotor1 40 AddMotor2 30 AddHjul1 20 AddHjul2 15 Inspektera1 10 Inspektera2 10 Mål Action(Inspektera(v), Precond : MotorOn(v) HjulOn(v) Vinge(v), Effect: Klar(v) Duration(10))

8 Resursplanering Måste veta när handlingar börjar och slutar ES: tidigaste möjliga starttid LS: senast möjliga starttid Slack = LS-ES ES räknas ut från Start till Mål LS räknas ut från Mål till Start Exempel ES AddMotor1 0 AddHjul1 40 Inspektera1 60 AddMotor2 0 AddHjul2 30 Inspektera2 45 LS LS(OP i-1 )=LS(OP i )-Duration(OP i-1 ), LS(Mål)=ES(Mål)=70 Inspektera2=70-10, AddHjul2=60-15, AddMotor1=45-30 AddMotor AddHjul Inspektera AddMotor1 0 0 AddHjul Inspektera Resursplanerare Planering med resursbegränsning Start [0,0] AddMotor Mål [0,15] AddMotor2 30 [40,40] AddHjul1 [30,45] AddHjul2 15 [60,60] Inspektera1 [45,60] Inspektera2 10 Antag begränsade resurser. Resource anger begränsningen Svårare problem eftersom planeraren måste välja vilken handling som skall utföras först Ofta används minimum slack, dvs tag i varje steg den plan som har minst slack, Greedy. AddMotor 1 Hjul 1 K 1 AddMotor 2 Hjul 2 Slack K

9 Exempel Init(Vinge(v 1 ) Vinge(v 2 ) Motor(m 1, v 1, 40) Motor(m 2, v 2, 30) Hjul(h 1, v 1, 20) Hjul(h 2, v 2, 15) Kran(1) Luftpump(1) Kontrollant(2)) Goal(Klar(v 1 ) Klar(v 2 )) Action(AddMotor(m, v, d), Precond : Motor(m, v, d) Vinge(v) MotorOn(v), Effect: MotorOn(v) Duration(d)), Resource: Kran(1)) Action(AddHjul(h, v, d), Precond : Hjul(h, v, d) Vinge(v) MotorOn(v) HjulOn(v), Effect: HjulOn(h) Duration(d)), Resource: Luftpump(1)) Action(Inspektera(v), Precond : MotorOn(v) HjulOn(v) Vinge(v), Effect: Klar(v) Duration(10)), Resource: Kontrollant(1)) Planer för delade resurser AddMotor 1 Hjul 1 Hjul 2 AddMotor 2 K 1 Hjul 2 AddMotor 2 K 2 AddMotor 1 Hjul 1 K 2 K 1 Minst slack Hierarkisk planering Abstrakta operatorer som håller steg i planen som i sig implementerar operatorn Expanderas till dess att planeraren bara har primitiva operatorer Expanderade planer måste ha korrekta preconditions Interna effekter: preconditions som uppfylls inom en abstrakt operator. Den hierarkiska planeraren behöver inte hantera dessa Externa effekter: preconditions som kommer utanför den abstrakta operatorn. Måste ordnas av planeraren Hierarkisk planering (HTN) P = initialiserad till top-planen while P innehåller icke-primitiva handlingar: välj en handling T ur P välj en metod att expandera T ersätt T med en expansion av T if kritik skall appliceras på detta steg: använd kritiken för att hitta konflikter reparera konflikter if någon konflikt inte kan fixas: return failure

10 Exempel, bygga flygplan Bygga och utvärdera expanderad Bygga flygplan Expandera Sätta in säten Fixa utvecklingspengar pengar Underleverantörer Designa flygplanet ritning Bygga och utvärdera ritning Bygga flygplanskropp Bygga motor fpk Bygga cockpit Sätta samman vingar fpk+ vingar Sätta samman flygplan Utvärdera Kritisera Alla externa effekter måste ordnas För den abstrakta operatorn Bygga och utvärdera måste de externa effekterna säten, hjul, plåt och ritning ordnas Ex Hjul behövs inte för att bygga motor eller för att bygga flygplanskroppen utan går direkt till Sätta samman vingar Sätta samman vingar expanderad hjul plåt motor vingar Bygga vingar Montera hjul & motor Expanderas Till primitiva operatorer Effekterna förfinas: Underleveratör hjul Bygga och utvärdera förfinas till Underleveratör hjul Montera hjul & motor Bygga motor motor Sätta samman vingar förfinas till Bygga motor motor Montera hjul & motor

11 Planering i icke-deterministiska domäner Hittills har världen varit: tillgänglig, statisk och deterministisk Handlingar korrekta och kompletta Två problem: Världen är inte komplett. Kan t.ex. inte se allt som finns Världen är inte korrekt. Någon kan t.ex. flytta objekt eller handlingar misslyckas Strategier för att hantera inkonsistent och icke-komplett information Sensorlös planering Skapar plan utan sensordata Villkorlig planering Skapar plan för olika utfall Omplanerande system Inspekterar världen och planen innan handling Exempel, 1 Måla stol och bord i samma färg. Init(Objekt(Bord) Objekt(Stol) Burk(B 1 ) Burk(B 2 ) ISynfältet(Bord)) Mål(Färg(Stol, c) Färg(Bord, c)) Action(TaAvLock(b), Precond: Burk(b) Effect: Öppen(b)) Action(Måla(x, b), Precond: Burk(b) Objekt(x) Färg(b, f) Öppen(b) Effect: Färg(x, f)) Exempel, 2 Varseblivningsschema Percept(Färg(x, c), Precond: Objekt(x) ISynfältet (x)) Agenten vet färgen, c, på objektet, x. Percept(Färg(b, c), Precond: Burk(b) ISynfältet (b) Öppen(b)) Action(TittaPå(x), Precond: ISynfältet (y) x y Effect: ISynfältet (x) ISynfältet (y))

12 Sensorlös planering, 1 Ser inget och kan därmed bara måla både bord och stol i en av de två färgerna. Inga varseblivningsschema Init(Objekt(Bord) Objekt(Stol) Burk(B 1 ) Burk(B 2 )) Vet också att objekt kan ha en färg x y Färg(x, y) vilket efter Skolemisering ger Färg(x, C(x)) Sensorlös planering, 2 Applicera handlingen: Action(TaAvLock(b), Precond: Burk(b), Effect: Öppen(b)) med {b/burk 1 } ger: Objekt(Bord) Objekt(Stol) Burk(B 1 ) Burk(B 2 ) Öppen(B 1 ) Färg(x, C(x)) Med {x/b 1 och f/c(b 1 )} kan vi applicera handlingen: Action(Måla(x, b), Precond: Burk(b) Objekt(x) Färg(b, f) Öppen(b) Effect: Färg(x, f)) på t.ex. Stol och får: Action(Måla(Stol, B 1 ), Precond: Burk(B 1 ) Objekt(Stol) Färg(B 1, C(B 1 )) Öppen(B 1 ) Effect: Färg(Stol, C(B 1 )) Sensorlös planering, 3 Samma handling på Bord ger: Färg(Bord, C(B 1 )) och måltillståndet: Färg(Stol, C(B 1 )) Färg(Bord, C(B 1 )) Villkorlig planering Skapa'en'plan'som'inspekterar'världen'och'handlar'därePer' ' [TiOaPå(Bord),'TiOaPå(Stol),' 'if#färg(bord,'c)' Färg(Stol,'c)'then'NoOp' ' 'else'[taavlock(burk 1 ),'TiOaPå(Burk 1 ),'TaAvLock(Burk 2 ),'TiOaPå(Burk 2 ),' ' ' 'if'färg(bord,'c)' Färg(b,'c)'then'Måla(Stol,'b)' ' ' 'else#if#färg(stol,'c)' Färg(b,'c)'then'Måla(Bord,'b)' ' ' 'else '[Måla(Stol,'Burk 1 ),'Måla(Bord,'Burk 1 )]]]'

13 Omplanerande system Action monitoring Säkerställ att precond fortfarande håller Plan monitoring Säkerställ att planen fortfarande håller Goal monitoring Se efter om det nu finns bättre mål att uppnå Action monitoring Tolka percept Ta bort brister i planen Handla Ex Action(Move(x, y), Precond: Clear(x) Clear(y) On(x,z) Effect: On(x,y) Clear(z) On(x,z) Clear(y)) Exempel B C A On(B,C) Clear(A) Clear(B) On(A, Table) On(C, Table) Någon välter B, omplanering B C A On(B,Table) Clear(C) Clear(B) Clear(A) On(A, Table) On(C, Table) Move(A,B) Move(B,C) Move(A,B) A B C On(B,C) On(A,B) On(C, Table) A B C On(B,C) On(A,B) On(C, Table)

14 Partialordna Move(A,B) ger som effekt On(A,B) Clear(A) On(A,Table) Clear(B) Clear(B) är precond för Move(B,C) Move(B,C) Move(A,B)

729G43 Artificiell intelligens Planering

729G43 Artificiell intelligens Planering 729G43 Artificiell intelligens Planering Arne Jönsson HCS/IDA Planering Sökning vs planering Planeringsnotationer Enkel planering Partialordningsplanering Resursplanering Hierarkisk planering Planering

Läs mer

Planering. Planering vs sökning, 1. Planering vs sökning, 2. Handlingsrepresentation

Planering. Planering vs sökning, 1. Planering vs sökning, 2. Handlingsrepresentation Planering Planering vs sökning, 1! Sökning vs planering! Planeringsnotationer! Enkel planering! Partialordningsplanering! Resursplanering! Hierarkisk planering! Planering i icke-deterministiska domäner

Läs mer

Lek$on 4: Planering. Robin Keskisärkkä

Lek$on 4: Planering. Robin Keskisärkkä Lek$on 4: Planering Robin Keskisärkkä Sy7e Få en känsla för möjligheter och begränsningar med planering Öva på att modellera planeringsproblem för en planerare Förberedelser Läs kapitel 11 i kursboken

Läs mer

Artificiell Intelligens Övningsuppgifter

Artificiell Intelligens Övningsuppgifter Sökning - Tentauppg 99-:4 Artificiell Intelligens Övningsuppgifter Sökning Konjunktiv normalform Unifiering Resolution Planering Situationskalkyl Maskininlärning Beskriv sökmetoden A* genom att visa hur

Läs mer

Artificiell Intelligens Lektion 1

Artificiell Intelligens Lektion 1 Labbar översikt rtificiell Intelligens Lektion 1 Labbar översikt Planering (Lab1 Projektinspiration 3 stycken datorlabbar Planering Probabilistisk logik Maskininlärning Handledare Robin, Jonas, hristian,

Läs mer

Artificiell Intelligens II Lektion 1

Artificiell Intelligens II Lektion 1 Labbar översikt rtificiell Intelligens II Lektion 1 Labbar översikt Planering (Lab1 Projektinspiration 3 stycken datorlabbar Planering Probabilistisk logik Maskininlärning Handledare Robin, Jonas, hristian,

Läs mer

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten. OS! För flervalsfrågorna gäller att ett, flera eller inget alternativ kan vara korrekt. På flervalsfrågorna ges 1 poäng för korrekt svar och 0,5 poäng om skillnaden mellan antalet korrekta svar och antalet

Läs mer

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs... OBS! För flervalsfrågorna gäller att ett, flera eller inget alternativ kan vara korrekt. På flervarlsfrågorna ges 1 poäng för korrekt svar och 0,5 poäng om skillnaden mellan antalet korrekta svar och antalet

Läs mer

Vad behövs för att skapa en tillståndsrymd?

Vad behövs för att skapa en tillståndsrymd? OBS! För flervalsfrågorna gäller att ett, flera eller inget alternativ kan vara korrekt. På flervarlsfrågorna ges 1 poäng för korrekt svar och 0,5 poäng om skillnaden mellan antalet korrekta svar och antalet

Läs mer

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten. OS! För flervalsfrågorna gäller att ett, flera eller inget alternativ kan vara korrekt. På flervalsfrågorna ges 1 poäng för korrekt svar och 0,5 poäng om skillnaden mellan antalet korrekta svar och antalet

Läs mer

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs... OBS! För flervalsfrågorna gäller att ett, flera eller inget alternativ kan vara korrekt. På flervarlsfrågorna ges 1 poäng för korrekt svar och 0,5 poäng om skillnaden mellan antalet korrekta svar och antalet

Läs mer

Asymptotisk analys innebär att... man försöker uppskatta vad som händer för stora indatamängder.

Asymptotisk analys innebär att... man försöker uppskatta vad som händer för stora indatamängder. OBS! För flervalsfrågorna gäller att ett, flera eller inget alternativ kan vara korrekt. På flervarlsfrågorna ges 1 poäng för korrekt svar och 0,5 poäng om skillnaden mellan antalet korrekta svar och antalet

Läs mer

Shakey s värld med HTNplanering

Shakey s värld med HTNplanering Shakey s värld med HTNplanering 2010-10-03 Artificiell Intelligens 2, 729G11 Maria Lindqvist Fördjupningsarbete, HT 2010 880913-0506 Linköpings Universitet marli314 2 Innehållsförteckning Inledning...

Läs mer

Asymptotisk analys innebär att... man försöker uppskatta vad som händer för stora indatamängder.

Asymptotisk analys innebär att... man försöker uppskatta vad som händer för stora indatamängder. OBS! För flervalsfrågorna gäller att ett, flera eller inget alternativ kan vara korrekt. På flervalsfrågorna kan man bara ha rätt eller fel, dvs frågan måste vara helt korrekt besvarad för att man skall

Läs mer

Tentamenskod: Inga hjälpmedel är tillåtna

Tentamenskod: Inga hjälpmedel är tillåtna Intelligenta och lärande system 15 högskolepoäng Provmoment: Ladokkod: Tentamen ges för: Tentamen (TEN1) Artificiell intelligens (AI) 5hp 21IS1C Systemarkitekturutbildningen Tentamenskod: Tentamensdatum:

Läs mer

Utsagor (Propositioner) sammansatta utsagor sanningstabeller logisk ekvivalens predikat (öppna utsagor) kvantifierare Section

Utsagor (Propositioner) sammansatta utsagor sanningstabeller logisk ekvivalens predikat (öppna utsagor) kvantifierare Section Föreläsning 1 Utsagor (Propositioner) sammansatta utsagor sanningstabeller logisk ekvivalens predikat (öppna utsagor) kvantifierare Section 1.1-1.3 i kursboken Definition En utsaga (proposition) är ett

Läs mer

Artificial Intelligence

Artificial Intelligence Omtentamen Artificial Intelligence Datum: 2014-08-27 Tid: 09.00 13.00 Ansvarig: Resultat: Hjälpmedel: Gränser: Anders Gidenstam Redovisas inom tre veckor Inga G 8p, VG 12p, Max 16p Notera: Skriv läsbart!

Läs mer

de var svåra att implementera och var väldigt ineffektiva.

de var svåra att implementera och var väldigt ineffektiva. OBS! För flervalsfrågorna gäller att flera alternativ eller inget alternativ kan vara korrekt. På flervalsfrågorna kan man bara ha rätt eller fel, dvs frågan måste vara helt korrekt besvarad. Totalt kan

Läs mer

Logik och kontrollstrukturer

Logik och kontrollstrukturer Logik och kontrollstrukturer Flödet av instruktioner i ett programmeringsspråk bygger vi upp med hjälp av dess kontrollstrukturer. I C har vi exemplen if, if else, while, do while. Dessutom finns switch

Läs mer

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk Föreläsning 2 steknik DD1310 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer funktioner betyder att instruera en dator Ett program

Läs mer

STRIPS. En planerares uppbyggnad. Emma Torensjö. Artificiell Intelligens II. Linköpings Universitet HT Emma Torensjö.

STRIPS. En planerares uppbyggnad. Emma Torensjö. Artificiell Intelligens II. Linköpings Universitet HT Emma Torensjö. STRIPS En planerares uppbyggnad Artificiell Intelligens II Linköpings Universitet HT 2012 Innehållsförteckning Innehåll Innehållsförteckning... 3 Inledning... 4 1. Introduktion till STRIPS... 4 2. Operatorbeskrivning

Läs mer

Tommy Färnqvist, IDA, Linköpings universitet

Tommy Färnqvist, IDA, Linköpings universitet Föreläsning 9 Pekare, länkade noder, länkade listor TDDD86: DALP Utskriftsversion av föreläsning i Datastrukturer, algoritmer och programmeringsparadigm 25 september 2015 Tommy Färnqvist, IDA, Linköpings

Läs mer

Sökning i ordnad lista. Sökning och sortering. Sökning med vaktpost i oordnad lista

Sökning i ordnad lista. Sökning och sortering. Sökning med vaktpost i oordnad lista Sökning och sortering Sökning i oordnad lista Att söka efter data man lagrat undan för senare användning är vanligt Egentligen har man ingen annan anledning för att lagra undan data Har man mycket data

Läs mer

Lektion 2: Sökagenter. Robin Keskisärkkä

Lektion 2: Sökagenter. Robin Keskisärkkä Lektion 2: Sökagenter Robin Keskisärkkä Lektionens innehåll Introduktion till laboration 2 Implementation av en sökalgoritm Livekodning Konfrontera ett liknande problem själva Extra: Heuristisk sökning

Läs mer

Mycket kortfattade lösningsförslag till tenta i AI 6 nov 2003

Mycket kortfattade lösningsförslag till tenta i AI 6 nov 2003 2003-12-02 Institutionen för datavetenskap Arne Jönsson/* Mycket kortfattade lösningsförslag till tenta i AI 6 nov 2003 1. Förklara de olika egenskaper en omgivning kan ha och ge exempel på en omgivning

Läs mer

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det? Föreläsning 10 Datalogi 1 DA2001 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer på skärmen print( Hej ) print( Hur är det?

Läs mer

Sätt att skriva ut binärträd

Sätt att skriva ut binärträd Tilpro Övning 3 På programmet idag: Genomgång av Hemtalet samt rättning Begreppet Stabil sortering Hur man kodar olika sorteringsvilkor Inkapsling av data Länkade listor Användning av stackar och köer

Läs mer

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser Introduktion till programmering Föreläsning 2: Variabler, uttryck och satser 1 1 Värden De grundläggande saker som en dator manipulerar resultaten av beräkningar kallas värden Värden vi stött på: 2 och

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Grundläggande satser och uttryck Eric Elfving Institutionen för datavetenskap 5 augusti 2014 Översikt Uttryck Litteraler Operatorer Satser Villkor Upprepning Teckenhantering

Läs mer

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT 2013 1 / 26

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT 2013 1 / 26 Programmering i C++ EDA623 Mer om klasser EDA623 (Föreläsning 6) HT 2013 1 / 26 Mer om klasser Innehåll Konstanta objekt Statiska medlemmar Pekaren this Vänner (friends) Överlagring av operatorer EDA623

Läs mer

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk Föreläsning 2 steknik och C DD1316 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program

Läs mer

Grundläggande datalogi - Övning 2

Grundläggande datalogi - Övning 2 Grundläggande datalogi - Övning 2 Björn Terelius November 7, 2008 Klasser skapas med nyckelordet class Klasser Konstruktorer och destruktorer Undantagshantering class MyClass: Docstring and doctests for

Läs mer

Logisk semantik I. 1 Lite om satslogik. 1.1 Konjunktioner i grammatisk bemärkelse. 1.2 Sant och falskt. 1.3 Satssymboler. 1.

Logisk semantik I. 1 Lite om satslogik. 1.1 Konjunktioner i grammatisk bemärkelse. 1.2 Sant och falskt. 1.3 Satssymboler. 1. UPPSALA UNIVERSITET Datorlingvistisk grammatik I Institutionen för lingvistik och filologi Oktober 2007 Mats Dahllöf http://stp.ling.uu.se/ matsd/uv/uv07/dg1/ Logisk semantik I 1 Lite om satslogik 1.1

Läs mer

Tentamen i. TDDA 69 Data och programstrukturer

Tentamen i. TDDA 69 Data och programstrukturer 1 Linköpings tekniska högskola Institutionen för datavetenskap Anders Haraldsson Tentamen i TDDA 69 Data och programstrukturer Torsdag den 14 januari 2009, kl 14-18 Hjälpmedel: Inga. Poänggränser: Maximalt

Läs mer

Övning2. Variabler. Data typer

Övning2. Variabler. Data typer Vahid 28 okt 2002 prgk02 Övning2 -Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =, ,!=,!) -String hur man

Läs mer

Språket Python - Del 1 Grundkurs i programmering med Python

Språket Python - Del 1 Grundkurs i programmering med Python Hösten 2009 Dagens lektion Ett programmeringsspråks byggstenar Några inbyggda datatyper Styra instruktionsflödet Modulen sys 2 Ett programmeringsspråks byggstenar 3 ETT PROGRAMMERINGSSPRÅKS BYGGSTENAR

Läs mer

Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition):

Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition): Översikt Motivering Syntax och semantik Imperativa språkets byggstenar och Python Datatyper Tilldelning och uttryck Kontrollstrukturer (på satsnivå) Subprogram Relaterade avsnitt: PL 3.1-3.2, 5.1-5.3,

Läs mer

Programmering A. Johan Eliasson johane@cs.umu.se

Programmering A. Johan Eliasson johane@cs.umu.se Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer

Läs mer

Föreläsning REPETITION & EXTENTA

Föreläsning REPETITION & EXTENTA Föreläsning 18 19 REPETITION & EXTENTA Programmeringsteknik på 45 minuter Klasser och objekt Variabler: attribut, lokala variabler, parametrar Datastrukturer Algoritmer Dessa bilder är inte repetitionsbilder

Läs mer

DD1314 Programmeringsteknik

DD1314 Programmeringsteknik Skolan för Datavetenskap och kommunikation DD1314 Programmeringsteknik Föreläsning 1 o print o variabler o reserverade ord o input o kommentarer o beräkningar o datatyper o if-satser Kursinformation Programmering:

Läs mer

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling

Läs mer

Artificiell Intelligens Lektion 4

Artificiell Intelligens Lektion 4 Frames Filmdomän Artificiell Intelligens Lektion 4 Frames (Lab4) Resolution & unifiering Frames system Lagrar hierarkisk information Attribut lagras i attributvärdesstrukturer Attribut kan ha egenskaper

Läs mer

Varför är logik viktig för datavetare?

Varför är logik viktig för datavetare? Varför är logik viktig för datavetare? 1. Datavetenskap handlar ofta om att automatisera processer som tidigare styrts av människor. Intuition, intelligens och mänskliga resonemang ersätts av beräkningar.

Läs mer

Datorlingvistisk grammatik I Institutionen för lingvistik och filologi Oktober 2007 Mats Dahllöf

Datorlingvistisk grammatik I Institutionen för lingvistik och filologi Oktober 2007 Mats Dahllöf UPPSALA UNIVERSITET Datorlingvistisk grammatik I Institutionen för lingvistik och filologi Oktober 2007 Mats Dahllöf http://stp.ling.uu.se/ matsd/uv/uv07/dg1/ Logisk semantik II 1 Predikatlogik, generella

Läs mer

Dataabstraktion. TDDD73 Funktionell och imperativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap

Dataabstraktion. TDDD73 Funktionell och imperativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap Dataabstraktion TDDD73 Funktionell och imperativ programmering i Python Föreläsning 12 Peter Dalenius Institutionen för datavetenskap 2014-11-19 Översikt Vad är abstraktion? Vad är en abstrakt datatyp?

Läs mer

Python. Vi har ofta behov av att behandla datastrukturer på ett enhetligt sätt så att vi kan göra samma sak i flera olika program.

Python. Vi har ofta behov av att behandla datastrukturer på ett enhetligt sätt så att vi kan göra samma sak i flera olika program. Moduler Vi har ofta behov av att behandla datastrukturer på ett enhetligt sätt så att vi kan göra samma sak i flera olika program. Vi har också ofta behov av att skapa överblick i våra program. Som ett

Läs mer

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik VT05 2 Repetition Repetition - Programmering i

Läs mer

Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem

Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem Översikt Stegvis förfining Pseudokod Flödesdiagram Dekomposition KISS-regeln Procedurell dekomposition DRY-regeln Algoritmer Sortering och sökning Stegvis förfining Metod för att skapa ett program från

Läs mer

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klassdeklaration. Metoddeklaration. Parameteröverföring Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar

Läs mer

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk Föreläsning 2 steknik DD1310 Python introduktion Variabler Datatyper Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program är

Läs mer

Föreläsning 2 Programmeringsteknik och C DD1316

Föreläsning 2 Programmeringsteknik och C DD1316 Föreläsning 2 Programmeringsteknik och C DD1316 Föreläsning 2 Programmeringsteknik och C Datatyp Aritmetiska operatorer Omvandling av typer Reserverade ord Mikael Djurfeldt Logiska operatorer

Läs mer

Dataabstraktion. TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap

Dataabstraktion. TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap Dataabstraktion TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12 Peter Dalenius Institutionen för datavetenskap 2013-11-12 Översikt Vad är abstraktion? Vad är en abstrakt datatyp?

Läs mer

Djupstruktur och ytstruktur

Djupstruktur och ytstruktur Djupstruktur och ytstruktur En gammal man bodde på vinden. På vinden bodde en gammal man. Chomsky 1965 baskomponent transformationskomponent Föregångare till UCP Augmented Transition Network (Woods 1970)

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

Läs mer

JavaScript del 3 If, Operatorer och Confirm

JavaScript del 3 If, Operatorer och Confirm JavaScript del 3 If, Operatorer och Confirm Under förra uppgiften så kollade vi på hur användaren kan ge oss information via promt(), vi använde den informationen både för att skriva ut den och för att

Läs mer

Exempel på ett litet Ada-program

Exempel på ett litet Ada-program Exempel på ett litet Ada-program -- En kommentar som beskriver något. with Ada.Text_IO; procedure Mini is -- Deklarationer. K : constant Integer := 5; X, Y : Integer; -- Körbar kod. Ada.Text_IO.Put( Utskrift

Läs mer

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer

Läs mer

Sökning. Sökning. Köoperationer. Generell sökalgoritm

Sökning. Sökning. Köoperationer. Generell sökalgoritm Sökning Sökning! Datastrukturer och operationer! Värdering av sökstrategier! Blind sökning! Heuristisk sökning! Constraint satisfaction! Spelförande program Datastruktur: nod = [tillstånd, förälder, operator,

Läs mer

Föreläsning 3-4 Innehåll

Föreläsning 3-4 Innehåll Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå

Läs mer

A B C D E F A B C D E F (3) Svar: Tabellen ger grafen:

A B C D E F A B C D E F (3) Svar: Tabellen ger grafen: 1. Russel & Norvig menar att man kan utveckla AI-system som antingen tänker som en människa, handlar som en människa, tänker rationellt eller handlar rationellt. Förklara och exemplifiera dessa fyra synsätt.

Läs mer

Tommy Färnqvist, IDA, Linköpings universitet. 1 Kursadministration 1. 2 Introduktion 2 2.1 Varför logik?... 2 2.2 Satslogik... 2

Tommy Färnqvist, IDA, Linköpings universitet. 1 Kursadministration 1. 2 Introduktion 2 2.1 Varför logik?... 2 2.2 Satslogik... 2 Föreläsning 1 Syntax 729G06 Logikdelen Föreläsningsanteckningar i Programmering och logik 21 januari 2014 Tommy Färnqvist, IDA, Linköpings universitet 1.1 Innehåll Innehåll 1 Kursadministration 1 2 Introduktion

Läs mer

Övning 1 - Abstrakta datatyper

Övning 1 - Abstrakta datatyper /home/lindahlm/activity-phd/teaching/12dd1320/exercise1/exercise1.py September 3, 20121 0 # coding : latin Övning 1 - Abstrakta datatyper 18 Summering Vi gick igenom betydelsen av abstrakta datatyper/datastrukturer.

Läs mer

Data, typ, selektion, iteration

Data, typ, selektion, iteration Data, typ, selektion, iteration En programmeringkurs på halvfart IDT, MDH ttp://www.negative-g.com/nolimits/no%20limits%20defunct%20coasters.htm 1 Dagens agenda Talrepresentation Typkonvertering Sekvens

Läs mer

Classes och Interfaces, Objects och References, Initialization

Classes och Interfaces, Objects och References, Initialization Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class

Läs mer

729G74 IT och programmering, grundkurs. Tema 2, Föreläsning 2 Jody Foo,

729G74 IT och programmering, grundkurs. Tema 2, Föreläsning 2 Jody Foo, 729G74 IT och programmering, grundkurs Tema 2, Föreläsning 2 Jody Foo, jody.foo@liu.se Föreläsningsöversikt Kursinfo: återkoppling Muddy Cards och kompletteringar Diskret matematik Python: Programmering

Läs mer

Parameteröverföring. Exempel. Exempel. Metodkropp

Parameteröverföring. Exempel. Exempel. Metodkropp Exempel atriangle.changesize (100, 50); // OK atriangle.changesize (100); // fel antal atriangle.changesize ( 1, 50); // fel datatyp char c = atriangle.getarea (); // fel datatyp Parameteröverföring I

Läs mer

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt

Läs mer

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass Övningstillfälle 4 Klasser och objekt (s. 221 ff.) Syfte 1: En naturlig fortsättning på koncepten abstraktion och inkapsling! Funktion (återanvändning av skyddad, säker och testad kod) Modul (återanvändning

Läs mer

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4: (22 januari 2016 F2.1 ) Föreläsning 2 Täcker material från lektion 1, 2, 3 och 4: Datatyper Aritmetik Tecken och strängar Klasser, Objekt Metoder Villkor, villkorssatser och iterationer main-metoden Kodstandard

Läs mer

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper Tentamen Programmeringsteknik I 2016-03-17 Skrivtid: 1400 1900 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer

Läs mer

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

System.out.println(Jaså du har + antalhusdjur+  husdjur); if ( antalhusdjur > 5 ) System.out.println(Oj det var många); 1 Villkor och styrsatser I de program vi sett tidigare har programkörning inneburit att sats efter sats utförts i den ordning de skrivits i källkoden. Vi har inte kunna ändra programmets uppförande beroende

Läs mer

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1 Skolan för Datavetenskap och kommunikation DD1310/DD1314/DA3009 Programmeringsteknik Föreläsning 1 Kursinfo Python-intro: print variabler reserverade ord input kommentarer beräkningar datatyper if-satser

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner

Läs mer

Imperativ programmering. Föreläsning 2

Imperativ programmering. Föreläsning 2 Imperativ programmering 1DL126 3p Föreläsning 2 Imperativ programmering Kännetecken för imperativa språk: Programmet består av en serie instruktioner. Olika språk har olika uppsättningar av instruktioner.

Läs mer

DD1361 Programmeringsparadigm HT17

DD1361 Programmeringsparadigm HT17 DD1361 Programmeringsparadigm HT17 Logikprogrammering 1 Dilian Gurov, KTH Delkursinnehåll Logisk versus procedurell läsning Kontrollflöde: Unifiering, Backtracking, Snitt Induktiva datatyper och rekursion

Läs mer

Föreläsning 4: Kombinatorisk sökning

Föreläsning 4: Kombinatorisk sökning DD2458, Problemlösning och programmering under press Föreläsning 4: Kombinatorisk sökning Datum: 2009-09-25 Skribent(er): Kristina Nylander, Dennis Ekblom, Marcus Öman Föreläsare: Fredrik Niemelä 1 Introduktion

Läs mer

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? jonas.kvarnstrom@liu.se 2016 2014 jonas.kvarnstrom@liu.se

Läs mer

Föreläsning 4: Giriga algoritmer. Giriga algoritmer

Föreläsning 4: Giriga algoritmer. Giriga algoritmer Föreläsning 4: Giriga algoritmer Giriga algoritmer Denna typ av algoritmer arbetar efter följande princip: Gör i varje situation det som är lokalt optimalt, d.v.s. bäst för stunden. Några exempel vi redan

Läs mer

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? jonas.kvarnstrom@liu.se 2015 2014 jonas.kvarnstrom@liu.se

Läs mer

Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for

Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for Inför provet Provet skrivs för hand och är uppdelad i två delar. Den första delen är på E-nivå och den andra delen är på C- och A-nivå. För att det ska bli enklare för er att träna inför provet så har

Läs mer

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära

Läs mer

Lösningsförslag till tentamen

Lösningsförslag till tentamen till tentamen 1 (5) Kursnamn Algoritmer och datastrukturer Tentamensdatum Program DAI2+I2 Läsår 201/201, lp 4 Examinator Uno Holmer Uppgift 1 (10 p) Ingen lösning ges. Se kurslitteraturen. Uppgift 2 (

Läs mer

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000

Läs mer

Föreläsning 13 och 14: Binära träd

Föreläsning 13 och 14: Binära träd Föreläsning 13 och 14: Binära träd o Binärträd och allmänna träd o Rekursiva tankar för binärträd o Binära sökträd Binärträd och allmänna träd Stack och kö är två viktiga datastrukturer man kan bygga av

Läs mer

Övningshäfte 1: Logik och matematikens språk

Övningshäfte 1: Logik och matematikens språk GÖTEBORGS UNIVERSITET MATEMATIK 1, MMG200, HT2014 INLEDANDE ALGEBRA Övningshäfte 1: Logik och matematikens språk Övning A Målet är att genom att lösa och diskutera några inledande uppgifter få erfarenheter

Läs mer

Semantik och pragmatik

Semantik och pragmatik Semantik och pragmatik OH-serie 4 http://stp.lingfil.uu.se/~matsd/uv/uv12/semp/ Mats Dahllöf Institutionen för lingvistik och filologi Januari 2012 Om barnet har svårt att andas eller har ont i bröstet

Läs mer

Grundläggande logik och modellteori (5DV102)

Grundläggande logik och modellteori (5DV102) Tentamen 2013-10-31 Grundläggande logik och modellteori (5DV102) M. Berglund och K. Markström Totalt antal uppgifter 11 Maximalt antal poäng 30 Krav för 3 i betyg 14 poäng Krav för 4 i betyg 19 poäng,

Läs mer

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik för ingenjörer, VT06 2 Repetition Repetition -

Läs mer

TDDD78, TDDE30, 729A Typhierarkier del 2 Vad krävs? Hur fungerar det?

TDDD78, TDDE30, 729A Typhierarkier del 2 Vad krävs? Hur fungerar det? TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Typhierarkier del 2 Vad krävs? Hur fungerar det? Hur får en subtyp fungera egentligen? Krav på hierarkier 1 3 Får subtypen LinkedList sakna metoder från

Läs mer

Programmeringsteknik I

Programmeringsteknik I Programmeringsteknik I Föreläsning 2: Grundläggande Java Johan Öfverstedt Java Grundläggande begrepp Datatyper Selektion if Räckvidd (scope) Iteration while Klasser Objekt Metoder Metodhuvudet Kodstandarden

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Innehåll Datastrukturer och algoritmer Föreläsning 14 Objektorientering Abstrakta datatyper Generella teorier 469 470 Java och C++ Programmeringsspråken C++ och java bygger båda på C. Förutom de grundläggande

Läs mer

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning 8 Datastrukturer (DAT037) Föreläsning 8 Datastrukturer (DAT037) Fredrik Lindblad 1 22 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037

Läs mer

Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen

Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen Föreläsning 9 Innehåll Inlämningsuppgiften De föreläsningar som inlämningsuppgiften bygger på är nu klara. Det är alltså dags att börja arbeta med inlämningsuppgiften. Träd, speciellt binära träd egenskaper

Läs mer

SMD 134 Objektorienterad programmering

SMD 134 Objektorienterad programmering SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning

Läs mer

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion Introduktion till programmering D0009E Föreläsning 6: Iteration Multipel tilldelning Helt ok att tilldela en variabel flera gånger: bruce = bruce, bruce = 7 bruce Output: 7 Som tillståndsdiagram: bruce

Läs mer

Grundläggande Datalogi

Grundläggande Datalogi s delar Grundläggande Datalogi s delar s delar s delar Dataabstraktion Rekursion Algoritmanalys s delar Sortering Trädstrukturer Grafalgoritmer Optimering Stavning Strängmatchning Datakompression Versionshantering

Läs mer

Dagens föreläsning Programmering i Lisp Fö 7. Sammanfattning funktionell programmering Exempel på funktionella programspråk

Dagens föreläsning Programmering i Lisp Fö 7. Sammanfattning funktionell programmering Exempel på funktionella programspråk 1 Dagens föreläsning Programmering i Lisp Fö 7 Kopplingen funktionella programmering och diskret matematik. Jämför vad ni hittills gjort i denna kurs och i den diskreta matematiken, med referenser in i

Läs mer

MicroPython Ett textbaserad programmeringsspråk för Micro:bit

MicroPython Ett textbaserad programmeringsspråk för Micro:bit MicroPython Ett textbaserad programmeringsspråk för Micro:bit Introduktion till informationsteknologi 1DT051 2018-09-24 karl.marklund@it.uu.se Uppsala universitet Programming, problemlösning och algoritmer

Läs mer

729G74 IT och programmering, grundkurs. Tema 2. Föreläsning 3 Jody Foo,

729G74 IT och programmering, grundkurs. Tema 2. Föreläsning 3 Jody Foo, 729G74 IT och programmering, grundkurs Tema 2. Föreläsning 3 Jody Foo, jody.foo@liu.se Föreläsningsöversikt Information i grafstrukturer Diskret matematik Relationer: kopplingar mellan mängder Funktioner

Läs mer