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.
- 
Demo Applications that can be run from your browser (unfortunately not up to date) 
- 
Download the latest official (but outdated) version = 1.9.1 (Dec 18 2016) 
- 
Latest Maven Information (for integration as a third party library) <dependency> <groupId>com.googlecode.aima-java</groupId> <artifactId>aima-core</artifactId> <version>3.0.0</version> </dependency>
| 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 | 
| 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.
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 | --- | 
