1 Situering AI 1.1 Branches logical AI What a program knows about the world in general the facts of the specific situation in which it must act, and its goals are all represented by sentences of some mathematical logical language. The program decides what to do by inferring that certain actions are appropriate for achieving its goals. search AI programs often examine large numbers of possibilities, e.g. moves in a chess game or inferences by a theorem proving program. Discoveries are continually made about how to do this more efficiently in various domains. pattern recognition When a program makes observations of some kind, it is often programmed to compare what it sees with a pattern. representation Facts about the world have to be represented in some way. Usually languages of mathematical logic are used. inference common sense knowledge and reasoning This is the area in which AI is farthest from human-level learning from experience Programs do that. The approaches to AI based on connectionism and neural nets specialize in that. planning Planning programs start with general facts about the world (especially facts about the effects of actions), facts about the particular situation and a statement of a goal. From these, they generate a strategy for achieving the goal. In the most common cases, the strategy is just a sequence of actions. epistemology This is a study of the kinds of knowledge that are required for solving problems in the world. ontology Ontology is the study of the kinds of things that exist. In AI, the programs and sentences deal with various kinds of objects, and we study what these kinds are and what their basic properties are. Emphasis on ontology begins in the 1990s. heuristics A heuristic is a way of trying to discover something or an idea imbedded in a program. The term is used variously in AI. Heuristic functions are used in some approaches to search to measure how far a node in a search tree seems to be from a goal. Heuristic predicates that compare two nodes in a search tree to see if one is better than the other, i.e. constitutes an advance toward the goal, may be more useful. [My opinion]. genetic programming Genetic programming is a technique for getting programs to solve a task by mating random Lisp programs and selecting fittest in millions of generations. 1.2 Applications of AI game playing speech recognition understanding natural language Just getting a sequence of words into a computer is not enough. Parsing sentences is not enough either. The computer has to be provided with an understanding of the domain the text is about, and this is presently possible only for very limited domains. computer vision The world is composed of three-dimensional objects, but the inputs to the human eye and computers' TV cameras are two dimensional. Some useful programs can work solely in two dimensions, but full computer vision requires partial three-dimensional information that is not just a set of two-dimensional views. At present there are only limited ways of representing three-dimensional information directly, and they are not as good as what humans evidently use. expert systems A ``knowledge engineer'' interviews experts in a certain domain and tries to embody their knowledge in a computer program for carrying out some task. heuristic classification One of the most feasible kinds of expert system given the present knowledge of AI is to put some information in one of a fixed set of categories using several sources of information. An example is advising whether to accept a proposed credit card purchase. Information is available about the owner of the credit card, his record of payment and also about the item he is buying and about the establishment from which he is buying it (e.g., about whether there have been previous credit card frauds at this establishment). 2 Kennissystemen 2.1 Kennis en technologie kennistechnologie bespreken als we het over systemen, methoden en technieken hebben die op een of andere manier kennis gebruiken om nieuwe problemen op te lossen. Zodra systemen functioneren, wordt al snel geaccepteerd dat ze functioneren zoals ze zijn en verdwijnt al snel naar de achtergrond het feit dat dat komt omdat er een heleboel kennis in is opgenomen. Een eenvoudige calculator of handrekenmachine gebruikt voor het bepalen van bijvoorbeeld logaritmes geavanceerde wiskundige kennis, maar dat vinden we ondertussen niet meer dan normaal en we zullen zo’n apparaat daarom niet snel ‘intelligent’ noemen. Kennistechnologie wordt altijd toegepast in een bepaald domein. Bij de bibliotheekadministratie wordt het domein gevormd door alle informatie over boeken, bibliotheekgebruikers en procedures die te maken hebben met het uitlenen van de boeken. Bij de besturing van stoplichten horen tot het domein de kennis over de wegen die op het kruispunt uitkomen, de doorstroomsnelheden van het verkeer, enzovoorts. En bij een spellingcorrector horen woordenlijsten en de grammatica tot het domein. De kennis die te maken heeft met het domein waarop het systeem functioneert, wordt kortweg domeinkennis genoemd. Kennis nodig om de systemen te laten functioneren of te gebruiken, behoort niet tot de domeinkennis. Wat behoort tot de domeinkennis van de volgende systemen? En wat niet? – de automatische piloot van een Boeing 747 kennis over het berekenen van de te vliegen route, gegeven de actuele positie, de bestemming en de weersituatie, of kennis over het gedrag van het vliegtuig bij verschillende weersomstandigheden als het wordt bestuurd, bijvoorbeeld bij koerswijzigingen of stijgen en landen. De kennis nodig om de boordcomputers te laten functioneren, of allerlei informatie over het bedienen van onderdelen van het vliegtuig behoort niet tot de domeinkennis van de automatische piloot. – een systeem voor de bepaling van de inkomstenbelasting van particulieren is kennis over de wijze waarop de berekeningen moeten worden uitgevoerd om tot een vaststelling van de belasting te komen, maar ook kennis omtrent allerlei geldende regelingen en voorwaarden op grond waarvan bepaalde posten al dan niet mogen worden opgevoerd. Ook kennis omtrent de methode hoe je tot een (voor particulieren) zo voordelig mogelijke invulling van het belastingformulier kunt komen behoort tot de domeinkennis. Hoe de berekeningen precies uitgevoerd worden behoort niet tot de domeinkennis, evenmin als de methoden van registratie of opslag. – een computerschaakprogramma. Bij een computerschaakprogramma hoort de kennis over de toegestane zetten van de stukken tot de domeinkennis, evenals kennis over strategieën, sterke openingen en eindspelen. Niet tot de domeinkennis behoort de kennis over de representatie van verschillende spelsituaties in de computer of wijze waarop de verschillende eindspelen in de computer zijn opgeslagen. 2.2 Expertsystemen Expertsystemen omvatten kennis van een bepaald domein en kunnen daarmee redeneren om nieuwe conclusies te trekken, op soortgelijke wijze als menselijke experts dat doen. De kennis bestaat niet alleen uit de feiten uit het betreffende domein, maar bestaat ook uit de wijze waarop daarmee geredeneerd wordt. Een menselijke expert, bijvoorbeeld een gespecialiseerde arts, kent een heleboel feiten uit het vakgebied. Maar meer nog dan de kennis van die feiten alleen, weet weet de expert met die kennis om te gaan en in nieuwe situaties toe te passen of zich dingen af te vragen en eventueel nader te onderzoeken. In expertsystemen wordt geprobeerd op soortgelijke wijze kennis op te slaan en ermee te redeneren als een menselijke expert dat doet. In expertsystemen is de kennis van een bepaald domein op een duidelijke wijze ondergebracht. Ze bevatten een deelsysteem waarin allerlei feitenkennis is ondergebracht samen met de regels en methoden die voorschrijven hoe met die kennis moet worden omgesprongen. Dit deelsysteem bevat de domeinspecifieke kennis en wordt de kennisbank (Engels: knowledge base) genoemd. Daarnaast bevatten expertsystemen een mechanisme, het inferentiemechanisme, dat de domeinspecifieke kennis manipuleert, afhankelijk van de vragen die (via de gebruikers-interface) aan het systeem gesteld worden of de taken die het moet verrichten. Door de combinatie van de domeinspecifieke kennis en het daarvan onafhankelijke inferentiemechanisme zijn expertsystemen in staat over nieuwe situaties te redeneren en relevante conclusies te trekken of uitspraken te doen. Expertsystemen behoren tot de meest succesvolle toepassingen van het onderzoek op het gebied van de kunstmatige intelligentie. Typische voorbeelden zijn te vinden in de verzekeringswereld, bijvoorbeeld bij de acceptatie van nieuwe polissen. Een polis van een specifieke klant wordt geaccepteerd als aan een aantal voorwaarden is voldaan. Deze voorwaarden bestaan uit een aantal regels die betrekking hebben op verschillende situaties. De regels zijn de domeinspecifieke kennis. Van een nieuwe aanvraag kan door het systeem worden beoordeeld of het aan de voorwaarden voldoet. Na eventueel aanvullende vragen zal het systeem uiteindelijk met een advies komen. Het gebruik van expertsystemen in dit soort situaties maakt het mogelijk dat snel een advies kan worden verstrekt dat in overeenstemming is met de binnen het bedrijf geldende en vastgelegde regels. 2.3 Neurale netwerken In expertsystemen is in de kennisbank op een herkenbare wijze kennis ondergebracht en wordt er op een volgbare wijze mee geredeneerd. In neurale netwerken is dat niet het geval. Neurale netwerken worden dan ook toegepast in situaties waarin het niet mogelijk is feiten en verklaringen te gebruiken, zoals bij expertsystemen. De achterliggende idee bij neurale netwerken is dat kennis wordt verkregen door leren: mensen leren doordat ze zien welke effecten of resultaten horen bij welke oorzaken. Een kind leert letters en woorden door er vele malen mee geconfronteerd te worden en kan dan vervolgens in nieuwe situaties die kennis gebruiken. Een kind heeft daarmee de verbinding leren leggen tussen een bepaald plaatje (het tekentje voor de letter) en de betekenis of de klank van die letter. Op soortgelijke wijze heeft het de verbinding leren leggen tussen woorden (rijtjes letters) en de dingen die ze voorstellen (bij het rijtje letters ‘p a a r d’ hoort een beest met vier poten, een grote kop en een lange staart). Er is dus steeds sprake van een verbinding (in de wiskunde wordt dat een functie of afbeelding genoemd): bij een bepaalde invoer hoort een bepaalde uitvoer. Door leren kan een mens zich die afbeelding eigen maken. Neurale netwerken zijn systemen die op soortgelijke wijze leren en die in computerprogramma’s kunnen worden geïmplementeerd. Ze worden getraind op een aantal voorbeeldsituaties en kunnen dan in nieuwe situaties zelf conclusies trekken. Zo zijn er neurale netwerken ontwikkeld voor het herkennen van menselijke handschriften. De invoer is dan een stukje handgeschreven tekst en de uitvoer een verder bewerkbare tekst, bijvoorbeeld in ASCII-code. De posterijen maken gebruik van dit soort systemen om een grote hoeveelheid sorteerwerk geautomatiseerd te laten verlopen. De interne structuur van neurale netwerken is gebaseerd op ideeën over de werking van de menselijke hersenen en ze ontlenen er ook hun naam aan (zie figuur 1.2.2). In neurale netwerken worden grote hoeveelheden eenvoudige berekeningen uitgevoerd. Hoe die worden uitgevoerd, wordt vastgelegd tijdens de leerfase. Het resultaat is dat bij een bepaalde invoer steeds een bepaalde uitvoer hoort. 2.4 Datamining In sommige situaties is er een zeer grote hoeveelheid gegevens beschikbaar en men wil daarin dan verbanden ontdekken. Het kan bijvoorbeeld gaan om gegevens van klanten in supermarkten waarvan is bijgehouden wat voor producten ze kopen in bepaalde vestigingen, om financiële gegevens van burgers in verband met belastingen en subsidies, om gegevens over verkeersintensiteiten en opstoppingen op de wegen of om gegevens over het reisgedrag van reizigers met het openbaar vervoer. Gewone statistische methoden geven dan vaak al enig beeld van samenhang, maar veel blijft verborgen in de grote hoeveelheid gegevens. Onder de naam ‘data mining’ of ‘knowledge discovery’ zijn technieken ontwikkeld die kennis kunnen ontsluiten die op andere manieren verborgen blijft in de enorme gegevensbestanden. Zodra een organisatie kennis bloot kan leggen die in haar gegevensbestanden zit, kan ze er rekening mee houden en beter of efficiënter werken. Organisaties die moeten waken over de juistheid van de besteding van overheidsgelden, zijn er bij gebaat als ze door data-mining-technieken kunnen achterhalen of frauduleuze personen typische kenmerken hebben, zodat er met een grotere kans op succes naar gespeurd kan worden. Ontwikkelaars van het verkeersbeleid zijn zeer geïnteresseerd in alle mogelijke factoren die het verkeersverloop bepalen of in de reisroutes die passagiers volgen. Meer kennis kan enorme besparingen opleveren bij het aanleggen van wegen of wijzigen van het openbaar vervoer. De hoeveelheid gegevens die op veel plekken wordt verzameld, neemt snel toe. Om kennis te ontsluiten in die grote hoeveelheden gegevens, moeten alle gegevens op een toegankelijke wijze beschikbaar zijn. Vaak is dit al een enorme klus en een belangrijk deel van het werk. Vervolgens worden ze geanalyseerd met speciale algoritmes waarmee gezocht wordt naar veelvoorkomende patronen. Daarna kan gepoogd worden de kennis die hieruit volgt, nader te interpreteren en toe te passen. 2.5 Intelligent Agents In essentie zijn het computerprogramma's die een zekere mate van autonomie hebben, in staat zijn te leren en intelligent gedrag vertonen. Een voorbeeld zijn agents die voor een gebruiker het world wide web afspeuren naar informatie die voor de gebruiker interessant kan zijn. Zo'n agent analyseert het gedrag van de gebruiker en leidt daaruit af wat de interesses zijn. Vervolgens onderneemt de agent zelfstandig actie om relevante informatie te vinden en informeert de gebruiker daarover. Uiteraard zal een gebruiker eerst zelf bepalen of die gebruik wil maken van een dergelijke dienstverlening, en zal eventueel ook andere zaken vooraf vastleggen of aanpassen in de periode dat de agent actief is. Agents zijn feitelijk computerprogramma’s, maar kenmerkend is dat ze een zekere autonomiteit bezitten en intelligent gedrag vertonen. Dat laatste is vaak in de agent ingebouwd door er een klein expertsysteem in op te nemen. De grens tussen agents en expertsystemen is niet altijd even duidelijk. Soms zijn expertsystemen zo groot dat de globale besturing problematisch wordt. Dergelijke systemen kunnen dan uiteengerafeld worden tot kleinere processen die uitgevoerd worden door afzonderlijke autonome agents. Op die manier ontstaan zogeheten intelligent multi agent systems. Van groot belang blijkt daarbij te zijn hoe de communicatie tussen de verschillende agents verloopt. Multi agent systemen worden bijvoorbeeld toegepast bij het beheer van grote elektriciteitsnetwerken, waarbij de verschillende beheersfuncties bij verschillende agents worden ondergebracht. Zelfstandig functionerende agents worden soms ontworpen om een soort makelaarsrol te vervullen. Dergelijke agents (broker agents) brengen vragers en aanbieders van producten of diensten op het internet met elkaar in contact. Een ander voorbeeld is bekend van een elektriciteitsmaatschappij die individueel met iedere klant wil onderhandelen over de leveringsvoorwaarden. De onderhandelingen met iedere klant werden door een agent gedaan die een expertsysteem bevat met kennis over voorwaarden, mogelijkheden en onderhandelingsstrategieën. De ontwikkelingen met betrekking tot agents zijn op dit moment (1999) nog volop in ontwikkeling, maar de komende jaren kan een enorme vooruitgang worden verwacht, onder andere door de mogelijkheden die het world wide web biedt voor agents om actief te zijn. Binnen deze cursus zal er nauwelijks expliciet aandacht aan geschonken worden, maar belangrijke onderdelen van de kennistechnologie worden vaak ook in intelligent agents toegepast. 2.6 Kennis, Kennissystemen, Kennistechnologie In voorgaande subparagrafen is een aantal systemen behandeld die kennis hebben in een bepaald domein en die kennis kunnen toepassen voor het oplossen van problemen, het geven van adviezen of het ondernemen van acties. Ze hebben tot doel kennis te achterhalen, vast te leggen of ermee te redeneren en zo in zekere mate intelligent gedrag te vertonen. Het geheel aan methoden en technieken om dergelijke systemen te ontwikkelen, zullen we kennistechnologie noemen. Wat kennis precies is, hebben we overigens niet vastgelegd. In de literatuur zijn vele verschillende definities in omloop. Die hebben allemaal gemeen dat zij kennis van informatie of gegevens onderscheiden door aan kennis een zekere doelgerichtheid of het vermogen om problemen op te lossen toe te kennen. Voor het vervolg van deze cursus is het niet noodzakelijk een precieze definitie van kennis te hebben die niet ter discussie staat. Wel zal in de volgende hoofdstukken gaandeweg duidelijk worden welke soorten kennis in de kennistechnologie kunnen worden toegepast om problemen van diverse aard op te lossen. We hebben aangegeven wat we onder kennistechnologie verstaan. De invulling daarvan is redelijk algemeen geaccepteerd. Ook is er in het algemeen redelijk overeenstemming over wat er onder expertsystemen wordt verstaan. De term kennissystemen hebben we tot nu toe echter vermeden. De reden daarvoor is dat het begrip kennissysteem voor velen een verschillende inhoud heeft. Sommigen noemen expertsystemen ook kennissystemen, anderen maken een nadrukkelijk onderscheid daartussen en verstaan onder expertsystemen systemen waarin de kennis van menselijke experts is opgenomen, terwijl in kennissystemen ook kennis uit (hand)boeken of andere bronnen voor kan komen. Ook de termen kennisgebaseerde systemen of kennisintensieve informatiesystemen komen voor. 3 Intelligent Agents 3.1 agents An agent is anything that can be viewed as perceiving its environment through sensors and acting upon that environment through actuators Percept sequence: an agent’s percept sequence is the complete history of everything the agent has ever perceived. We use the term percept to refer to the agent’s perceptual inputs at any given instant. 3.2 Rationality Wat rationeel is op elk ogenblik hangt af van 4 dingen: - Performance measure that defines the criterion of success - The agent’s prior knowledge of the environment. - The actions that the agent can perform - The agent’s percept sequence to date. 3.3 Rational agent For each possible percept sequence, a rational agent should select an action that is expected to maximize its performance measure, given the evidence provided by the percept sequence and whatever built-in knowledge the agent has. Agents can perform actions in order to modify future percepts so as to obtain useful information (information gathering, exploration) An agent is autonomous if its behavior is determined by its own experience (with ability to learn and adapt) 3.4 Performance, Environment, Actuators, Sensors (PEAS) wat? kunnen toepassen/beschrijven voor geziene voorbeelden en in nieuwe gevallen. 3.5 Eigenschappen van taakomgevingen Wat is een taakomgeving? Dat is het ‘probleem’ waarvoor een rationele agent de ‘oplossing’ is. Er zijn verschillende typen van taakomgevingen 3.5.1 Fully observable (vs partially observable) Een agent’s sensors geeft hem access tot de complete staat van de omgeving op elk punt in de tijd. 3.5.2 Single agent (vs multiagent) Spreekt voor zich. 1 agent (een kruiswoordraadsel oplossen) multiagent (chess spelen). Maar MOET een agent A (taxi chauffeur bvb) een object B (een andere wagen) als een agent zien? Dan moet er gekeken worden of de B object zijn performance maximized op basis van A zijn performance measure. Chess is een vb van een competititeve multiagent omgeving omdat een agent B zijn performance zal maximaliseren, wat, door de regels van chess, a zijn performance minimaliseert. Maar bvb in het verkeer, waar ze zullen botsingen vermijden, is er dus sprake van een samenwerkende multiagent environment 3.5.3 Deterministisch (vs stochastisch) De volgende staat van de omgeving is volledig bepaald door de huidige staat en de actie die wordt uitgevoerd door de agent. (als de omgeving deterministisch is behalve voor de acties van andere agents, dan is die strategisch) 3.5.4 Episodisch (vs sequentieel) De agent’s experience is ingedeeld in atomische ‘episodes’ (elke episode bestaat uit de agent perceiving en daarna het uitvoeren van een enkele actie), en de keuze van actie in elke episode hangt enkel af van de episode zelf. 3.5.5 Statisch vs dynamisch Als de omgeving kan vervanderen terwijl een agent aan het delibireren is, dan zeggen we dat de omgeving dynamisch is. Anders is het statisch. Statisch is makkelijk mee om te gaan omdat de agent niet de wereld moet blijven bekijken terwijl het een actie kiest en het moet ook niet denken aan de tijd die loopt. Als de omgeving zichzelf niet veranderd door de tijd heen maar de agent zijn performance score wel, dan is het semidynamisch. Taxi driving is duidelijk dynamisch. 3.5.6 Discreet vs continuous Discrete/continuous verschil is van toepassing op de staat vd omgeving, hoe tijd behandelt word en tot de percepts en acties van de agent. 3.5.7 Gekend of ongekend Deze onderscheid hangt af van de kennis over de “laws of physics” van de omgeving. Als het een gekende omgeving is, is de uitkoms duidelijk anders zal de agent de omgeving moeten leren kennen. 3.6 Structuur van agents Het is de taak van AI om een agent programma te ontwerpen dat de agent function (het mappen van percepts in acties) te implementeren. We nemen aan dat dit programma zal gerund worden op een soort computer machine met phisische sensors en actuators. Dit noement de de architecture. Dus: Agent = architecture + program Er zijn 4 agent types te onderscheiden - Simple reflex agents - Model-based reflex agents - Goal-based agents - Utility based agents. 3.6.1 Simple reflex agents Deze agent selecteert acties op basis van de huidige percept en negeert de rest van de perceptgeschiedenis. (enkel in fully observable environments) 3.7 Samenvatting (H2 russel en Norvig) Een agent is iets dat waarneemt en acties uitvoert in een omgeving. De agent function specifieerd de acties genomen door de agent als antwoord op gelijk welke waarneming sequentie. De performance measure evalueert het gedrag van een agent in een omgeving. Een rationele agent werkt zodat hij deze performance measure maximaliseert Een task environment specificatie bevat de performance measure, the external envoronment, de actuators en de sensors (PEAS). In een ontwerp van een agent moet de eerste stap altijd zijn de omgeving zo goed mogelijk te beschrijven of meegeven. Simple reflex agents reageren direct op een waarneming, waar model)based reflex agents hun interne staat houden om de aspecten van de wereld die niet evident zijn te waarnemen. Goalbased agents werken om hun goals te behalen en utility-based agents proberen hun eigen verwachte ‘happiness’ te maximaliseren. Elke agent kan zijn performance verbeteren door te leren 4 Search 4.1 Agoritme problem solving agent Function SIMPLE-PROGRAM-SOLVING-AGENT(percept) returns an actions Persistent: seq, an action sequence, initially empty State, some description of the current world state Goal, a goal, initially null Problem, een problem formulatie State <- UPDATE-STATE(state, percept) If seq is empty then Goal <- FORMULATE-GOAL(state) Problem <- FORMULATE-PROBLEM(state,goal) Seq <- SEARCH(problem) If seq = failure then return a null action Action <- FIRST(seq) Seq <- REST(seq) 4.2 Formuleren van het doel goal formulation is de eerste stap in problem solving. 4.3 5 delen van een problem - Initiele staat waarin de agent begint - Een beschrijving van mogelijke acties die de agent kan doen - Een beschrijving wat elke actie doet - Goal test - Path costs functionde agent kies een cost functie dat zin eigen performance measure reflecteert. Een optimale oplossing heft het laagste path cost van alle mogelijke oplossingen. 4.4 Abstractie Het process dat details verwijdert van een representatie noemen we abstractie. 4.5 Figuur 3.7 4.6 Voorbeelden van problemen Zie boek 4.7 - Op welke criteria worden zoekalgoritmes beoordeeld Volledigheid (completeness): is er een garantie dat het algoritme een oplossing zal vinden als er 1 is? Optimalisatie: vind de strategy de optimale oplossing? Time complexiteit: hoelang duurt het voor een oplossing te vinden? Space (ruimte) complexiteit: hoeveel geheugen is er nodig voor de zoekfunctie uit te voeren Tijd en ruimte complexiteiten zijn gewogen in termen van: - B: maximum branching factor van de zoekboom - D: diepte van de laagste-kost oplossing - M: maximum diepte van de state space (kan oneindig zijn) 4.8 Wat zijn de resultaten voor de uniforme zoekstrategieen; definities (omschrijvingen) te kennen. 4.8.1 Breadth-first search BF-search is een eenvoudige strategy in wihch the root node is expanded first, then all the successors of the root node are expanded next, then their successors, and so on. Algemeen gezien zijn alle nodes bezocht op een gegeven diepte in de boom alvorens de volgende onder de loep worden genomen 4.8.2 Uninform-cost search Deze is vergelijkbaar met BF search maar het kiest de laagste kost-node. Zie boek voor prent van routenaar bucharest, zeer goed uitgelegt in text Uniform-cost wordt dus geleid door path costs, eerder dan diepte. 4.8.3 Depth-first search DF-search always expands the deepest node in the current frontier of the search tree. Gaat altijd dieptste node bekijken dus eigenlijk in 3.12 bij a zal het gaan: A – B – D – E –B – C–F–G Deze strategie i niet toepasbaar bij oneindige dieptes en loops. De tijdskost is enorm groot als m (max diepte) veel groter is dan d (de optimale diepte) omdat er veel tijd verloren gaat naar die maximum dieptes te kijken 4.8.4 Depth-limited search Dit is hetzelfde als depth-first maar er wordt een diepte limit ( / ) opgelegd. Dit wil zeggen dat nodes op diepte / geen successors hebben. Depth limited is er gekomen dankzij de fail van depth-first search waar er een oneindige depth is. Zo faalt deze niet in oneindige d situaties. Maar natuurlijk als je l < d (optimale diepte) dan zit je met slecht resultaat. 4.8.5 Iterative deepening search Dit zoekt de beste diepte limit op een iteratieve manier. Totals er een opl is gevonden, dat is dan ook de lowest-cost diepte Zie volgende prent: 4.9 Leg uit: bidirectioneel zoeken. Bij bidirectional search wil je 2 zoekopdrachten tegelijk runnen. 1 die van de initiele state vooruit zoekt en een die vanaf de goal achteruit zoekt. 4.10 Definitie van informed (heuristisch) search Een informed search strategie is een dat probleem-specifieke kennis gebruikt achter de definitie van het probleem zelf. Het weet dus op voorhand al meer kennis dan de initiele state. 5 Semantic web (web 3.0) 5.1 Leg de essentiële verschillen uit tussen het klassieke www en web 3.0. Huidige web: - +- 200 miljoen websites - Gemaakt in HTML - Enkel leesbaar voor mensen - Moeilijk doorzoekbaar - 15 jaar oud Semantic web: - Initiatief van W3C - WWW begrijpbaar maken voor machines - Alles toegankelijk - Evolueerbaar - Minimalistisch houden 5.2 Definitie ontologie + voorbeeld geven Een ontologie is een datamodel dat een verzameling begrippen binnen een bepaald domein (aka Thesaurus) alsook de relaties tussen deze begrippen voorstelt Vb: een afbeelding beschrijven met betekenisvollere woorden. 5.3 Semantische netwerken... een voorbeeld kunnen geven en bespreken (uitleggen wat de delen zijn) Friend Of A Friend Friend Of A Friend is een ontology die personen, hun activiteiten en hun relaties beschrijft die leesbaar is door een machine. Iedereen kan dus zichzelf beschrijven met FOAF en het laat mensen toe om sociale netwerken te beschrijven zonder een gecentraliseerde database. FOAF is een extensie van RDF en is gedefinieerd met OWL. Machines kunnen FOAF gebruiken om bv mensen te vinden of om bv te weten te komen hoeveel mensen er tot een bepaalde groep behoren. Elk FOAF profiel heeft een unieke herkenning, bv een email adres of een URI naar de weblog van die persoon. Voorbeeld van een persoon in FOAF <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> <foaf:Person rdf:about="#JM"> <foaf:name>Jeroen Merckx</foaf:name> <foaf:mbox rdf:resource="mailto:[email protected]" /> <foaf:homepage rdf:resource="http://www.vangrondin2006.be/" /> <foaf:nick>Gaskonijn</foaf:nick> <foaf:depiction rdf:resource="http://www.imageshack.us/aus_img_small.jpg" /> <foaf:interest> <rdf:Description rdf:about="http://www.wikimedia.org" rdfs:label="Wikipedia" /> </foaf:interest> <foaf:knows> <foaf:Person> <foaf:name>Glenn Van Cauter</foaf:name> </foaf:Person> </foaf:knows> </foaf:Person> </rdf:RDF> De bovenstaande code is een voorbeeld van een FOAF profile. 6 Genetische algoritmen 6.1 Geef een algemeen schema van een genetisch algoritme Initialiseer populatie Evalueer populatie while not klaar do Selecteer ouders Genereer met crossover kinderen Muteer kinderen Evalueer kinderen Bepaal nieuwe populatie return beste element uit populatie Genetische algoritmen (GAs) zijn een vorm van reinforcement leren, waarbij gewerkt wordt met beloningen en straffen in plaats van met de “goede antwoorden”. Een GA heeft een populatie met kandidaat-oplossingen (individuen of chromosomen) voor het betreffende probleem. Deze worden met elkaar (en zichzelf) gecombineerd tot hopelijk betere oplossingen. Essentieel is een fitness-functie die de kwaliteit van oplossingen beoordeelt. 7 PROJECT OEFENINGEN EN ANTWOORDEN