Representatie & Zoeken

Slides:



Advertisements
Verwante presentaties
Voorraadwaardering Technische en economische voorraad FIFO methode
Advertisements

SAMENVATTING WORKSHOP: ”DE KANSEN VAN FOCUS OP VAKMANSCHAP” Workshop op Themadag FD ROC van Twente Almelo, 15 november 2013.
Laurens van der Maaten IKAT / ROB
Boss RC-50 Guide Beats laten horen Beats aanpassen Instructie voor leerlingen Guide is één van de mogelijkheden met de Boss RC-50.
Ik leer lezen rekenen klokkijken blindtypen hwv-software.nl.
zoeken met opponent-modellen
De psychologie van communicatie
1 Hashtabellen Datastructuren. 2 Dit onderwerp Direct-access-tabellen Hashtabellen –Oplossen van botsingen met “ketens” (chaining) –Analyse –Oplossen.
Datastructuren Analyse van Algoritmen en O
Advanced Algorithms Groep: EII7AAb
Oppervlakten berekenen
Motion Planning in Games Pathfinding with A * Ronald Treur.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
1 Datastructuren Zoekbomen II Invoegen en weglaten.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen (II) College 6.
Een workshop over katten, muizen en nadenken in de Informatica
vwo B Samenvatting Hoofdstuk 2
Oplossen van een doolhof
IJspakketten Annette Ficker Tim Oosterwijk
IJspakketten Annette Ficker Tim Oosterwijk
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 5 Cees Witteveen.
AI21  Deel I: Terminologie Voorbeelden Zoekrichting (forward, backward)  Deel II: Zoekmethoden depth-first breadth-first iterative-deepening eigenschappen.
Meten bij marktonderzoek
Meten bij marktonderzoek
Hoofdstuk 1 Basisvaardigheden.
Inleiding Kennistechnologie §Hoofdstuk 7: Kennisrepresentaties 1: Eigenschappen en representatievormen §Hoofdstuk 8: Kennisrepresentaties 2: Eenvoud en.
Motion planning with complete knowledge using a colored SOM Jules Vleugels, Joost N. Kok, & Mark Overmars Presentatie: Richard Jacobs.
1 Datastructuren Skiplists. 2 Skiplists  Vrij eenvoudige datastructuur  “Makkelijker” dan gebalanceerde bomen  Kunnen hetzelfde als gebalanceerde bomen.
Lokale zoekmethoden Goed in de praktijk:
De schaal Hoe bereken je die?.
ProblemenRedeneren met verstekwaarden Gesloten wereld CircumscriptieLogica met verstekwaarden Autoepistemis che logica Redeneren over kennis: herbekeken.
Je wilt een 3 cm hoge dia, scherp en volledig, op een 4,5 m
Ruimtevaartquiz De Maan De.
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 3.
1 Datastructuren Een informele inleiding tot Skiplists Onderwerp 13.
Sorteeralgoritmen. Sorteren: aanpak 1 Hoe ga je een rij getallen sorteren met PC? Sorteren door selectie (= selection sort): Zoek de kleinste waarde Sorteer.
Oplossingsmethoden: implementatie
Letterrekenen K. van Dorssen.
Coachen Maandag 14 juni 2006.
Hoofdstuk 9 havo KWADRATEN EN LETTERS
MET DANK AAN COLLEGA’S IN DEN LANDE ! vee 2012
De omtrek van een cirkel
Reactievergelijkingen kloppend maken 2
Game Concept Samenvatting hoofdstuk 19. Vijf manieren die designers gebruiken om hun game spaces te organiseren. Lineair (bv: monopoly, super mario bros)
Gaat een soa altijd vanzelf over?
Deze presentatie is geladen zonder de Shakespeak Add-In.
Representatie & Zoeken
Neurale Netwerken Genetische Algorithmen
AI101  Historisch Perspectief Weak Methods Logic Theorist General Problem Solver  Resolution Theorem Proving Leeswijzer: Hoofdstuk 13.0, 13.1, 13.2 AI.
AI111  Algemeen  Voorbeeld  Concept Learning (Version Space)  Bias Leeswijzer: Hoofdstuk AI Kaleidoscoop College 11: Machinaal.
Onze school, Albeda colege Schiedam Nieuwland.
Coordinaten: Tom Tourwé 10F729 Tel: 3492 Organisatie van de oefeningen: * 1 uur bespreking van oplossing vorige les + bespreking opgave.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 6 Cees Witteveen.
Allard Kamphuisen Hado van Hasselt Wilco Broeders
Hoofdstuk 5 Vijfkaart hoog, eerste verkenning 1e9 NdF-h1 NdF-h5 1 1.
HOE WORD JE EEN WINNING TEAM?
Docentinstructie: Het is aan te bevelen de eerste dia’s klassikaal te tonen en met uitleg te bespreken. Als na zes dia’s een korte demo van Celsius/Fahrenheit.
Grafentheorie Graaf Verzameling knopen al dan niet verbonden door takken, bijv:
Recursie…. De Mandelbrot Fractal De werking… De verzameling natuurlijke getallen… 0 ∞-∞
SEO Kateryna Glushak en Saartje Van Broeckhoven. Wat?  Search Engine Optimization  Zoekmachineoptimalisatie  Techniek om website hoger te laten scoren.
Minimum Opspannende Bomen Algoritmiek. 2 Inhoud Het minimum opspannende bomen probleem Een principe om een minimum opspannende boom te laten groeien Twee.
Doorzoeken van grafen Algoritmiek. Algoritmiek: Divide & Conquer2 Vandaag Methoden om door grafen te wandelen –Depth First Search –Breadth First Search.
Heuristieken en benaderingsalgoritmen Algoritmiek.
Meten en meetkunde in het verkeer
Doorzoeken van grafen Algoritmiek.
Datastructuren voor graafrepresentatie
Hartelijk welkom, we starten om 14u
Yammer.
4 HAVO wiskunde A hoofdstuk 4 n.a.v. de proef
Doolhof. doolhof doolhof Maak een routine die de ‘hekken’ tussen de cellen weghaalt Maak een 2-dimensionale array met kolommen en rijen aangeklikt.
Transcript van de presentatie:

Representatie & Zoeken College 3: Zoeken met heuristieken Wat zijn heuristieken Zoekalgorithmen die heuristieken gebruiken Eigenschappen van die zoekalgorithmen Leeswijzer: Hoofdstuk 4.0 t/m 4.3 (niet 4.1.2) AI3 1 1 1 1 1 1 1

DUS Vorige keer Bomen doorzoeken breadth first depth first iterative deepening Zonder veel kennis over de aard van de boom Echter: de bomen zijn te groot: Schaken: 4 zetten = 2¼ billioen borden 1000´ sneller = 1 zet dieper 1.000.000´ sneller = 2 zetten dieper DUS Exploiteer domein-kennis voor het doorzoeken van de bomen Eerste bullet: de methoden van vorige week trekken zich weinig aan van de *inhoud* van de boom en de knopen, ze doorzoeken “blind” de boom via een “vaste” methode (depth, breadth), etc. Echter, bomen zijn heel groot, veel te groot om helemaal te doorzoeken, Om een idee te krijgen van hoe groot bomen zijn: bij schaken is de branching factor 35, 4 zetten = 35^8 = 2.25 billioen Bij elke extra zet groeit de boom een factor 35^2 (wit+zwart) = een factor 1000 dus bij twee zetten groeit ie een factor 1000x1000 Onze computers worden wel sneller, mar niet zoveel sneller er moeten dus manieren gevonden worden om gerichter te gaan zoeken. AI3

Heuristieken = vuistregels Complete kennis is vaak: niet beschikbaar te duur om te berekenen Gebruik gedeeltelijke kennis (= schattingen, heuristieken) Heuristieken maken soms fouten Heuristisch zoeken Twee onderdelen: Heuristische functie h geeft de “veelbelovendheid” per knoop Algorithme gebruikt h om door de zoekruimte te lopen definitie van heuristiek. voorbeeld van niet beschikbaar: schaken (niemand kan perfect schaken) voorbeeld van te duur: diagnose van een ingewikkelde fabriek (we hebben de fabriek zelf gebouwd, dus in principe perfecte kennis, maar zou te lang duren om er mee te rekenen, niet op tijd te achterhalen wat er mis is) functie h definieert de “veelbelovendheid” van een knoop als getal (= sterke vereenvoudiging). Denk aan schaken: is een bord 1 beter dan bord 2? Op sommige aspecten wel (bijv. positie), op andere niet (bijv. stukken). Kortom: een 1-dimensionale heuristische functie is nogal simplistisch. AI3

Heuristische functie (Voorbeelden) aantal stenen op een foute plek som van afstanden tot de juiste plekken (Manhattan) 2x aantal directe verwisselingen LET OP: gewenste eindtoestand is 1-8 met de klok mee vanaf linksboven. Def. van 3e heuristiek: hoeveel paren komen op hun plek door een direct verwisseling En natuurlijk kan h(..) niet de optimale waarde leveren (immers, daarvoor zou je de hele zoekruimte moeten kennen, en dan is er verder weinig te zoeken)… Zou willen: h(...) = kortste afstand tot oplossing MAAR JA..... AI3

Algorithme: Hill-climbing = Kies altijd beste richting (lokale beslissing) en vergeet de rest 2 8 3 1 6 4 7 5 leg uit waar de naam hill-climbing vandaan komt: je staat in een berglandschap, het is overal mist (je kunt maar 2m om je heen kijken), je wilt naar de top, het beste wat je kunt doen is steeds lokaal kijken waar de berg het stijlst omhoog gaat, en dan in die richting een stukje lopen, waarna je weer hetzelfde doet. Het is dus zoeken met alleen maar lokale informatie. Alle andere opties gooi je daarna direct weg (vergeet je). Dat is natuurlijk prettig want hoef je niks te onthouden, maar leidt ook tot nadelen (zie volgende slide). Merk ook op hoe snel de boom kleiner wordt. In het voordeel (met branching factor 3) verdwijnt bij elke stap 2/3 van de overgebleven ruimte uit zicht. Na 3 stappen heb je dan nog maar 1/27ste over, etc. AI3

Hill-climbing: nadeel Kan verdwaald raken in oneindige takken 3 2 1 100 ... dit is een boom waar de oplossing rechts zit, en links een slechte tak is. de heuristische functie geeft dit heel goed weer, en maakt maar op 1 plek een vergissing (de 1e tak rechts) Echter, hill-climbing is zo “onveilig” dat die ene vergissing dodelijk is, en hij nooit meer uit de oneindige tak komt. AI3

Hill-climbing: nadeel Kan terecht komen in lokaal minimum 5 4 3 6 1 2 A tweede nadeel van hill climbing is dat ie in lokale minima kan komen (dit is ook goed te illustreren met het berg-verhaal: je komt op een subtop uit naast de echt hoogste top, maar eenmaal op die subtop zijn alle mogelijkheden slechter dan waar je zit) AI3

Algorithme: best-first Kies beste van alle open knopen: Volgorde: ACHOPWX = open knoop X A 5 4 3 6 1 2 B C D E F G H O P W De remedie om hill-climbing robuuster te maken is om niet langer meer de niet-gekozen mogelijkheden gelijk te vergeten, maar om ze te onthouden voor later gebruik. Wat “best-first” doet is niet alleen lokaal de beste mogelijkheid kiezen (en alle 1-na-beste mogelijkheden vergeten), maar best-first onthoud alle suboptimale mogelijkheden van het verleden, en vergelijkt dan de mogelijkheden uit vanuit de huidige plek met alle nog-niet-gekozen mogelijkheden uit het verleden, en kiest daar dan de *globaal* beste mogelijkheid uit. De lijst van “alle nog niet gekozen mogelijkheden uit het verleden + de mogelijkheden vanuit de huidige positie” heet de “open lijst”. Een andere manier om best-first uit te leggen: kies uit de open lijst de best-scorende kandidaat, vervang die kandidaat door al zijn kinderen, dat levert een nieuwe open lijst, herhaal. Het voorbeeld illustreert hoe best-first hersteld van het lokale minimum waar hill-climbing in gevangen bleef. AI3

Best-first: nadeel Kan verdwaald raken in oneindige takken 4 3 1 ... ... Maar ook best-first is niet perfect: het is weliswaar bestand tegen lokale minima, maar niet tegen oneindige takken. Ik noem deze boom altijd de “student met opdracht” boom. De student zegt steeds dat ie het morgen afheeft (afstand =1). Maar morgen zegt ie weer precies hetzelfde. Hill-climbing zou hier natuurlijk in trappen maar ook best-first trapt hier nog in, en raakt verstrikt in de oneindige tak. Merk wel op dat om best-first te foppen de heuristiek heel veel slechter moet zijn dan om hill-climbing te foppen: bij hill-climbing was het genoeg om op 1 plek een verkeerde score te hebben, terwijl hier moet de heuristiek op een oneindig aantal plekken een foute waarde moet geven. AI3

Algorithme: “A” Compenseer voor diep gelegen knopen Heuristische functie: h(n) = schatting voor afstand tot doel Reeds afgelegde afstand: g(n) Totaal: f(n) = g(n) + h(n) Algorithme “A” = best-first search met f(n) Om nu ook nog de problemen met best-first op te lossen gaan we compenseren voor de diepte. (in termen van het “student”-verhaal: elke keer als ie met dezelfde belofte terugkomt gaan we ‘m een klein beetje minder geloven). In termen van de boom: de waarde van elke knoop is (natuurlijk) de heuristische waarde + strafpunten voor hoe diep de knoop zelf al ligt. Nog anders gezegd: bij best-first kiezen we een knoop op de geschatte lengte van knoop tot doel, bij A kiezen we een knoop op de geschatte lengte van het hele pad van start tot doel (waarbij we het stuk van start tot huidig precies weten (dat hebben we nl. al afgelegd), en hoeven we dus niet te schatten, en we voor het stuk van huidige knoop tot doel de h-schatting gebruiken. Feitelijk is A hetzelfde algorithme als best-first (open lijst, gekozen knoop vervangen door zijn opvolgers, herhaal), maar alleen de heuristische functie veranderd. Die is niet langer meer h, maar h+diepte = h+g. AI3

Algorithme “A”: voordeel Kan niet verdwaald raken in oneindige takken 4 3 1 ... +0=4 +1=2 +2=3 +3=4 +4=5 +1=4 Dit illustreert dat inderdaad, de boom waar best-first nog in verstrikt raakte, daar kan A nu tegen, omdat er op een gegeven moment voldoende “compensatie” is voor de alsmaar dieper liggen te optimistische schattingen. Het zal later blijken dat (onder bepaalde voorwaarden) dit *altijd* zo is. AI3

Algorithme “A”: negatief Nog steeds gevoelig voor de kwaliteit van de heuristische kennis 1 ... 1000 +1=2 +2=3 +3=4 +0=1 +1=1001 A vindt weliswaar altijd de oplossing (want kan tegen locale minima en tegen oneindige takken), maar kan het soms nog wel steeds heel inefficient doen. Zoals hier. Deze heuristiek heeft het zo’n beetje maximaal verkeerd: overal waar de oplossing niet ligt zegt ie dat ie vlakbij is, en waar ie wel ligt zegt ie dat ie ver weg is. Het algorithme A zal alle linker-takken tot op diepte 1000 doorzoeken (= 2^1000 knopen! = ongeveer 10^300 !!!), maar uiteindelijk zal ie wel een keer de goede keuze maken. Het is natuurlijk onvermijdelijk dat het algorithme net zo goed (of: slecht) is als de heuristiek die je het geeft. Onvermijdelijk AI3

A* = A + 0 £ h(n) £ h*(n) Algorithme: A* Algorithme A: Stel: h*(n) = echte nog af te leggen afstand A* = A + 0 £ h(n) £ h*(n) Laatse variatie: het algorithme A* is precies hetzelfde als A, maar met de extra eis dat de heuristiek h een *onderschatting* is van de echte nog af te leggen afstand. Let op: natuurlijk weten we h* niet, maar soms kunnen we toch afleiden dat een bepaalde functie h < h*. Zie vb. volgende slide. dwz: h(n) is een onderschatting van de nog af te leggen afstand AI3

A*: Voorbeelden van h(n) 2 8 3 1 6 4 7 5 0 £ h(n) £ h*(n) h(n) = aantal stenen op foute plek h(n) = som van afstanden tot foute plekken h(n) = 2´ aantal directe verwisselingen ook al kennen we h* niet, we kunnen beredeneren dat de eerste h < h* (waarom? ) ook voor de tweede h < h* (waarom?) voor de derde h is het onduidelijk. Voor de eerste en de tweede h mogen we A dus A* noemen AI3

Eigenschappen: Admissible optimale oplossing wordt altijd als eerste gevonden Breadth-first: + Depth-first: - It.-deepening: + Hill-climbing: - Best first - A: - A*: + beam: - Waarom is dat nou belangrijk: A* is admissible (= beste oplossing als eerste gegarandeerd gevonden). Het hele overzicht van alle methoden voor wat betreft admissible staat hier opgesomd. AI3

Eigenschappen: monotoon (1) h(ni) - h(nj) £ cost(ni , nj) (2) h(goal) = 0 Vb: Manhattan Voordeel: monotoon ® admissible M.a.w: I.h.a “A” niet admissible maar als h monotoon dan “A” wel admissible Wat mij betreft mag je deze en de volgende slide overslaan AI3

Waarom heet dat “monotoon”? g(ni) ¯ nj ..... ni g(nj) cost(ni nj) f(nj) = g(nj) + h(nj) = g(ni) + cost(ni , nj) + h(nj) ³ g(ni) + h(ni) - h(nj) + h(nj) = g(ni) + h(ni) = f(ni) AI3

Kwaliteit van heuristieken perfecte heuristiek: h(n) = h*(n) triviale heuristiek: h(n) = 0 (A* + triviale heuristiek = ??) tot slot nog wat theoretische begrippen: een heuristiek is perfect als ie overal hetzelfde zegt als h* (in het algemeen is dat dus niet haalbaar) een heuristiek is triviaal als ie overal hetzelfde zegt (bijv. 0, of een ander getal) A* + triviale heuristiek = breadth first (laat ze daar eerst maar over nadenken) (dat was overigens een tentamen vraag) AI3

Eigenschap van heuristiek: geïnformeerdheid Twee heuristieken, h1(n) en h2(n), met Dan is h2(n) beter geïnformeerdheid Voordeel: h2 bezoekt minder knopen Nadeel: h2 is (vaak) duurder om uit te rekenen nog een begrip: h2 is beter geinformeerd dan h1 als *overal* (= in elke knoop) geldt dat h2 dichter bij h* ligt dan h1. Let op: dat moet dus in *elke* knoop gelden. Vb: de manhattan afstand is beter geinformeerd dan “het aantal blokken op de verkeerde plaats” (waarom?) AI3

Algorithme: beam-search Best-first search was: bd knopen in open-list ..... behoud alleen beste k knopen in open list beam breedte k k knopen in open-list laatste variant: de meest interessante varianten (best-first, A, A*) zijn allemaal gebaseerd op het bijhouden van de lijst van open knopen (= alle nog niet gekozen kinderen tot nu toe). Probleem is dat die lijst open knopen ongeveer zo hard groeit als de breedte van de boom (ongeveer), en daarvan weten we dat ie b^d is. Dat was het nadeel van breadth-first, en eigenlijk heeft best-first dus hetzelfde nadeel (= vraagt onbetaalbaar veel geheugen). Oplossing hiervoor is nog: maak de open lijst een vaste maximale omvang (zeg: k). Dwz: kies beste knoop uit open lijst vervang ‘m door zijn kinderen als de lijst hierdoor >k wordt, gooi dan de slechtse kandidaten uit de open lijst om ‘m weer max lengte k te maken etc. Voordeel: geheugen gebruik is nu niet meer b^d , maar k (vast max) Nadeel: niet meer admissible (want misschien heb je de knoop die je nodig had op weg naar de oplossing wel uit de open lijst gegooid) (laat ze hier maar weer over nadenken…) AI3

Algorithme: beam-search Beam-search met breedte 1 = hill-climbing i.h.a: beam search is niet admissible AI3