Java implementation of algorithms from Norvig And Russell's "Artificial Intelligence - A Modern Approach 4th Edition."
NOTE: This is an in progress complete rewrite of the algorithms, leveraging JDK 8's new language features, from the AIMA3e branch (currently master branch). This will also become the new master branch once the 4th edition of "Artificial Intelligence - A Modern Approach" is published.
| Fig | Page | Name (in book) | Code |
| 2.1 | 35 | Agent | Agent |
| 2.3 | 36 | Table-Driven-Vacuum-Agent | TableDrivenVacuumAgent |
| 2.7 | 47 | Table-Driven-Agent | TableDrivenAgent |
| 2.8 | 48 | Reflex-Vacuum-Agent | ReflexVacuumAgent |
| 2.10 | 49 | Simple-Reflex-Agent | SimpleReflexAgent |
| 2.12 | 51 | Model-Based-Reflex-Agent | ModelBasedReflexAgent |
| 3 | 66 | Problem | Problem |
| 3.1 | 67 | Simple-Problem-Solving-Agent | SimpleProblemSolvingAgent |
| 3.2 | 68 | Romania | SimplifiedRoadMapOfPartOfRomania |
| 3.7 | 77 | Tree-Search | GeneralTreeSearch |
| 3.7 | 77 | Graph-Search | GeneralGraphSearch |
| 3.10 | 79 | Node | Node |
| 3.11 | 82 | Breadth-First-Search | BreadthFirstGraphSearch |
| 3.14 | 84 | Uniform-Cost-Search | UniformCostGraphSearch |
| 3 | 85 | Depth-first Search | BasicDepthFirstGraphSearch |
| 3.17 | 88 | Depth-Limited-Search | RecursiveDepthLimitedTreeSearch |
| 3.18 | 89 | Iterative-Deepening-Search | IterativeDeepeningSearch |
| 3 | 92 | Best-First search | BestFirstGraphSearch |
| 3 | 92 | Greedy best-First search | GreedyBestFirstGraphSearch |
| 3 | 93 | A* Search | AStarGraphSearch |
| 3.26 | 99 | Recursive-Best-First-Search | RecursiveBestFirstTreeSearch |
- Re-design uninformed and informed search hierarchy:
- SearchFunction
- TreeSearch (sub-package)
- GeneralTreeSearch (fig 3.7) x
- BasicGeneralTreeSearch x
- BasicDepthFirstTreeSearch (pg. 86 'modified at no extra memory cost so that it checks new states against those on the path from the root to the current node; to avoid infinite loops)
- UniformCostTreeSearch (ensure does not need to be at same level as GeneralTreeSearch)
- BasicUniformCostTreeSearch
- BasicGeneralTreeSearch x
- BreadthFirstTreeSearch (variant of General tree search which checks if solution before adding to frontier)
- BasicBreadthFirstTreeSearch
- recursive
- RecursiveDepthLimitedTreeSearch (fig 3.17) x
- BasicRecursiveDepthLimitedTreeSearch x
- IterariveDeepeningSearch x
- BasicIterativeDeepeningSearch x
- RecursiveBestFirstTreeSearch (fig 3.26) x
- BasicRecursiveBestFirstTreeSearch x
- RecursiveDepthLimitedTreeSearch (fig 3.17) x
- BestFirstTreeSearch (pg 92)
- GreedyBestFirstTreeSearch
- BasicGreedyBestFirstTreeSearch
- AStarTreeSearch
- BasicAStarTreeSearch
- GreedyBestFirstTreeSearch
- GeneralTreeSearch (fig 3.7) x
- GraphSearch (Marker Interface or sub-package)
- GeneralGraphSearch (fig 3.7) x
- BasicGeneralGraphSearch x
- BasicDepthFirstGraphSearch x
- BasicGeneralGraphSearch x
- BreadthFirstGraphSearch (fig 3.11) x
- BasicBreadthFirstGraphSearch x
- UniformCostGraphSearch (fig 3.14) x
- BasicUniformCostGraphSearch x
- BestFirstGraphSearch (pg 92 - implementation identical to fig 3.14 except for cost) x
- GreedyBestFirstGraphSearch x
- BasicGreedyBestFirstGraphSearch x
- AStartGraphSearch x
- BasicAStartGraphSearch x
- GreedyBestFirstGraphSearch x
- GeneralGraphSearch (fig 3.7) x
- TreeSearch (sub-package)
- SearchFunction
- Tree-Search demo
- Add additional tree search algorithms to simulate
- Add visualizations specific to recursive tree search algorithms
- Configure rectangular problem
- Change size of grid
- Specify order of actions.
- Clockwise
- Anti-Clockwise
- Random
- Check box for 'each time' new random sequence.
- User Selected (via groups of toggle buttons).
- Add additional problems
- Binary search tree (i.e. fig 3.12 and also take into account fig 3.16)
- Possibly show before Rectangular problem in demo
- 2D Map (i.e. Map of Romania)
- A* display contours (fig 3.25)
- Informed search
- Display heuristic information summary pane (fig 3.22)
- Binary search tree (i.e. fig 3.12 and also take into account fig 3.16)
- Graph-Search demo
- Summary information related to explored set.
- GUI demo
- Mark each algorithm (search) with icons indicating complexity, optimality, time and space complexity (chp 3 pg 80 and fig 3.21).
- Uniform-Cost-Search need a better mechanism for determining state containment in the queue and remove a node with a higher state cost.
- Recursive-Best-First-Search - look to improve/tidy up implementation.
- BasicRecursiveBestFirstSearchTest
- 3 90 Bidirectional search
- BasicBestFirstGraphSearchTest
- BasicGreedyestFirstGraphSearchTest
- BasicAStarGraphSearchTest
- BasicIterativeDeepeningSearchTest
- BasicDepthLimitedSearchTest
- BasicDepthFirstSearchTest
- BasicUniformCostSearchTest
- BreadthFirstSearchTest - additional tests.
- BasicGraphSearchTest
- BasicTreeSearchTest
- BasicProblemTest
- BasicSimpleProblemSolvingAgentTest
- BasicModelBasedReflexAgentTest
- BasicTableDrivenAgentTest
- Environment defintion: Consider specifying Dimensions in API, see pg. 42.
- Environment Simulator referenced on pg. 45 (this will be a refactor of the a lot of the environment stuff in aima3e-core).
- http://docs.oracle.com/javase/8/javase-clienttechnologies.htm
- https://bitbucket.org/controlsfx/controlsfx/overview
- http://fxexperience.com/
- https://bitbucket.org/Jerady/fontawesomefx
- http://fortawesome.github.io/Font-Awesome/get-started/
- http://www.pythontutor.com/
- https://svgsalamander.java.net/docs/use.html
- http://blog.netopyr.com/2012/03/09/creating-a-sprite-animation-with-javafx/
- http://www.mrlonee.com/?p=319
- http://harmoniccode.blogspot.com/
- https://rterp.wordpress.com/2014/07/28/adding-custom-javafx-component-to-scene-builder-2-0-part-2/