INF oktober Stein Krogdahl. Kap 23.5: Trær og strategier for spill med to spillere

Like dokumenter
6. oktober Dagens program: Første time: Andre time, gjesteforelesning: Uavgjørbarhet. Stein Krogdahl. (Ikke pensum, egne foiler legges ut)

INF 3/ oktober : Avslutte Branch and Bound 23.6: Trær og strategier for spill med to spillere

UNIVERSITETET I OSLO

INF5110, onsdag 19. februar, Dagens tema: Parsering ovenfra-ned (top-down)

Kap. 4: Ovenfra-ned (top-down) parsering

INF5110 V2013 Stoff som i boka står i kap 4, men som er generelt stoff om grammatikker

Kap.4, del 2: Top Down Parsering Kap. 5, del 1: Bottom Up Parsing INF5110, 7/ Legger ut en oppgave til kap. 4 (se beskjed).

Kap. 4 del I Top Down Parsering INF5110 v2006. Stein Krogdahl Ifi, UiO

Eksamen i IN 110, 18. mai 1993 Side 2 Del 1 (15%) Vi skal se på prioritetskøer av heltall, der vi hele tiden er interessert i å få ut den minste verdi

INF5110 V2012 Kapittel 4: Parsering ovenfra-ned

Svarforslag til ukeoppgaver til INF 4130

INF 4130 Oppgavesett 3, 20/ m/løsningsforslag

Repetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)!

INF / Kap. 5, Del 2 Stein Krogdahl, Ifi, UiO

UNIVERSITETET I OSLO

INF Repetisjon: Hvordan bygge treet og analysere? 8. september Typisk situasjon. De problematiske syntaks-diagrammene

Algoritmer og teknikker for sjakkprogrammer - teori og praksis

INF2220: Forelesning 2

INF /2, 2015 Kap. 5, Del 2 Stein Krogdahl, Ifi, UiO

INF april, 2014 Stein Krogdahl Ifi, UiO. Svar på oppgaver til kap. 8

INF oktober Dagens tema: Uavgjørbarhet. Neste uke: NP-kompletthet

Kap.4 del I Top Down Parsering INF5110 v2005. Arne Maus Ifi, UiO

Matchinger i ikke-bipartite grafer

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

Kap. 5, del 1: Parsering nedenfra-opp (Bottom up parsing) INF5110. Stein Krogdahl Ifi, UiO

Hva legger vi i spillteori?

INF 4130 / / Dagens foiler hovedsakelig laget av Petter Kristiansen Foreleser Stein Krogdahl Obliger:

INF Noen oppgaver til kap. 8

Oppgaver til INF 5110, kapittel 4, med svarforslag Gjennomgått torsdag 14. febr Disse foilene er justert 15/2, kl. 11

KONTINUASJONSEKSAMEN

Uke 5 Disjunkte mengder

INF april, 2015 Stein Krogdahl Ifi, UiO. Svar på oppgaver til kap. 8. Ble lagt ut 24. april

INF1010 Rekursive metoder, binære søketrær. Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre

UNIVERSITETET I OSLO

Anatomien til en kompilator - I

Disjunkte mengder ADT

UNIVERSITETET I OSLO

Kap. 5, del 1: Parsering nedenfra-opp (Bottom-up parsering) INF / Stein Krogdahl Ifi, UiO

Kap.4 del 2 Top Down Parsering INF5110 v2005. Arne Maus Ifi, UiO

UNIVERSITETET I OSLO

Forelesning 33. Repetisjon. Dag Normann mai Innledning. Kapittel 11

INF Noen oppgaver til kap. 8

INF2220: Forelesning 7. Kombinatorisk søking

Kap. 5, Del 2: INF / (og 2/3 og 3/3)

MAT1030 Diskret matematikk

Kap. 5, Del 2: SLR(1), LR(1)- og LALR(1)-grammatikker INF /2-2011

Innledning. MAT1030 Diskret matematikk. Kapittel 11. Kapittel 11. Forelesning 33: Repetisjon

Binære søketrær. En ordnet datastruktur med raske oppslag. Sigmund Hansen

Dynamisk programmering Undervises av Stein Krogdahl

Løsnings forslag i java In115, Våren 1998

Dagens stoff er hentet fra kapittel 9 i læreboka, samt kapittel 20.5 (som vi «hoppet over» sist)

UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet

Anatomien til en kompilator - I

Stoff som i boka står i kap 4, men som er. 10. Februar Ifi, UiO

Oppgave 1 LØSNINGSFORSLAG. Eksamen i INF desember Betrakt følgende vektede, urettede graf:

INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær:

Binære trær: Noen algoritmer og anvendelser

MAT1030 Forelesning 25

Obligatorisk oppgave 1 INF1020 h2005

INF2810: Funksjonell Programmering. Lokale variabler. Og trær.

Forelesning 25. MAT1030 Diskret Matematikk. Litt repetisjon. Litt repetisjon. Forelesning 25: Trær. Dag Normann

IN2010: Forelesning 11. Kombinatorisk søking Beregnbarhet og kompleksitet

MAT1030 Diskret Matematikk

INF oktober Stein Krogdahl. Altså: Hva kan ikke gjøres raskt (med mindre P = NP)

INF2810: Funksjonell Programmering. Lokale variabler. Og trær.

Repetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Kap. 5, Del 3: INF5110, fra 1/3-2011

KONTINUASJONSEKSAMEN I FAG ALGORITMER OG DATASTRUKTURER

Notat for oblig 2, INF3/4130 h07

Et eksempel: Åtterspillet

Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Kap 6.3: Symboltabellen Foiler ved Birger Møller-Pedersen Forelest av Stein Krogdahl 17. mars Dagens tema:

UNIVERSITETET I OSLO

INF1010 Binære søketrær ++

Longest increasing. subsequence Betingelser. Longest. common subsequence. Knapsack Grådig vs. DP Moro: 2D-Nim Spørsmål. Forside. Repetisjon.

Oppgaver til INF 5110, kapittel 4, med svarforslag Gjennomgås tirsdag 21. febr. 2012

1-b. integer array frd; begin. integer x; for x:= 1step 1 until N do. end; 1-c

Heuristiske søkemetoder III

INF Algoritmer og datastrukturer

INF5110 Kap. 5: Parsering nedenfra-og-opp (Bottom-up parsing) 21/ Stein Krogdahl Ifi, UiO. Angående Oblig 1:

Stoff som i boka står i kap 4, men som er

INF2220: Forelesning 2. Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7)

INF2220: Forelesning 2

Dynamisk programmering

INF2810: Funksjonell Programmering. Dataabstraksjon og Trerekursjon

LO118D Forelesning 12 (DM)

Dagens plan: INF Algoritmer og datastrukturer. Eksempel. Binære Relasjoner

INF 4130 Svarforslag til «Midterm», 01/

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering

Søk i tilstandsrom. Backtracking (Kap. 10) Branch-and-bound (Kap. 10) Iterativ fordypning. Dijkstras korteste sti-algoritme A*-søk (Kap.

Dagens plan: INF Algoritmer og datastrukturer. Repetisjon: Binære søketrær. Repetisjon: Binære søketrær

Statisk semantisk analyse - Kap. 6 Foiler ved Birger Møller-Pedersen (Forelest 10/3 og 12/ av Stein Krogdahl)

INF2810: Funksjonell Programmering. Kommentarer til prøveeksamen

Mattespill Nybegynner Python PDF

INF Algoritmer og datastrukturer

Statisk semantisk analyse - Kap. 6

INF2220: Time 4 - Heap, Huffmann

INF Algoritmer og datastrukturer

"behrozm" Oppsummering - programskisse for traversering av en graf (dybde først) Forelesning i INF februar 2009

Transkript:

INF 4130 1. oktober 2009 Stein Krogdahl Dagens program: Første time: Kap 23.5: Trær og strategier for spill med to spillere Andre time, gjesteforelesning: Rune Djurhuus: Om sjakkspillende programmer (Ikke pensum, egne foiler legges ut) Neste uke: Uavgjørbarhet 1

Kapittel 23.5: Spill, spilltrær og strategier Vi kunne lage et tre av avgjørelser for f.eks. 15-spillet eller leting etter en beste rundtur for en travelling salesman, og prøve å finne veien til en løsningsnode eller en beste vei. Men da er det bare én spiller, og man er ute etter en nøytral løsning Om det er to spillere som spiller mot hverandre blir saken annerledes. Det den ene ser som en bra situasjon ser den andre som dårlig. Trærne av mulige spill blir ofte kjempestore. For sjakk estimert til 10 100 noder. Men selv for et enkelt spill som tick-tack-toe kan ved rett fram utlegging for 9! = 362 880 noder. Starten av et tre for tic-tac-toe blir slik: Spilleren som starter er A Vi skal også gjøre alle vurderinger ut fra A synspunkt (inntil videre)

Treet blir fort stort 1 node 9 noder 9 noder 9*8 = 72 noder 9*8*7 = 504 noder 9*8*7*6 = 3024 noder 72 forskjellige noder 252 forskjellige noder 756 forskjellige noder 9*8*7*6*5 = 15120 noder 1260 forskjellige noder 9*8*7*6*5*4*3*2*1 = 362 880 noder 126 forskjellige noder (Ikke tatt bort symmetrier) Altså, man kan i noen spill tjene masse på å kjenne igjen like noder, og ikke gjøre undersøkelsen om igjen (minner litt om dynamisk programmering). Men dette krever som regel MYE PLASS!

Ta bort symmetrier etc. Man kan også spare mye på symmetri-betrakninger: Ta bare med de barna som er essensielt forskjellige Altså her, slå sammen løsninger som er symmetriske av hverandre Kan også legges inn letingen etter samme situasjon, på forrige foil. Reduserer lager plassen betraketlig i noen spill

Fystikk-spillet Nim Vi ser bare på null-sum-spill. Altså, når den ene spilleren vinner noe så taper den andre tilsvarende. Enkleste variant: Det er to utfall, A vinner (+1) og B taper (-1), eller omvendt En del spill har også uavgjort, for eksempel tic-tac-toe. Gies verdien 0. Spillet Nim: Start med to bunker med fyrstikker. Antall: m og n En spiller kan ta så mange man vil fra én bunke Den som tar siste fyrstikken har tapt. Her blir det aldri uavgjort Om vi starter med m=3 og n=2 er hele spilltreet tegnet ut her: Verdi for A satt på hver slutt-node

Hvordan finne strategi for å vinne, sett fra A? Vi angir hele tiden verdien av en node sett fra A A vil gjøre optimale trekk sett fra seg: Vil velge å gå til node med størst verdi A må regne med at B gjør optimale trekk sett fra seg. Siden verdiene noteres sett fra A, vil da B trekke til den minste subnoden For åfåvite verdien av en node må vi derfor vite verdiene i alle subnodene Dette kan vi gjøre ved dybde først gjennomgang, og å beregne verdiene postfiks (på tilbakevei).

Oftest kan man ikke gå gjennom hele spilltreet Man må da f.eks. gå til en viss dybde, og her komme med et estimat (ut fra en gitt heuristikkfunksjon) for hvor god situasjonen er (sett fra A). I figuren over går vi til dybde 3 (eller 2, avhengig av hvordan man definerer dybde) Heuristikk her: Antall vinnende linjer for A minus det tilsvarende for B. A vil derfor her trekke til C 2, som ser bra ut Men denne heuristikken er ikke lur når vi har gjort noen trekk. Tar ikke hensyn til at å vinne er bedre enn alle heuristikker. Gir derfor vinst-node verdi + = 9 Da får vi en god strategi for A, et stykke på vei. For: Om begge spiller perfekt, så blir det uavgjort i tic-tac-toe. F.eks. må slutt-situasjonen til høyre (uten vinner, uavgjort) få verdien 0: NB: Vanskelig avveiing mellom dybde og tidkrevende heuristikk! x x o o o x x x o

Alfa-beta-avskjæring Ved siden av å forsøke å redusere treet ved å se på symmetrier og/eller kjenne igjen noder som allerede er analysert, kan man gjøre alfa-beta-avskjæring Dette er som følger: Jeg, A, vurderer trekk ett og ett trekk fra en gitt A-situasjon (øverst) Jeg har allerede sett så gode trekk at jeg kan oppnå verdien u (av C 1 og C 2, u = 1) Jeg ser så på neste potensielle trekk som fører til situasjonen C 3, og ser at B herfra kan gjøre et trekk som fører til en god situasjon for B (men dårlig for A), og som sett fra A har verdien v = -1. Da kan ikke verdien i C 3 bli større en v (husk at B minimaliserer!) Om da v < u så gidder ikke A gå videre å studere om B skulle ha et enda bedre trekk. Det kan ikke gjøre A mer lysten på trekket til C 3. C 2 er helt sikkert bedre. Skulle egentlig blitt -2, men -1 er likeverdig for dette søket

Eksempler på alfa-beta-avskjæring Avskjæring som gjøres ut fra A s betrakning kalles alfa-avskjæring Samme betrakning som gjøres fra B- tilstander, men med mimimalisering. Disse kalles beta-avskjæring Ved siden av ser vi eksempler på både alfa- og beta-avskjæring Når vi skal implementere alfa-betaavskjæring kan det være greit å skifte synspunkt for hvert nivå. Da skal det alltid maksimaliseres Men man må skifte tegn på verdiene når man skifter nivå. En slik implementasjon står på neste foil

Alfa-beta-søk real function ABNodeValue( X, // Noden vi vil ha alfa/beta-verdien for. Barn: C[1], C[2],, C[k] numlev, // Antall nivåer som står igjen parentval) // Alfa/beta-verdien fra forelder-noden (-LB fra foreldren) // returverdi: Den endelige alfa/beta-verdien for noden X { real LB; // Løpende LowerBound for alfa/beta-verdi for denne noden if <X er terminal-situasjon> then {return <verdien av denne sett fra X>;} else if numlev = 0 then {return <estimat av kvaliteten av denne, sett fra X>;} else { LB := - ABNodeValue(C[1], NumLev-1, ); for i := 2 to k do { if LB >= parentvalue then {return LB;} else { LB := max(lb, -ABNodeVal(C[i], Numlev-1, -LB) ); } } } return LB; } Startkall: situasjonskvalitet := ABNodeValue(rotnoden, 10, - )

Trykkfeil i algoritmen Det er noen enkle trykkfeil i programmet på side 741 i boka (ikke rettet i ny utgave): AB manglet i navnet på prosedyren, der den blir kalt rekursivt Det mangler en sluttparentes på enden av linja der max kalles De er rettet i skissen på forrige foil