Søking og kombinatorikk Oppgave 1 a) Datadrevet søking og måldrevet søking er navnet på to søkestrategier. Forklar hva hver av dem innebærer. Nevn 3 kriterier som bør vurderes når vi skal avgjøre hvilken strategi som er best. b) Vi skal nå se på en konkret problemstilling: Tenk deg at du nettopp har kjøpt deg hund. Selgeren påstår at hunden er av rasen Bolivian Cheatdog, men du er ikke helt overbevist om at det virkelig er denne rasen. På internett finner du ut at denne hunderasen ble innført til Norge i 1970, og at det første paret som ble registrert i Norsk Kennel Klub het Lady og Landstykeren. Du tar kontakt med Norsk Kennel Klub og får tilgang til arkivet med stamtavler for Bolivian Cheatdog. Hvis du finner ut at hunden er direkte nedstammet fra Lady og Landstykeren kan du være sikkert på at den er av riktig rase. (I motsatt fall må du fortsatt leve i uvisshet ) Videre får du vite at tisper av denne rasen vanligvis får 3 kull i løpet av sitt hundeliv og at hvert kull i gjennomsnitt er på 5 valper. Hvor i arkivet lønner det seg å begynne å lete? Bør du begynne med Lady og Landstrykeren og lete blant deres etterkommere for å se om du finner hunden din blant dem, eller bør du begynne med hunden din og sjekke foreldrene og deretter lete bakover blant forfedrene for å se om Lady og Landstrykeren er en av dem? Begrunn svaret, gjerne ved hjelp regnestykker og/eller figurer. Oppgave 2 7 4 3 2 5 6 1 8 8-pussel er et spill som de fleste av oss kjenner igjen fra barndommen. På et 3x3 brett er det plassert 8 brikker. En plass er ledig slik at brikkene kan skyves rundt på brettet. Målet er å få brikkene i en bestemt rekkefølge, for eksempel slik at tallene står i stigende rekkefølge slik: 1 2 3 8 4 7 6 5
a) Hvor mange forskjellige tilstander er det i spillet? Selv om det i den fysiske utgaven av spillet er brikkene som skyves rundt, skal vi her for enkelhets skyld tenke oss av det er den blanke som flyttes, det vil si bytter plass med en brikke ved siden av. Vi får da følgende 4 regler: Den blanke flyttes opp. Den blanke flyttes til høyre. Den blanke flyttes ned. Den blanke flyttes til venstre. Vi må imidlertid passe på at den blanke holder seg innefor brettet, hvilket betyr at ikke alle reglene kan brukes til enhver tid. Antall regler som kan anvendes avhenger altså av hvor på brettet den blanke befinner seg. b) Hvor mange etterfølgere har tilstanden hvis 1) den blanke står i midten? 2) den blanke står i et hjørne? 3) den blanke står midt på en sidekant? Hva blir den gjennomsnittlige forgreningsgraden? Hvordan kan den gjennomsnittlige forgreningsgraden reduseres uten at sjansene til å nå måltilstanden reduseres? c) Anta at vi har et har et tilstandsrom for 8-pussel representert som en graf. Skriv opp et regnestykke som gir oss et estimat over antall tilstander i grafen når dybden er 4 og forgreningsgraden er den du beregnet i punkt b? (Det holder at du skriver opp regnestykket, du trenger ikke å regne ut det eksakte antallet.) d) Vi har følgende starttilstand: 7 4 3 2 5 6 1 8 Tegn en tilstandsgraf med dybde 2. Merk tilstandene a, b, c, osv. Skriv opp rekkefølgen tilstandene blir generert i ved 1) Dybde først-algoritmen 2) Bredde først-algoritmen e) Ved implementasjon av en del søkealgoritmer brukes listene Open og Closed. Forklar hva som lagres i hver av listene. Hvordan er Open organisert når vi har en 1) Dybde først-algoritme 2) Bredde først-algoritme 3) Beste først-algoritme
f) Ved implementasjon av Beste først-algoritmen trenger vi en evalueringsfunksjon som kan avgjøre hvilken neste tilstand (etterfølger) som er best. Anta at du i 8-pussel skal bruke en evalueringsfunksjon på formen f(n) = g(n) + h(n) der n er en tilstand i grafen. Forklar hva g(n) og h(n) står for. g) Du skal nå foreslå 2 heuristiske funksjoner til 8-pussel som begge skal kunne inngå i evalueringsfunksjoner på formen f(n) = g(n) + h(n). Kall dem h1 og h2. De heuristiske funksjonene må være slik at h1(mål) = h2(mål) = 0. Anvend h1 og h2 på en av tilstandene i grafen du tegnet under punkt d. h) Gi et forslag til hvordan g(n) skal beregnes. i) Hvilken av de to heuristiske funksjonene du foreslo under punkt g er mest informativ? Hvilken konsekvens får det for algoritmene som anvender dem? Hvilken av dem vil undersøke flest tilstander? j) Forklar hva en A*-algoritme er. Hvilken egenskap har den og hvilke kriterier må være oppfylt for at en Beste først-algoritme også skal kunne kalles en A*-algoritme? Vil en algoritme som bruker evalueringsfunksjonen 1) f(n) = g(n) + h1(n) 2) f(n) = g(n) + h2(n) være en A*- algoritme? Begrunn svaret. Oppgave 3 Nedenfor finner du en søkealgoritme skrevet i pseudokode. Algoritmen bruker variabelen X for tilstanden som evalueres, og listene Open og Closed. { < Starttilstanden legges på Open > while ( < flere tilstander på Open > ) { X = < første tilstand på Open >; if (< X er lik måltilstanden > ) { < legg X til Closed > return true; } < generer etterfølgerne til X > for ( < hver etterfølger E til X >) { if ( < E hverken er på Open eller Closed > ) < legg E til bakerst på Open > ) } < legg X på Closed > } }
a) Hva heter algoritmen over? Hvilken datastruktur utgjør tilstandene på "Open"? Skriv opp rekkefølgen tilstandene i grafen nedenfor blir evaluert i etter denne algoritmen. b) Hvilken forandring av algoritmen må du gjøre hvis tilstandene skal evalueres i en annen rekkefølge? Hva heter algoritmen du da får? Hvilken datastruktur utgjør da tilstandene på "Open"? Skriv opp rekkefølgene tilstandene i grafen blir evaluert i etter denne algoritmen. c) Hvilke fordeler og ulemper har søkealgoritmene fra punktene a) og b)? d) Hva trenger vi hvis vi skal lage en "beste først"-algoritme? Hvordan er tilstandene på Open organisert i dette tilfelle? e) Hva må lagres sammen med hver tilstand for at løsningsstien skal kunne rekonstrueres etter at måltilstanden er nådd? f) Hvilke oppdateringer gjøres av "beste først"-algoritmen på Open? Closed? Når og hvorfor blir de foretatt?
Oppgave 4 Vi skal se på et spill for en person. Spillet har syv plasser og seks brikker, herav tre runde og tre trekantete. Når spillet starter står brikkene i denne posisjonen: Målet er nådd når og har byttet plass: Under spillets gang må man følge følgende spilleregler: 1: En brikke kan flyttes til en ledig plass ved siden av. Kostnad: 1. 2: En brikke kan flyttes til en ledig plass ved å hoppe over en annen brikke. Kostnad: 2 3: En brikke kan flyttes til en ledig plass ved å hoppe over to andre brikker. Kostnad: 3 a) Beregn antall forskjellige tilstander i tilstandsrommet.. Hint: Hvis vi hadde like mange forskjellige verdier som det er plasser på brettet, ville det vært greit å regne ut antall tilstander. Men antallet blir ikke så høyt fordi flere av verdiene (brikkene) er like. For å regne ut antall forskjellige tilstander kan du bruke følgende setning: Anta at vi har n forskjellige objekter av r forskjellige typer, der n 1 er antall identiske objekter av type 1, n 2 er antall identiske objekter av type 2,.., n r er antall identiske objekter at type r, slik at n = n 1 + n 2 + + n r Da kan disse objektene stilles opp etter hverandre på forskjellige måter. n! n 1! *n 2! * *n r! b) Beregn spillets forgreningsgrad. Vis utregningen som ligger til grunn for svaret. c) Hvilken søke-strategi (data-drevet eller mål-drevet) vil du velge? Begrunn svaret. d) Bestem en løsningssti. Hvilken kostad får du? e) Bestem to forskjellige heuristiske funskjoner som brukes til å avgjøre hvilket trekk man bør utføre. Du kan godt beskrive funksjonene med ord. Begge funksjonene må ha h(måltilstanden) = 0. Hvilken av de to er mest informativ og hvorfor?
f) Tegn opp en del den rettede grafen som representerer tilstandsrommet f.o.m. starttilstanden t.o.m nivå 2. (dvs. nivå 0, 1 og 2). På hver pil (arc) kan du angi hvilken regel du har brukt. Anvend deretter den mest informative heuristikken fra punkt e, og skriv inn de heuristiske verdiene i tilknytning til hver tilstand. Gi tilstandene navnene a, b, c,.osv. slik at det blir lettere å referere til dem hvis du får bruk for det i de neste punktene. g) Den enkleste algoritmen som bruker en evalueringsfunksjon er Hill Climbing - algoritmen. Forklar hvordan den virker generelt (dvs. uavhengig av vårt problem). Garanterer den å finne en løsning hvis en løsning eksisterer? Har den mulighet til å gå tilbake til tidligere tilstander? Er den effektiv? Vil denne algoritmen kunne løse spillet vårt? Begrunn svarene. h) Sammenlign Beste-først-algoritmen med Hill Climbing. Hva skiller dem fra hverandre? i) Bestem evalueringsfunksjonen f for spillet vårt slik at algoritmen som bruker den blir en A-algoritme. Skriv inn evalueringsverdiene i tilknytning til hver tilstand på løsningsstien du lagde under punkt d. j) Hva slags informasjon må lagres i tilknytning til hver tilstand foruten evalueringsverdien for at A-algoritmen skal fungere? Kreves det oppdatering av denne informasjonen under søkingen? Begrunn svaret. k) Er denne A-algoritmen også en A*-algoritme? Begrunn svaret. Oppgave 5 Tenk deg at du skal ut på skitur i Nordmarka. Turen starter på Voksenkollen og målet er å gå til Skjennungstua. For ikke å slite deg ut, ønsker du å finne den korteste veien dit. Nedenfor ser du et kart over området. Ved hvert eneste løypekryss (veiskille) er det oppgitt hvor langt det er til Skjennungstua i luftlinje, i tillegg til opplysninger om avstanden mellom løypekryssene.
Problemet kan løses ved å generere en søkegraf, der alle mulige veiskiller fra startpunktet til målet er tilstander, og deretter søke gjennom denne grafen. I denne oppgaven trenger du imidlertid ikke å tegne denne grafen. Problemstillingen er kun tenkt som et utgangspunkt for teorispørsmålene i de følgende deloppgavene. a) Nevn to systematiske søkealgoritmer som kan implementeres ved hjelp av listene Open og Closed, men som ikke utnytter kunnskap om problemet. For hver søkealgoritme skal du beskrive: Fordeler og ulemper ved søkealgoritmen Hvordan er tilstandene organisert på Open? Hva brukes Closed til? b) Bestem en heuristisk funksjon som vil være nyttig å bruke for å løse problemet. (Du kan gjerne formulere den med ord.) c) Forklare kort hvordan følgende søkestrategier virker, og forskjellen mellom dem.
Hill-Climbing Beste-først-algoritmen A-algoritmen A*-algoritmen Relater forklaringen til problemstillingen over. Hvilken algoritme vil du foreslå for å finne korteste vei fra Voksenkollen til Skjennungstua? Begrunn svaret. Hint: Bruk den heuristiske funksjonen du foreslo under punkt b), eventuelt kan du la den inngå som en del av evalueringsfunksjonen. d) Er noen av søkealgoritmene du nevnte under punkt a) en A*-algoritme? Begrunn svaret. Oppgave 6 Orienteringsløp Nedenfor ser du kartet over postene i et orienteringsløp. Løperne starter ved Start og skal så ta alle postene (besøke hver av dem en gang) før de tilslutt returnerer til Mål (som er samme sted som START). Den som greier dette på kortest mulig tid har vunnet løpet. Postene kan imidlertid tas i forskjellig rekkefølge og en av utfordringene ligger i å finne ut hvilken rekkefølge det lønner seg å ta dem i. Avstandene mellom postene er oppgitt i følgende tabell: START/MÅL og post 1: 500m START/MÅL og post 2: 300m START/MÅL og post 3: 200m START/MÅL og post 4: 350m post 1 og post 2: 700m
post 1 og post 3: 400m post 1 og post 4: 400m post 2 og post 3: 500m post 2 og post 4: 350m post 3 og post 4: 450m a) Tegn opp en figur som viser de forskjellige rekkefølgene postene kan tas i. Hvor mange forskjellige rekkefølger får du? Hvor mange rekkefølger får du generelt hvis antall poster er n? b) Foreslå en avskjæringsstrategi som finner den korteste distansen uten at alle distansene trengs å beregnes fullt ut. (Du trenger ikke regne ut hva den korteste distansen blir.) c) I dette orienteringsløpet var det bare 4 poster. Antallet er vanligvis høyere. Har vi for eksempel 12 poster i orienteringsløpet får vi nærmere 480 millioner forskjellige rekkefølger som postene kan tas i. Da skjønner vi fort at løperne ikke kan bruke tid på å regne ut hvilken vei som er kortest. Hvilken heuristikk (tommelfingerregel) vil da du foreslå at løperne bør bruke når de skal velge rekkefølgen postene skal tas i uten at de trenger å regne ut alle muligheter? Hva blir distansen hvis du anvender regelen på orienteringsløpet i denne oppgaven? Vil løperne generelt sett (dvs. også i alle andre løp) være garantert å finne den korteste distansen når de følger rådet ditt? d) I oppgave a beregnet du antall forskjellige rekkefølger. Foreslå en avskjæringsstrategi som halverer antall distanser som må beregnes.
Oppgave 7 Nedenfor finner du en plantegning over en etasje i et næringsbygg der det produseres eksplosiver. Av sikkerhetsmessige årsaker har firmaet kjøpt en robot som skal kunne ta seg inn i bygget i krisesituasjoner. Hvis det er fare for eksplosjon og det er for farlig for mennesker å oppholde seg der, vil roboten kunne gå inn og hente ut eller uskadeliggjøre materiell. I en slik situasjon er tiden avgjørende. Firmaet ønsker derfor at roboten skal programmeres slik at den finner korteste vei frem til målet for derved å spare kritiske sekunder. Du får nå i oppgave å være med å utvikle dette programmet. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 På figuren ser du en plantegning over næringsbygget. Hver rute har samme høyde og bredde. Korridorene er markert med grått og inngangen er ved. Vi tenker oss at det har oppstått en kritisk situasjon der bygningen må evakueres for mennesker. Bygningens sensorsystem har identifisert et farlig objekt i posisjon (10,13), her markert som. Det er nå ønskelig at dataprogrammet skal finne den raskeste veien roboten kan følge slik at den hurtigst mulig kan uskadeliggjøre objektet. (Vårt eksempel er svært enkelt slik at vi lett kan se den korteste veien, men vi kan forestille oss at dette vil være svært vanskelig å se ut fra en plantegning i et større bygg med komplisert arkitektur). a) Tegn opp grafen som viser alle mulige veier frem til målet gjennom korridorene i bygget. Merk gjerne tilstandene som a, b, c osv. slik at det blir lettere å referere til dem senere.
b) Søke-algortimer kan implementeres med listene Open og Closed. Hvordan er tilstandene organisert på Open når vi har 1) Bredde-først-søk? 2) Dybde-først-søk? 3) Beste-først-søk? c) Hva brukes listen Closed til? d) Du skal nå bruke Beste-først-algoritmen til å finne korteste veien fra inngangen til målet. Bestem derfor evalueringsfunksjonen f(n) gitt ved g(n) og h(n) slik at f(n) = g(n) + h(n). n angir tilstanden (ruten) vi er i, g(n) skal angi kostnaden fra inngangen til n, mens h(n) skal angi antatt kostnad fra n til målet. e) Vis hvordan du beregner evalueringsverdier for tilstandene, og skriv verdiene du beregner inn i grafen du har tegnet under punkt a). Du trenger ikke å beregne alle her. a) Du skal nå simulere søkingen ved lage en tabell med tre kolonner, en for tilstanden vi undersøker, en for tilstandene på Open og en for tilstandene på Closed, slik at vi til enhver tid kan se hvilke tilstander som befinner seg på de forskjellige listene ut fra tilstanden vi undersøker. I tilknytning til hver tilstand må du, i tillegg til evalueringsverdien, også lagre foreldretilstanden. Hver tilstand kan for eksempel lagres slik: (d, b, 17) der d er tilstanden, b er foreldretilstanden til d og 17 er evalueringsverdien til d. Foreldrenoden og evalueringsverdien må oppdateres hvis tilstanden nås via en kortere sti senere i søket. b) Bestem sekvensen av tilstander algoritmen returnerer i ditt tilfelle, og forklar hvorfor det er mulig å rekonstruere denne veien. Hva er g(målet) og h(målet)? c) Er Beste-først algoritmen en A*-algoritme i vårt tilfelle og hva innebærer i så fall det? Begrunn svaret.
Oppgave 8 Tenk deg at du har fått i oppdrag å programmere en søkealgoritme for en bilspillprodusent. I spillet kan man virituelt kjøre rundt i en storby, i dette tilfelle i Paris. Nå ønsker spillprodusenten å utvide spillet slik at når "sjåførene" oppgir adressene for startpunktet og et ønsket mål for en kjøretur vil spillet "guide" sjåføren den korteste veien gjennom Paris gater fra start til mål. Problemet kan løses ved å generere en søkegraf, der alle veikryss mellom startpunktet og målet er tilstander, og deretter systematisk søke gjennom denne grafen for å finne korteste vei. Det viser seg i midlertid fort at dette blir for omfattende da Paris er en stor by. For å løse problemet på en smartere måte kan du ta i bruk heuristikk. Alle kartdataene (koordinater for steder etc) er innlagt i spillet slik at din algoritme har tilgang til disse. a) Bestem en evalueringsfunksjon på formen f(n) = g(n) + h(n), der n er en tilstand
som, sammen med en "beste først-algoritme", kan bidra til å løse problemet. ( g(n) og h(n) kan formuleres med ord.) b) Hvilke kriterier må være oppfyllt for at algoritmen som anvender evalueringsfunksjonen skal kunne returnere den korteste reiseruten (hvis en slik finnes)? Hva heter denne algoritmen? Oppgave 9 I denne oppgaven skal vi se på det såkalte Dronning-problemet. Spørsmålet er om det er mulig å plassere 8 dronninger på et sjakkbrett slik at ingen kan slå hverandre? I denne oppgaven skal vi imidlertid redusere problemet til et 4x4 sjakkbrett med 4 dronninger. Dronningen kan slå alle brikker som står på samme horisontale, vertikale og diagonale linje/rad. De grå rutene i eksempelet under viser hvilke plasser som dronningen kan slå andre brikker på hvis den er plassert i det øvre venstre hjørnet. De hvite rutene kan den imidlertid ikke nå, og disse vil i denne sammenheng regnes som ledige. X Vi starter med starttilstanden som er et tomt brett Og plasserer så dronningene, en etter en, på de ledige plassene, dvs. på plasser der de ikke kan bli slått av dronninger som allerede befinner seg på brettet. a) Hvor mange etterfølgere har starttilstanden? Når vi skal analysere problemet er det ønskelig å beskjære tilstandsrommet, dvs redusere antall tilstander uten at det reduserer våre muligheter til å finne en løsning. Vis hvordan antall etterfølgere til starttilstanden kan reduseres til 3.
I hver av de 3 neste deloppgavene skal vi ta for oss hver av starttilstandens 3 etterfølgere og generere (dvs tegne opp) subgrafene. Dybden i grafene er begrenset av eventuelle måltilstander (dvs tilstander der alle 4 dronninger er plassert slik at ingen kan slå hverandre) eller av tilstander der det ikke er mulig å plassere flere dronninger på brettet og som følgelig ikke har noen etterfølgere. På hvert nivå i grafen bør du undersøke om det er mulig å beskjære grafen ytterligere, dvs redusere antall etterfølgere uten at mulighetene for å finne en løsning reduseres. Begrunn i så fall beskjæringen. Eventuelle måltilstander skal merkes mål. b) Tegn opp subgrafen under tilstanden X c) Tegn opp subgrafen under tilstanden X d) Tegn opp subgrafen under tilstanden X Hele grafen består nå av starttilstanden pluss de 3 subgrafene du har tegnet under punktene b, c og d. I de neste deloppgavene skal du betrakte grafen som helhet. e) Er grafen et tre? Begrunn svaret. f) Er løsningen på problemet en sti eller en tilstand?
(I denne forbindelse kan det være lurt å vurdere følgende problemstillinger: Har lengden på løsningsstien noen betydning? Har rekkefølgen av tilstandene på løsningsstien noen betydning? Begrunn svaret. g) Hvilken søkeretning, datadrevet eller måldrevet, er brukt her og hvorfor er den valgt? h) Hva blir grafens gjennomsnittlige forgreningsgrad når du tar hensyn til beskjæringer av tilstandsrommet du har foretatt? i) Foreslå en heuristisk evalueringsfunksjon som kan lede søket i en gunstig retning, og forklar hvordan den skal brukes. Hvilken verdi er best/dårligst? j) Vil vi kunne nå måltilstanden hvis vi bruker Hill-climbing -algoritmen sammen med den evalueringsfunksjonen du foreslo under punkt i). Begrunn svaret. k) Hvilken kjent algoritme vil du foreslå for å løse problemet når du tar i bruk evalueringsfunksjonen du foreslo under punkt i)? Begrunn svaret. Oppgave 10 Bonden, reven, gåsa og såkornet. Det var en gang en bonde som hadde vært i byen og kjøpt seg en sølvrev, en gås og en sekk med såkorn. På veien hjem måtte han krysse en elv. Elva var både dyp og stri, det var ingen bro der og hverken bonden eller dyra kunne svømme (gåsa kunne heller ikke fly). Til alt hell fant bonden en liten robåt, stor nok for han selv og i tillegg enten reven, gåsa eller kornsekken. For å få alle eiendelene over måtte han ro flere turer. Men problemet var at hvis bonden lot reven og gåsa være uten tilsyn ville reven spise opp gåsa, og lot han gåsa være uten tilsyn med såkornet, ville gåsa forsyne seg av det. Han måtte tenke seg om vel og lenge før han fant ut en måte å ro frem og tilbake over elva på slik at alt og alle kom hele over. a) Bondens problem kan vi representere ved å se på hva og/eller hvem som til enhver tid har kommet over elva. Til å begynne med har ingen kommet over på den andre siden, og når bondens mål er nådd, vil han og alle de nye eiendelene hans være der. (Du trenger altså ikke eksplisitt representere tilstanden når båten er på vannet.) Du kan gå ut ifra at båten aldri er overlastet. Sett opp hele tilstandsrommet. Hvor mange tilstander har vi til sammen? (Du bestemmer selv hvordan du vil representere de fire enhetene). b) En del tilstander i tilstandsrommet fra punkt a) er "ulovlige", i den forstand at det er tilstander vi må unngå å komme til hvis vi skal løse bondens problem.
Sett opp alle de "ulovlige" tilstandene. Hvor mange "lovlige" tilstander inneholder tilstandsrommet? c) En del av de "lovlige" tilstandene er relatert ved at en rotur kan bringe oss fra den ene tilstanden til den andre. Vi kan betrakte alle slike relasjoner mellom "lovlige" tilstander som regler, der tilstanden før roturen tilsvarer venstresiden i regelen, og tilstanden etter roturen tilsvarer høyresiden. Generer et søketre med dybde 5 (dvs. med 5 nivåer) Skriv deretter opp sekvensen av tilstander vil får ved søkestrategiene: i) bredde-først ii) dybde-først d) Beskriv fordelene og ulempene med de to søkestrategiene (bredde-først og dybde-først) i et generelt problem ut fra følgende kriterier: Garanterer strategien oss å finne en løsning (hvis det eksisterer en)? Risikerer vi å forville oss ned i en uendelig gren? Krever strategien mye minne (i forhold til den andre strategien)? Er det fare for kombinatorisk eksplosjon? Vil nærmeste løsning (der vi er innom færrest tilstander) finnes først? e) Foreslå en heuristisk funksjon som vil gjøre søkingen i bondens problem mer effektiv (du kan beskrive funksjonen med ord). For en av strategiene er denne funksjonen nødvendig å ha med, hvis ikke risikerer vi at vi ikke finner noen løsning. Hvilken strategi er det og hvorfor må vi ha med funksjonen? f) Ta utgangspunkt i søketreet du har generert under punkt c) og konverter det til en søkegraf. Skriv opp en generell algoritme, i pseudokode, for å konvertere et søketre til en søkegraf. g) Utvid søkegrafen slik at en eller flere måltilstander blir generert. Hvilken søkestrategi, bredde-først eller dybde-først, vil du anbefale i på bondens problem i tilfellene: i) med den heuristiske funksjonen fra punkt e) ii) uten den heuristiske funksjonen fra punkt e)
h) Forklar forskjellen på forover og bakover kjeding. Spiller det noen rolle hvilken retning vi velger i dette tilfellet, og i så fall, hvilken retning skal vi da velge? Oppgave 11 Nedenfor ser du et kart over et byområdet: T-bane Universitet stasjon Bibliotek Kirke Høgskole Sykehus Park Anta at du skal finne veien fra T-banestasjonen til universitetet. a) Tegn opp grafen som representerer tilstandsrommet når du tenker deg at du skal finne veien ved hjelp av søking. b) Skriv opp sekvensen av tilstander (steder) du får fra T-banestasjonen til universitetet når du velger søkestrategien 1) Dybde-Først 2) Bredde-Først
Hvilken strategi er mest effektiv i dette tilfelle? Vi har nå lagt det samme kartet inn i et rutenett. Hver rute har lengde og bredde lik 1. De forskjellige bygningene er representert ved hjelp av bokstaver, B for bibliotek, H for høgskole, U for universitet osv. Veiene mellom stedene er angitt ved prikker. T *** B U *** H K S P Du skal nå bruke Beste-Først-algoritmen til å finne korteste vei fra T-banestasjonen til universitetet. c) Bestem evalueringsfunksjonen f(n) gitt ved g(n) og h(n) slik at f(n) = g(n) + h(n) Noden n angir stedet du befinner deg, g(n) angir kostnaden fra start (T) til noden (stedet) n, og h skal være en heuristisk funksjon der h(n) angir antatt kostnad fra n til mål (U). Pass på at du får h(mål) = 0.