Kunstmatige intelligentie

Vergelijkbare documenten
Computerspellen in soorten en maten


Kunstmatige Intelligentie (AI) Walter Kosters. voorjaar kosterswa/ai/aieen.pdf

Programmeermethoden. Controle-structuren. Walter Kosters. week 3: september kosterswa/pm/

Spellen: Van puzzels via tomografie naar backtracking. dinsdag 14 en 21 januari 2014; zaal 409 en 302

Opgaven Kunstmatige Intelligentie 1 maart 2017

Kunstmatige Intelligentie (AI) Hoofdstuk 25 van Russell/Norvig = [RN] Robotica. voorjaar 2019 College 9, 11 april 2019

Programmeermethoden. Arrays. Walter Kosters. week 7: oktober kosterswa/pm/

Kunstmatige Intelligentie (AI) Hoofdstuk van Russell/Norvig = [RN] Genetische algoritmen. voorjaar 2016 College 11, 3 mei 2016

NAAM: Programmeren 1 Examen 29/08/2012

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

Informatica kiezen. Informatica: iets met computers? Informatie over het vak informatica in de Tweede Fase van havo en vwo

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/

De eerste ronde Nederlandse Informatica Olympiade

Datastructuren: stapels, rijen en binaire bomen

Programmeermethoden. Pointers. Walter Kosters. week 10: november kosterswa/pm/

C++ programmeermethoden Bachelor Kunstmatige Intelligentie

XPcpelmmuttelsecoutmainRedHatmkdireditorenumDebian. classusingmathunitytruecpsusenamespacestructinclude

Afbeelding 12-1: Een voorbeeld van een schaakbord met een zwart paard op a4 en een wit paard op e6.

Workshop DisWis, De Start 13/06/2007 Bladzijde 1 van 7. Sudoku. Sudoku

Bijlagen bacheloropleiding Kunstmatige Intelligentie

Kunstmatige Intelligentie

Planning. 1. Mini College. 2. Introductiecursus Imperatief Programmeren. 3. Crash and Compile (vanaf 17:00 uur)

Opgave 2. Binaire informatie

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.

Verslag Opdracht 4: Magische Vierkanten

Kunstmatige Intelligentie (AI) Hoofdstuk 6 van Russell/Norvig = [RN] Constrained Satisfaction Problemen (CSP s) voorjaar 2015 College 7, 31 maart 2015

Programmeermethoden. Functies vervolg. Walter Kosters. week 5: 1 5 oktober kosterswa/pm/

Beste deelnemer, Wanneer we vanmiddag op het kampterrein aankomen, zullen we beginnen met een verkenningsrondje over het terrein. Dat is op zichzelf

Nieuw Curriculum Bachelor Technische Informatica 2013

Gametechnologie algemene presentatie

Opdracht: Hilberts hotel

Datastructuren: stapels, rijen en binaire bomen

Algoritmiek. 2 februari Introductie

slides2.pdf 2 nov

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008

Dinsdag 10 juni uur

Online c++ leren programmeren:

Introductie opleiding Informatica

Gametechnologie algemene presentatie. Marc van Kreveld Eva Witschge

Datastructuren en Algoritmen

Curriculumherziening. Bacheloropleiding Informatiekunde. Eindtermen. Informatiekunde. Het eerste jaar. Bacheloropleiding 4/27/2010

Tiende college algoritmiek. 26 april Gretige algoritmen

Informatie voor de leerkracht Introductie nieuw concept (pagina 1) Programmeren met Bomberbot (pagina 1)

Examen Datastructuren en Algoritmen II

Kennis na het volgen van de training. Na het volgen van deze training bent u in staat:

1 Binaire plaatjes en Japanse puzzels

9 Meer over datatypen

Curriculum Afkortingen Bachelor Informatica Propedeuse Postpropedeuse Start Vervolg Afsluiting 60,0 Gebonden keuze (8,6 EC) Afsluiting

Sudoku s en Wiskunde

Blue-Bot ONDERWIJSGIDS

DE ASTRO PI PROGRAMMEREN VOOR MISSION ZERO

Vernieuwing Bacheloropleidingen Informatica en Informatiekunde

Programmeermethoden NA. Week 3: Controlestructuren

Uitwerking tentamen Analyse van Algoritmen, 29 januari

Dit instructieboek is een kopie van het echte NK. Alleen de puzzels zijn verwijderd.

Introductie Informatica

De jury beslist of een inzending geldig is. Over de uitslag kan niet worden gecorrespondeerd. WCPN Nederlands Kampioenschap 2014

Java Les 3 Theorie Herhaal structuren

Mijn project noemt Het Wari-spel. De doelgroep van mijn programma is iedereen die houdt van strategische spelen.

Programmeermethoden. Arrays (vervolg) Walter Kosters. week 8: 29 oktober 2 november kosterswa/pm/

Elke groep van 3 leerlingen heeft een 9 setje speelkaarten nodig: 2 t/m 10, bijvoorbeeld alle schoppen, of alle harten kaarten.

Inhoudsopgave Voorwoord 5 Voordat je begint 6 Wat heb je nodig? 7 De website bij het boek 7 Voor ouders, verzorgers en leraren

Introductie Informatica

MICRO:BIT. Uitdaging 5 Magic8. Origineel: Micro:bit Educational Foundation 2016 Vertaling: CoderDojo Kennemerwaard 2017

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

INFORMATICA en ECONOMIE. INFORMATICA en ECONOMIE INFORMATICA. INFORMATICA en ECONOMIE. Decanendag Den Haag 10 februari 2010.

Ieder tweetal heeft nodig: Een kopie van de slagschipspelletjes: 1. 1A, 1B voor spel A, 2B voor spel A, 3B voor spel 3

Transcriptie:

Kunstmatige intelligentie programmeren, α-β, nonogrammen, Tetris dr. Walter Kosters De Nassau, Breda, 12 januari 2017 www.liacs.leidenuniv.nl/ kosterswa/ 1

Jeopardy! 2011 2

AlphaGo: Go 2016: computerprogramma verslaat Lee Sedol; 2017... 3

Informatica Studie propedeuse Bij de studie Informatica (in Leiden) krijg je per jaar een tiental vakken: de colleges. De propedeuse, het eerste jaar van de driejarige bachelor, ziet er als volgt uit: najaar voorjaar Programmeermethoden Algoritmiek Fundamentele informatica 1 Logica Digitale technieken Databases Studievaardigheden Programmeertechnieken Wiskunde 1 Wiskunde 2 Open dag Universiteit Leiden: zaterdag 25 februari 2017 Proefstuderen Informatica: vrijdag 31 maart 2017 4

Informatica Studie 2e/3e jaar Tweede en derde jaar zijn als volgt: najaar voorjaar Datastructuren Kunstmatige intelligentie Fundamentele informatica 2 Complexiteit Computerarchitectuur Operating systemen Programmeertalen Statistiek Security Wetenschap & onderzoek Data mining Fundamentele informatica 3 Software engineering Vak 1 of 1/5 minor Vak 4 Vak 2 Vak 5 Vak 3 Bachelorproject En varianten Informatica&Economie, Informatica&Biologie en (extra zwaar) Informatica en Wiskunde. 5

Programmeren 6

Programmeren Introductie Je programmeert een computer in een speciaal ontworpen computertaal of programmeertaal, zoals C ++ of Python. In Leiden leren alle eerstejaars studenten Informatica, Wiskunde, Natuurkunde en Sterrenkunde programmeren. Voorkennis is niet echt nodig. 7

Programmeren Hello world Een eerste C ++ -programma: #include <iostream> using namespace std; int main ( ) { cout << "Dit komt op het scherm." << endl; return 0; }//main Dit programma zet alleen een tekstje op het beeldscherm. Let op de vooral voor mensen nuttige layout. En op hoofdletters en kleine letters. 8

Programmeren Een tweede programma Een tweede C ++ -programma: // dit is een simpel programma #include <iostream> using namespace std; int main ( ) { int getal = 42; // een variabele cout << "Geef een geheel getal.. " << endl; cin >> getal; cout << "Kwadraat is: " << getal * getal << endl; return 0; }//main 9

Programmeren Controle-structuren C ++ kent de volgende controle-structuren: keuze if onbekend (maar eindig?) aantal herhalingen while vast aantal herhalingen for 10

Programmeren Eerste programmeeropgave... I work 9 5 in a 7 11 De gebruiker moet zijn/haar geboortejaar als geheel getal invoeren, en daarna de geboortemaand. Vervolgens voert hij/zij de geboortedag in. Het programma berekent dan de bijbehorende dag van de week.... 3/4.1, 0.3, 4.4, 6.6, 8.8, 10.10, 12.12 Bijvoorbeeld: 9 november 1989 was een donderdag. Let op schrikkeljaren; en 1752? 11

Kunstmatige intelligentie 12

Introductie Kunstmatige intelligentie (AI, Artificial Intelligence) is een verzamelnaam voor een breed vakgebied, met vragen als: robotica: Hoe programmeer je een robot? data mining: Welke films vind je leuk? rechtspraak: Word je volautomatisch be/veroordeeld? vertalen: the spirit is willing but the flesh is weak... the vodka is good but the meat is rotten? computer games: Hoe speelt de computer bij CoD? neurale netwerken: Kun je beurskoersen voorspellen? 13

IMDb App 14

Invalshoeken Je kunt op minstens twee manieren naar Kunstmatige intelligentie kijken: 1. vanuit een meer psychologische of filosofische richting: Wat is het verschil tussen een mens en een computer? Kan een computer denken (zwemmen, vliegen,...)? 2. vanuit een meer technische richting: Hoe werkt een schaakprogramma? Hoe werkt een Marsrobot? Do androids dream of electric sheep? 15

The imitation game Kunstmatige intelligentie laat computers zich zo gedragen dat het intelligent zou heten als mensen het op die manier zouden doen. De beroemde Turing-test (1950) is: In een afgesloten kamer bevindt zich een mens of een computer, waarmee we alleen via toetsenbord en beeldscherm contact hebben. Is het een mens of juist een computer? Het originele probleem was overigens met man vrouw. 16

Chat-bots Een voorbeeldconversatie (Jason Hutchens HAL/HeX): my name is bob Pleased to meet you. how are you doing, jas? I am just fine, thanks! And you? i am feeling great! If you are feeling great, it s your business, mate! Dit soort computerprogramma s doet mee in de jaarlijkse Loebner-contest. Hoe weet je wat echt is? 17

Captcha 18

Robotica Robots komen in twee soorten: als machines in de echte wereld en als softbots: internet programma s. Van de science fiction schrijver Isaac Asimov (auteur van I, Robot ) zijn de drie wetten van de robotica: 1. Een robot mag een mens geen kwaad doen. 2. Een robot moet menselijke orders gehoorzamen (tenzij dat tegen 1. ingaat). 3. Een robot moet zichzelf beschermen (tenzij dat tegen 1. of 2. ingaat). 19

Mobiele robots Curiosity Sony Aibo Hiroshi Ishiguro s robot (en hijzelf) Honda ASIMO 20

Spel(l)en Maxi en Mini spelen het volgende eenvoudige spel: Maxi wijst eerst een (horizontale) rij aan, en daarna kiest Mini een (verticale) kolom: ❶ 3 9 8 2 4 6 14 5 2 ❷ Bijvoorbeeld: Maxi ❶ kiest rij 3, daarna kiest Mini ❷ kolom 2; dat levert einduitslag 5. Maxi wil graag een zo groot mogelijk getal, Mini juist een zo klein mogelijk getal. Hoe spelen we dit spel zo goed mogelijk? 21

α-β-algoritme Als Maxi rij 1 kiest, kiest Mini kolom 1 (levert 3); als Maxi rij 2 kiest, kiest Mini kolom 1 (levert 2); als Maxi rij 3 kiest, kiest Mini kolom 3 (levert 2). Dus kiest Maxi rij 1! 3 9 8 2?? 14 5 2 Nu merken we op dat de analyse hetzelfde verloopt als we niet eens weten wat onder de twee vraagtekens zit. Het α-β-algoritme onthoudt als het ware de beste en slechtste mogelijkheden, en kijkt niet verder als dat toch nergens meer toe kan leiden. Ieder schaakprogramma gebruikt deze methode. 22

Schaken 1997 23

Nonogrammen 4 3 10 9 7 1 3 7 1 1 8 1 7 4 1 3 1 2 2 7 5 1 4 8 1 2 2 1 1 2 3 4 1 1 2 3 3 6 6 9 8 7 1 4 3 8 2 6 1 3 1 1 2 1 1 5 7 5 1 2 3 2 2 3 3 3 1 2 1 3 13 6 4 3 1 4 9 1 7 7 6 12 9 2 3 1 1 1 4 3 3 2 3 1 2 4 3 1 3 2 1 1 1 1 1 10 9 4 6 8 4 3 3 2 1 4 4 3 2 2 1 1 1 3 2 1 1 1 3 6 2 4 4 9 1 2 3 2 1 5 4 6 1 7 1 8 3 1 6 11 23 14 1 1 3 4 4 5 2 5 10 3 4 4 2 2 5 2 5 4 3 3 3 4 6 4 5 1 1 2 2 2 2 2 5 1 1 4 5 1 2 8 3 3 4 3 5 1 10 2 3 8 3 2 2 2 3 4 11 14 6 5 4 2 2 2 2 3 2 3 5 6 12 3 7 5 3 1 10 6 10 8 7 9 4 2 6 1 3 1 12 14 2 4 9 9 8 11 57 27 22 20 18 16 14 12 13 11 9 8 7 5 5 4 3 3 3 1 1 2 2 2 3 3 4 5 5 6 7 8 8 9 10 11 12 13 14 15 16 16 18 19 20 21 23 42 42 27 16 14 4 8 14 12 9 5 14 7 1 4 1 6 3 14 4 1 9 1 14 2 3 13 2 17 1 10 14 11 4 5 8 3 3 8 2 3 7 1 3 1 2 4 6 6 6 5 5 1 3 6 2 2 5 2 4 5 1 1 10 5 11 10 9 1 7 9 4 3 3 2 3 2 6 1 2 5 3 8 2 2 6 2 4 3 2 2 3 4 3 13 2 1 2 2 9 5 7 2 2 5 3 1 9 2 3 8 12 2 6 2 1 12 10 3 14 4 3 4 2 1 1 3 1 1 2 2 3 2 3 2 2 2 2 1 3 2 2 1 2 2 3 3 1 2 1 3 2 3 1 2 4 1 3 1 3 3 1 3 1 1 4 1 4 1 2 4 7 1 2 1 2 2 5 1 4 1 2 5 1 5 3 1 2 4 1 9 3 1 1 7 1 1 6 2 5 1 2 5 1 1 2 4 1 1 2 2 1 1 2 2 1 1 2 2 2 2 1 3 2 3 2 1 6 2 1 2 1 2 3 2 1 20 1 2 3 2 2 22 1 3 2 1 6 3 7 1 4 3 1 2 1 5 1 4 3 1 2 1 1 1 4 1 5 4 1 2 1 4 6 4 1 2 1 2 1 7 5 1 2 1 1 4 8 5 2 1 4 8 6 1 2 1 4 10 6 1 2 2 3 11 7 2 1 1 1 12 7 1 2 1 2 2 13 9 3 1 1 14 10 2 2 15 10 3 2 16 11 2 1 17 12 7 19 13 5 20 14 21 15 23 16 24 19 26 50 13 5 29 24

Introductie Als je Japanse puzzels zegt, denkt iedereen aan Sudoku. 5 3 7 6 1 9 5 9 8 6 8 6 3 4 8 3 1 7 2 6 6 2 8 4 1 9 5 8 7 9 25

Introductie Als je Japanse puzzels zegt, denkt iedereen aan Sudoku. 5 3 4 6 7 8 9 1 2 6 7 2 1 9 5 3 4 8 1 9 8 3 4 2 5 6 7 8 5 9 7 6 1 4 2 3 4 2 6 8 5 3 7 9 1 7 1 3 9 2 4 8 5 6 9 6 1 5 3 7 2 8 4 2 8 7 4 1 9 6 3 5 3 4 5 2 8 6 1 7 9 bron: Wikipedia Maar wij gaan het hebben over Nonogrammen. 26

Voorbeeld Een Nonogram is een puzzel; een klein voorbeeld: 1 1 1 1 1 1 1 0 1,1 0 1,1 3 Naast iedere rij en boven iedere kolom staan in volgorde de lengtes van aaneengesloten series rode (of zwarte) vakjes. Waar moeten die rode vakjes komen? 27

Voorbeeld oplossing De oplossing ziet er zo uit: 1 1 1 1 1 1 1 0 1,1 0 1,1 3 7 7 7 7 7 7 7 Naast iedere rij en boven iedere kolom staan in volgorde de lengtes van aaneengesloten series rode (of zwarte) vakjes. 28

Oplossen Hoe los je Nonogrammen op? De meeste mensen gebruiken logische regels, en heuristieken = vuistregels zoals redeneer eerst een keer via de rijen, en dan via de kolommen. Een voorbeeld van een logische regel is: als het getal 3 naast een rij van breedte 5 staat, moet het middelste vakje wel rood zijn. Je kijkt dan eigenlijk naar één rij of kolom. 29

Eén rij of kolom Stel dat je van een rij al weet: 3,2,1 7 7???????? Een betekent een zeker leeg vakje, een 7 staat voor een zeker gevuld vakje. De rest is nog onbekend. Wat kun je hier nu concluderen? 30

Eén rij of kolom We concluderen dan dat voor deze rij geldt: 3,2,1 7 7 7 7???? Een betekent een zeker leeg vakje, een 7 staat voor een zeker gevuld vakje. De rest blijft nog onbekend. Dus door naar een enkele rij of kolom te kijken kun je vooruitgang boeken. En dat gaat goed met dynamisch programmeren. 31

Voorbeeld oplossen Hoe ver komen we als je alleen per rij/kolom kijkt? Een betekent weer een zeker leeg vakje, een 7 staat voor een zeker gevuld vakje. 0 1,1 0 1,1 3 1 1 1 1 1 1 1 7 7???? 7???? Maar nu zitten we vast... tenzij we rijen en kolommen samen bekijken. 32

Voorbeeld verder oplossen Dit hadden we: 1 1 1 1 1 1 0 1,1 0 1,1 3 1 7 7 v w u x 7???? Stel dat u = 7, dan (kolom) moet v leeg zijn, en dus (rij) w = 7, en dus (kolom) moet x leeg zijn. Tegenspraak (rij)! Dus u moet leeg zijn. Dat was een lastige logische redenering, ook voor een computer. Maar de rest is nu eenvoudig. 33

Te veel Een 5 5 Nonogram heeft 2 25 = 2 10 2 10 2 5 = 1024 1024 32 32 miljoen mogelijke invullingen! Want er zijn 5 5 = 25 vakjes met elk 2 mogelijkheden. De 80 50 Einstein heeft 2 4000 10 1200 mogelijkheden. Dus brute-force, alles domweg proberen, lost een complete puzzel niet snel op... 34

NP-volledig Het oplossen van een Nonogram is een NP-volledig probleem, net als het maken van een schoolrooster. Dat kan eigenlijk alleen goed met brute-force, maar dan duurt het veel te lang. Van een mogelijke oplossing kun je wel snel zien of hij goed of fout is. Dit is het grootste open informatica-probleem P? = NP. Je kunt $ 1.000.000 verdienen als je dit oplost! Het gaat daar niet om het oplossen van één puzzel of maken van één schoolrooster, maar om het vinden van een efficiënte algemene methode als die al bestaat. 35

Ontwerpen Hoe maak = construeer = ontwerp je zelf een Nonogram? kleurenfoto grijswaarden-plaatje puzzel www.liacs.leidenuniv.nl/ kosterswa/nono/ 36

Tomografie Waarom doen wetenschappers Nonogrammen? Tomografie houdt zich bezig met het volgende probleem: Hoe reconstrueer je een object uit projecties? Voorbeelden: Nonogrammen oplossen Hoe zien onze organen eruit, gegeven CT-scans? Waar zitten de gaten in een diamant? 37

Tetris YouTube 38

Tetris Problemen Ook aan een spel als Tetris kleven allerlei vragen: Hoe speel je het zo goed mogelijk? (AI) Hoe moeilijk is het? (complexiteit) Wat kan er allemaal gebeuren? Zo is bijvoorbeeld bewezen dat sommige Tetris-problemen NP-volledig zijn, dat je bijna alle configuraties kunt bereiken, maar dat niet alle problemen beslisbaar zijn, zie: www.liacs.leidenuniv.nl/ kosterswa/tetris/ 39

Tetris NP-volledig? De 7 Tetris-stukken: Willekeurige ( random ) stukken vallen; volle regels worden verwijderd. De vraag Kun je met een gegeven serie (inclusief volgorde) van deze stukken een bord helemaal leeg spelen? is NP-volledig. Als iemand het bord leeg speelt kun je dat eenvoudig controleren. Als het niet kan, kan men (tot nu toe) niks beters verzinnen dan alle mogelijkheden één voor één na te gaan! 40

Ù Ù Ù Ù Tetris Alles bereikbaar? ¹ ½ Een willekeurige configuratie: Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Deze kan gemaakt worden door 276 geschikte Tetris-stukken op de juiste plaats te laten vallen. Let op: alleen geheel gevulde regels verdwijnen, alles daarboven zakt één rij. Claim: op een bord van oneven breedte kan elke configuratie bereikt worden! 41

Vragen? 42