CS 580 Fall 2003 Dr. Duric Due: 12/2/2003 Final Project You are to select an area of interest and do a final project in that area. A list of topics to chose from is given below. If you wish, this may be a team project (2-3 people). In that case more will be expected than from 1-person projects. Schedule: By Oct. 1: obtain agreement with me on the project. Dec. 2: hand in project report. List of topics: 1. Map coloring Explore map coloring in depth. Implement heuristics listed in the textbook and experiment with different maps. See how random state ordering influences the efficiency of your heuristics. See your teacher for additional maps. You should compare running times and number of steps needed for various heuristics. 2. Railroad puzzles Use iterative deepening search to solve the railroad puzzles given at http://www.cs.gmu.edu/~zduric/cs580/Railroad/index.html What is the branching factor for those puzzles? 3. Constraint satisfaction Develop a program that uses min-conflict heuristics to solve n-queens problem for at least 100,000 queens. See the textbook for details. 4. Machine Learning Develop a program which learns how to do things better over time. A simple example of this is a program which learns to play the game of Nim. See the file 3-pile-nim.txt for more details. 5. Vision a) Use a publicly available implementation of an edge detector (e.g. Canny's edge detector - options: see your instructors, Matlab, Computer Vision Home page) to detect edges in a coridor image. For random pairs of edge pixels check if they belong to the same image line. This can be done by generating a digital line through the pixels and checking how many edge pixels belong to that line (Bresenham algorithm from computer graphics can be used to generate a line). How many random pairs are needed to find all interesting lines? b) Use publicly available implementation of an edge detector (e.g. Canny's edge detector - options: see your instructors, Matlab, Computer Vision Home page) to detect edges in a face image. Use matlab to label eyelid pixels and approximate the eyelid edges using the spline toolbox. If you are given all edges in the eye area is it possible to check random combinations of points to find eyelids? c) Consider the outline of a walking human (see your teacher for example images). Approximate the boundary by as few straight lines as possible to obtain a polygonal shape - hand pick boundary points for this approximation. Can you think of a way to find body parts and label them as legs, arms, torso, head, etc. You can decompose the body into smaller parts/polygons. Your teacher has images. You can use matlab for this project. d) Consider a 2-second sequence of a walking human. Use matlab to hand label the corresponding stick figures/skeletons. If you view the sequence of skeletons can you recognize the motion? See your instructor for images. 6. Neural Networks Using one of the neural network packages available on the net, develop a small project using neural networks to recognize simple objects such as hand-drawn letters or numbers. 7. Genetic Algorithms Using one of the genetic algorithms packages available on the net, develop a small project using genetic algorithms as a heuristic search mechanism for solving an NP-hard problem like TSP or SAT. 8. 2x2x2 Rubik's cube Consider a simplified Rubik's cube (2x2x2 - the original cube is 3x3x3). Formulate the representation and the operators for this problem. Find what is the depth of the search space for this problem. Choose a search algorithm and solve if it for a variety of start and goal states. Note: this may not be as trivial as it sounds. The final report should include a detailed hardcopy report on what you did, how you did it, and how it turned out. You should acknowledge all help that you received including all information obtained from various web sources. It should include program source and sample output. In addition, source code and executable files should be made available.