Backtracking, Search, Heuristics

Slides:



Advertisements
Similar presentations
Adversarial Search We have experience in search where we assume that we are the only intelligent being and we have explicit control over the “world”. Lets.
Advertisements

Adversarial Search Reference: “Artificial Intelligence: A Modern Approach, 3 rd ed” (Russell and Norvig)
Computers playing games. One-player games Puzzle: Place 8 queens on a chess board so that no two queens attack each other (i.e. on the same row, same.
CPS 100, Fall Backtracking by image search.
Announcements Assignment #4 is due tonight. Last lab program is going to be assigned this Wednesday. ◦ A backtracking problem.
Chess AI’s, How do they work? Math Club 10/03/2011.
CompSci 100e Program Design and Analysis II March 3, 2011 Prof. Rodger CompSci 100e, Spring
Backtracking COP Backtracking  Backtracking is a technique used to solve problems with a large search space, by systematically trying and eliminating.
1 search CS 331/531 Dr M M Awais A* Examples:. 2 search CS 331/531 Dr M M Awais 8-Puzzle f(N) = g(N) + h(N)
1 Adversary Search Ref: Chapter 5. 2 Games & A.I. Easy to measure success Easy to represent states Small number of operators Comparison against humans.
Game Trees: MiniMax strategy, Tree Evaluation, Pruning, Utility evaluation Adapted from slides of Yoonsuck Choe.
CSE 143 Lecture 17 More Recursive Backtracking reading: "Appendix R" on course web site slides created by Marty Stepp and Hélène Martin
CPS 100, Fall PFTN2Wks l Making progress on Boggle assignment  Many, many classes, each designed to do one thing  Some related by inheritance,
Games. Adversaries Consider the process of reasoning when an adversary is trying to defeat our efforts In game playing situations one searches down the.
CPS 100, Fall GridGame APT How would you solve this problem using recursion?
CPS Backtracking, Search, Heuristics l Many problems require an approach similar to solving a maze  Certain mazes can be solved using the “right-hand”
CompSci 100e 6.1 Plan for the week l More recursion examples l Backtracking  Exhaustive incremental search  When we a potential solution is invalid,
Game tree search Chapter 6 (6.1 to 6.3 and 6.6) cover games. 6.6 covers state of the art game players in particular. 6.5 covers games that involve uncertainty.
CompSci 100 Prog Design and Analysis II Oct 26, 2010 Prof. Rodger CPS 100, Fall
Backtracking & Brute Force Optimization Intro2CS – weeks
CompSci Backtracking, Search, Heuristics l Many problems require an approach similar to solving a maze ä Certain mazes can be solved using the.
CSE 143 Lecture 13 Recursive Backtracking slides created by Ethan Apter
CPS Backtracking, Search, Heuristics l Many problems require an approach similar to solving a maze ä Certain mazes can be solved using the “right-hand”
CPS 100, Spring Search, Trees, Games, Backtracking l Trees help with search  Set, map: binary search tree, balanced and otherwise  Quadtree.
CPS 100, Spring Search, Backtracking,Heuristics l How do you find a needle in a haystack?  How does a computer play chess?  Why would you write.
Understanding AI of 2 Player Games. Motivation Not much experience in AI (first AI project) and no specific interests/passion that I wanted to explore.
CSE 143 read: 12.5 Lecture 18: recursive backtracking.
Game playing Types of games Deterministic vs. chance
Adversarial Search and Game-Playing
ADVERSARIAL GAME SEARCH: Min-Max Search
Backtracking, Search, Heuristics
Announcements Homework 1 Full assignment posted..
BackTracking CS255.
Depth-First Search N-Queens Problem Hamiltonian Circuits
CSSE 230 Day 25 Skip Lists.
Intro to Computer Science II
PENGANTAR INTELIJENSIA BUATAN (64A614)
CSCI 104 Backtracking Search
Adversarial Search and Game Playing (Where making good decisions requires respecting your opponent) R&N: Chap. 6.
Pengantar Kecerdasan Buatan
Adversarial Search.
David Kauchak CS52 – Spring 2016
The "8 Queens" problem Consider the problem of trying to place 8 queens on a chess board such that no queen can attack another queen. What are the "choices"?
CSE 143 Lecture 19 More Recursive Backtracking
CSCI 5582 Artificial Intelligence
Recursion Copyright (c) Pearson All rights reserved.
Artificial Intelligence
Chapter 6 : Game Search 게임 탐색 (Adversarial Search)
Analysis and design of algorithm
Alpha-Beta Search.
Kevin Mason Michael Suggs
NIM - a two person game n objects are in one pile
Artificial Intelligence
adapted from Recursive Backtracking by Mike Scott, UT Austin
Alpha-Beta Search.
Instructor: Vincent Conitzer
Alpha-Beta Search.
Minimax strategies, alpha beta pruning
Alpha-Beta Search.
CSE (c) S. Tanimoto, 2007 Search 2: AlphaBeta Pruning
The "8 Queens" problem Consider the problem of trying to place 8 queens on a chess board such that no queen can attack another queen. What are the "choices"?
Alpha-Beta Search.
Backtracking, Search, Heuristics
Minimax strategies, alpha beta pruning
Data Structures and Algorithms
Announcements Assignment #4 is due tonight. Last lab program is going to be assigned this Wednesday. ◦ A backtracking problem.
CS51A David Kauchak Spring 2019
CS51A David Kauchak Spring 2019
Unit II Game Playing.
Minimax Trees: Utility Evaluation, Tree Evaluation, Pruning
Presentation transcript:

Backtracking, Search, Heuristics Many problems require an approach similar to solving a maze Certain mazes can be solved using the “right-hand” rule Other mazes, e.g., with islands, require another approach If you have “markers”, leave them at intersections, don’t explore the same place twice What happens if you try to search the web, using links on pages to explore other links, using those links to … How many web pages are there? What rules to webcrawlers/webspiders follow? Who enforces the rules? Keep track of where you’ve been don’t go there again Any problems with this approach?

Classic problem: N queens Can queens be placed on a chess board so that no queens attack each other? Easily place two queens What about 8 queens? Make the board NxN, this is the N queens problem Place one queen/column # different tries/column? Backtracking Use “current” row in a col If ok, try next col If fail, back-up, next row

Backtracking idea with N queens Try to place a queen in each column in turn Try first row in column C, if ok, move onto next column If solved, great, otherwise try next row in column C, place queen, move onto the next column Must unplace the placed queen to keep going What happens when we start in a column, where to start? If we fail, move back to previous column (which remembers where it is/failed) When starting in a column anew, start at beginning When backing up, try next location, not beginning Backtracking in general, record an attempt go forward If going forward fails, undo the record and backup

Basic ideas in backtracking search We need to be able to enumerate all possible choices/moves We try these choices in order, committing to a choice If the choice doesn’t pan out we must undo the choice This is the backtracking step, choices must be undoable Process is inherently recursive, so we need to know when the search finishes When all columns tried in N queens When all board locations tried in boggle When every possible moved tried in Tic-tac-toe or chess? Is there a difference between these games? Summary: enumerate choices, try a choice, undo a choice, this is brute force search: try everything

N queens backtracking: nqueens.cpp bool Queens::SolveAtCol(int col) // pre: queens placed at columns 0,1,...,col-1 // post: returns true if queen can be placed in column col // and N queen problem solved (N is square board size) { int k; int rows = myBoard.numrows(); if (col == rows) return true; for(k=0; k < rows; k++) { if (NoQueensAttackingAt(k,col)) { myBoard[k][col] = true; // place a queen if (SolveAtCol(col+1)) { return true; } myBoard[k][col] = false; // unplace the queen return false;

Backtracking with Boggle S R E N M P V H O L C Boggletm played on 4x4 board Other sizes possible Form words by connecting letters horizontally, vertically, diagonally Cannot re-use letters (normally) Two approaches Build words from connections, find partial words in dictionary Look up every word in the dictionary on the board Which is better? How is backtracking used? (see boggle.cpp)

Computer v. Human in Games Computers can explore a large search space of moves quickly How many moves possible in chess, for example? Computers cannot explore every move (why) so must use heuristics Rules of thumb about position, strategy, board evaluation Try a move, undo it and try another, track the best move What do humans do well in these games? What about computers? What about at Duke?

Backtracking, minimax, game search We’ll use tic-tac-toe to illustrate the idea, but it’s a silly game to show the power of the method What games might be better? Problems? Minimax idea: two players, one maximizes score, the other minimizes score, search complete/partial game tree for best possible move In tic-tac-toe we can search until the end-of-the game, but this isn’t possible in general, why not? Use static board evaluation functions instead of searching all the way until the game ends Minimax leads to alpha-beta search, then to other rules and heuristics

Minimax for tic-tac-toe Players alternate, one might be computer, one human (or two computer players) Simple rules: win scores +10, loss scores –10, tie is zero X maximizes, O minimizes Assume opponent plays smart What happens otherwise? As game tree is explored is there redundant search? What can we do about this? O X X

yfzhltea byveqye The words above represent a simple substitution cypher Each letter mapped to one other letter, no inconsistencies Often used in cryptogram puzzles (newspaper, online, …) How can we write a computer program to solve this? Ideas for solving the problem? Benchmark/ballpark idea to accept (or not) Problems on the horizon?

One possible solution in docrypto.cpp Study this for an example of backtracking Similar to N queens: make move, recurse, undo as needed What’s a move in this problem? Illustrates a few C++ and OO concepts Static variables and functions: belong to class not object Also called “class variables”, don’t need object to access Must be careful when initializing static variables because order of initialization can be important See WordSource object shared by all CryptoMap objects, how and when is the WordSource initialized?

Heuristics A heuristic is a rule of thumb, doesn’t always work, isn’t guaranteed to work, but useful in many/most cases Search problems that are “big” often can be approximated or solved with the right heuristics What heuristic is good for cryptograms? Solve small words first Solve large words first Do something else? What other optimizations/improvements can we make? See program, cryptomap.cpp and docrypto.cpp