/aima-java

Java implementation of algorithms from Russell And Norvig's "Artificial Intelligence - A Modern Approach"

Primary LanguageJavaMIT LicenseMIT

AIMA4e-Java (JDK 8+) Build Status

Java implementation of algorithms from Russell and Norvig's "Artificial Intelligence - A Modern Approach 4th Edition." You can use this in conjunction with a course on AI, or for study on your own. We're loooking for solid contributors to help.


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.


Index of Implemented Algorithms

Fig Page Name/Pseudocode (in book) Implementation(s)
2.? ?? Agent Agent
2.? ?? Table-Driven-Vacuum-Agent TableDrivenVacuumAgent
2.? ?? Table-Driven-Agent TableDrivenAgent
2.? ?? Reflex-Vacuum-Agent ReflexVacuumAgent
2.? ?? Simple-Reflex-Agent SimpleReflexAgent
2.? ?? Model-Based-Reflex-Agent ModelBasedReflexAgent
3? ?? Problem Problem
3? ?? Simple-Problem-Solving-Agent SimpleProblemSolvingAgent
3.? ?? Romania SimplifiedRoadMapOfPartOfRomania
3.? ?? Tree-Search TreeSearch
Alternative(s)
TreeQueueSearch
TreeGoalTestedFirstQueueSearch
TreePriorityQueueSearch
3.? ?? Graph-Search GraphSearch
Alternative(s)
GraphQueueSearch
GraphGoalTestedFirstQueueSearch
GraphPriorityQueueSearch
GraphRLPriorityQueueSearch
3.? ?? Node Node
3.? ?? Breadth-First-Search BreadthFirstSearch
Alternative(s)
BreadthFirstQueueSearch
3.? ?? Uniform-Cost-Search UniformCostSearch
Alternative(s)
UniformCostQueueSearch
3? ?? Depth-first Search DepthFirstQueueSearch
3.? ?? Depth-Limited-Search DepthLimitedTreeSearch
3.? ?? Iterative-Deepening-Search IterativeDeepeningSearch
3? ?? Bidirectional search
Alternative(s)
BidirectionalSearchMRS
BidirectionalSearchGW
3? ?? Best-First search BestFirstQueueSearch
3? ?? Greedy Best-First Search GreedyBestFirstSearch
Alternative(s)
GreedyBestFirstQueueSearch
3? ?? A* Search AStarSearch
Alternative(s)
AStarQueueSearch
3.? ?? Recursive-Best-First-Search RecursiveBestFirstSearch
4.? ?? Hill-Climbing HillClimbingSearch
Alternative(s)
HillClimbingSearchWithSidewaysMoves
4.? ?? Simulated-Annealing SimulatedAnnealingSearch
4.? ?? Genetic-Algorithm GeneticAlgorithm
4.? ?? And-Or-Graph-Search AndOrGraphSearch
4.? ?? Online-DFS-Agent OnlineDFSAgent
4.? ?? LRTA*-Agent LRTAStarAgent
5.? ?? Minimax-Decision MinimaxDecision
5.? ?? Alpha-Beta-Search AlphaBetaSearch
Alternative(s)
IterativeDeepeningAlphaBetaSearch
6.? ?? AC-3 AC3
6.? ?? Backtracking-Search BacktrackingSearch
6.? ?? Min-Conflicts MinConflicts
6.? ?? Tree-CSP-Solver TreeCSPSolver
7.? ?? KnowledgeBase KnowledgeBase
7.? ?? KB-Agent KBAgent
7.? ?? TT-Entails TTEntails
7.? ?? ConvertToCNF ConvertToCNF
7.? ?? PL-Resolution PLResolution
7.? ?? PL-FC-Entails? PLFCEntails
7.? ?? DPLL-Satisfiable? DPLLSatisfiable
7.? ?? WalkSAT WalkSAT
7.? ?? Hybrid-Wumpus-Agent HybridWumpusAgent
7.? ?? SATPlan SATPlan
7.? ? Propositional-Logic-Sentence Sentence

TODO (REMEMBER - KEEP IT SIMPLE SIMPLE SIMPLE!!!! :)

CURRENT (Rewrite of chapters 3 to 6)

Chp 3

  • Uniform-Cost-Search NoOp case and need for small constant.
  • GraphPriorityQueueSearch and TreePriorityQueueSearch potentially need a better mechanism for determining state containment and removal of a node with a lower priority (i.e. AbstractQueueSearchForActions.removedNodeFromFrontierWithSameStateAndLowerPriority()).
  • Recursive-Best-First-Search - look to improve/tidy up implementation.
  • Add a mechanism for gathering search metrics. Want to make more flexible and introduce less clutter into the core algorithms in order to support.

Chp 4

  • Follow up on Genetic Algorithm experiments on N-Queens problem (based on aima3e implementation) to determine if performs no better than random selection.
  • Online-DFS-Agent - Clarify the need for the additional check if (!sPrime.equals(result.get(s, a))) {, which is not present in the pseudocode but required to stop it looping endlessly on certain test problems.

Chp 5

Chp 6

Chp 8

  • Restructure the AST for FOL to have clean parser calls.

LATER

Chapter 4 'core' module.

  • Add tests for all implemented algorithms.

Chapter 3 'core' module.

  • Add tests for all implemented algorithms.

Chapter 2 'core' module.

  • Add tests for all implemented algorithms.

Chapter 2 'extra' module.

  • Environment definition: Consider specifying Dimensions in API, see pg. 42.
  • Environment Simulator referenced on pg. 45 (this will be a re-factor of a lot of the environment stuff in aima3e-core).

USEFUL RESOURCES

GUI