Awesome
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
-
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)<br>
<dependency> <groupId>com.googlecode.aima-java</groupId> <artifactId>aima-core</artifactId> <version>3.0.0</version> </dependency>
Index of Implemented Algorithms
Figure | Page | Name (in 3<sup>rd</sup> 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 3<sup>rd</sup> edition) | Status (in 4<sup>th</sup> 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 | --- |