aimacode•Mar 25, 2025
aima-java
AIMA3e-Java (JDK 8+)
Java implementation of algorithms from Russell and Norvig's Artificial Intelligence - A Modern Approach 3rd Edition. You can use this in conjunction with a course on AI, or for study on your own. We're looking for solid contributors to help.
Getting Started Links
Overview of Project
Interested in Contributing
Setting up your own workspace
Comments on architecture and design
Demo Applications that can be run from your browser (unfortunately not up to date)
Javadoc for the aima-core project (outdated)
Download the latest official (but outdated) version = 1.9.1 (Dec 18 2016)
Latest Maven Information (for integration as a third party library)
Index of Implemented Algorithms
|Figure|Page|Name (in 3rd edition)|Code
| -------- |:--------:| :-----| :----- |
|2|34|Environment|Environment|
|2.1|35|Agent|Agent|
|2.3|36|Table-Driven-Vacuum-Agent|TableDrivenVacuumAgent|
|2.7|47|Table-Driven-Agent|TableDrivenAgentProgram|
|2.8|48|Reflex-Vacuum-Agent|ReflexVacuumAgent|
|2.10|49|Simple-Reflex-Agent|SimpleReflexAgentProgram|
|2.12|51|Model-Based-Reflex-Agent|ModelBasedReflexAgentProgram|
|3|66|Problem|Problem|
|3.1|67|Simple-Problem-Solving-Agent|SimpleProblemSolvingAgent|
|3.2|68|Romania|SimplifiedRoadMapOfRomania|
|3.7|77|Tree-Search|TreeSearch|
|3.7|77|Graph-Search|GraphSearch|
|3.10|79|Node|Node|
|3.11|82|Breadth-First-Search|BreadthFirstSearch|
|3.14|84|Uniform-Cost-Search|UniformCostSearch|
|3|85|Depth-first Search|DepthFirstSearch|
|3.17|88|Depth-Limited-Search|DepthLimitedSearch|
|3.18|89|Iterative-Deepening-Search|IterativeDeepeningSearch|
|3|90|Bidirectional search|BidirectionalSearch|
|3|92|Best-First search|BestFirstSearch|
|3|92|Greedy best-First search|GreedyBestFirstSearch|
|3|93|A\* Search|AStarSearch|
|3.26|99|Recursive-Best-First-Search |RecursiveBestFirstSearch|
|4.2|122|Hill-Climbing|HillClimbingSearch|
|4.5|126|Simulated-Annealing|SimulatedAnnealingSearch|
|4.8|129|Genetic-Algorithm|GeneticAlgorithm|
|4.11|136|And-Or-Graph-Search|AndOrSearch|
|4|147|Online search problem|OnlineSearchProblem|
|4.21|150|Online-DFS-Agent|OnlineDFSAgent|
|4.24|152|LRTA\*-Agent|LRTAStarAgent|
|5.3|166|Minimax-Decision|MinimaxSearch|
|5.7|170|Alpha-Beta-Search|AlphaBetaSearch|
|6|202|CSP|CSP|
|6.1|204|Map CSP|MapCSP|
|6.3|209|AC-3|AC3Strategy|
|6.5|215|Backtracking-Search|AbstractBacktrackingSolver|
|6.8|221|Min-Conflicts|MinConflictsSolver|
|6.11|224|Tree-CSP-Solver|TreeCspSolver|
|7|235|Knowledge Base|KnowledgeBase|
|7.1|236|KB-Agent|KBAgent|
|7.7|244|Propositional-Logic-Sentence|Sentence|
|7.10|248|TT-Entails|TTEntails|
|7|253|Convert-to-CNF|ConvertToCNF|
|7.12|255|PL-Resolution|PLResolution|
|7.15|258|PL-FC-Entails?|PLFCEntails|
|7.17|261|DPLL-Satisfiable?|DPLLSatisfiable|
|7.18|263|WalkSAT|WalkSAT|
|7.20|270|Hybrid-Wumpus-Agent|HybridWumpusAgent|
|7.22|272|SATPlan|SATPlan|
|9|323|Subst|SubstVisitor|
|9.1|328|Unify|Unifier|
|9.3|332|FOL-FC-Ask|FOLFCAsk|
|9.6|338|FOL-BC-Ask|FOLBCAsk|
|9|345|CNF|CNFConverter|
|9|347|Resolution|FOLTFMResolution|
|9|354|Demodulation|Demodulation|
|9|354|Paramodulation|Paramodulation|
|9|345|Subsumption|SubsumptionElimination|
|10.9|383|Graphplan|GraphPlan|
|11.5|409|Hierarchical-Search|HierarchicalSearchAlgorithm|
|11.8|414|Angelic-Search|---|
|13.1|484|DT-Agent|DT-Agent|
|13|484|Probability-Model|ProbabilityModel|
|13|487|Probability-Distribution|ProbabilityDistribution|
|13|490|Full-Joint-Distribution|FullJointDistributionModel|
|14|510|Bayesian Network|BayesianNetwork|
|14.9|525|Enumeration-Ask|EnumerationAsk|
|14.11|528|Elimination-Ask|EliminationAsk|
|14.13|531|Prior-Sample|PriorSample|
|14.14|533|Rejection-Sampling|RejectionSampling|
|14.15|534|Likelihood-Weighting|LikelihoodWeighting|
|14.16|537|GIBBS-Ask|GibbsAsk|
|15.4|576|Forward-Backward|ForwardBackward|
|15|578|Hidden Markov Model|HiddenMarkovModel|
|15.6|580|Fixed-Lag-Smoothing|FixedLagSmoothing|
|15|590|Dynamic Bayesian Network|DynamicBayesianNetwork|
|15.17|598|Particle-Filtering|ParticleFiltering|
|16.9|632|Information-Gathering-Agent|InformationGatheringAgent|
|17|647|Markov Decision Process|MarkovDecisionProcess|
|17.4|653|Value-Iteration|ValueIteration|
|17.7|657|Policy-Iteration|PolicyIteration|
|17.9|663|POMDP-Value-Iteration|POMDPValueIteration|
|18.5|702|Decision-Tree-Learning|DecisionTreeLearner|
|18.8|710|Cross-Validation-Wrapper|CrossValidation|
|18.11|717|Decision-List-Learning|DecisionListLearner|
|18.24|734|Back-Prop-Learning|BackPropLearning|
|18.34|751|AdaBoost|AdaBoostLearner|
|19.2|771|Current-Best-Learning|CurrentBestLearning|
|19.3|773|Version-Space-Learning|VersionSpaceLearning|
|19.8|786|Minimal-Consistent-Det|MinimalConsistentDet|
|19.12|793|FOIL|FOIL|
|21.2|834|Passive-ADP-Agent|PassiveADPAgent|
|21.4|837|Passive-TD-Agent|PassiveTDAgent|
|21.8|844|Q-Learning-Agent|QLearningAgent|
|22.1|871|HITS|HITS|
|23.5|894|CYK-Parse|CYK|
|25.9|982|Monte-Carlo-Localization|MonteCarloLocalization|
Index of implemented notebooks
|Chapter No|Name |Status (in 3rd edition)|Status (in 4th edition)
| -------- |:--------:| :-----| :----- |
|3| Solving Problems by Searching| In Progress| Not started|
|6| Constraint Satisfaction Problems |In Progress|---|
|12| Knowledge Representation|Done|---|
|13| Quantifying Uncertainty |Done | --- |
|14| Probabilistic Reasoning|In Progress| ---|
Before starting to work on a new notebook:
Open a new issue with the following heading: Notebook: Chapter Name - Version . Check that the issue is not assigned to anyone.
Mention a topics list of what you will be implementing in the notebook for that particular chapter. You can iteratively refine the list once you start working.
Start a discussion on what can go in that particular notebook.
"---" indicates algorithms yet to be implemented.
Index of data structures
Here is a table of the data structures yet to be implemented.
|Fig|Page|Name (in book)|Code|
| -------- |:--------:| :-----| :----- |
|9.8|341|Append|---|
|10.1|369|AIR-CARGO-TRANSPORT-PROBLEM|---|
|10.2|370|SPARE-TIRE-PROBLEM|---|
|10.3|371|BLOCKS-WORLD |---|
|10.7|380|HAVE-CAKE-AND-EAT-CAKE-TOO-PROBLEM|---|
|11.1|402|JOB-SHOP-SCHEDULING-PROBLEM|---|
|11.4|407|REFINEMENT-HIGH-LEVEL-ACTIONS|---|
|23.6|895|SENTENCE-TREE|---|
|29.1|1062|POWERS-OF-2|---|