Heuristikker og grådig best-først-søk
Uniform-kostnad-søket fra kapittel 2 tar ut noder i rekkefølge etter stikostnaden . Det finner den billigste stien, men det er blindt: en node rett bak start i feil retning får like mye oppmerksomhet som en node på vei mot målet. Informert søk (informed search) bruker kunnskap om problemet i form av en heuristikk (heuristic function) , et anslag på kostnaden for den billigste stien fra til et mål. På et kart kan være luftlinjen til målet, i et puslespill antall brikker som står feil. Vanligvis krever vi to ting: , og i et mål.
Den enkleste bruken er grådig best-først-søk (greedy best-first search). Frontier er en prioritetskø ordnet på alene, så søket tar alltid ut noden som ser nærmest målet ut, og bryr seg ikke om hva det har kostet å komme dit. Ellers er det som uniform-kostnad-søk: barna genereres, nådd-mengden holder styr på tilstandene som er sett, og måltesten skjer når en node tas ut.
I turområdet under ligger utsiktspunktet C nær toppen G i luftlinje, så er lav der. Stien derfra går likevel i lange sløyfer opp den bratte lia.
Prøv: trykk Neste trinn til G tas ut og noter kostnaden, bytt så til UCS og sammenlign både kostnaden og antall ekspansjoner.
Peker heuristikken rett vei, er grådig søk svært raskt. Men er bare et anslag, og algoritmen har ingen mekanisme for å oppdage at veien den har valgt, har blitt dyr. Hvor robust er det? Som trelikt søk på en graf med sykler kan det gå i ring: to naboer som begge ser nærmere målet ut enn resten av frontier, kan ekspanderes annenhver gang for alltid. Som grafsøk på en endelig graf er det fullstendig, fordi nådd-mengden hindrer at samme tilstand ekspanderes på nytt uten grunn. Kostnadsoptimalt er det aldri garantert, uansett variant og uansett hvor god er.
RegneeksempelSpor grådig best-først-søk fra S til G, og sammenlign kostnaden med den billigste stien.Vis løsningSkjul løsning
Kanter (urettet, kostnad): S–A 4, S–B 3, A–C 2, A–G 7, B–C 2, C–G 3
Heuristikk h: S 6, A 2, B 5, C 3, G 0
Grafsøk, lik h avgjøres alfabetisk, måltest ved uttak.Steg 1. Frontier = {S(6)}. Ta ut S og generer A(2) og B(5).
Steg 2. Ta ut A, som har lavest . Generer C(3) og G(0).
Steg 3. Ta ut G. Måltesten lykkes, og ekspansjonsrekkefølgen er S, A, (G).
Steg 4. Følg foreldrepekerne: S → A → G med kostnad .
Steg 5. Den billigste stien er S → B → C → G med kostnad . Grådig søk brukte bare to ekspansjoner, men betalte 3 ekstra fordi trakk det inn på den lange kanten A–G.
Hvilket utsagn om grådig best-først-søk på en endelig graf med positive kantkostnader stemmer?
Kjør grådig best-først-søk som grafsøk fra S til G. Lik avgjøres alfabetisk, og måltesten skjer når en node tas ut av frontier. Skriv alle nodene i den rekkefølgen de tas ut av frontier, fra startnoden til og med målnoden (uten parentes), adskilt med komma.
Kanter (urettet, kostnad): S–A 2, S–B 3, A–C 4, B–D 2, C–E 3, D–E 2, E–G 5
Heuristikk h: S 7, A 5, B 5, C 3, D 4, E 2, G 0