/aima-java

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

Primary LanguageJavaMIT LicenseMIT

AIMA3e-Java (JDK 8+) Build Status Binder

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

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:

  1. Open a new issue with the following heading: **Notebook: Chapter Name - Version **. Check that the issue is not assigned to anyone.
  2. 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.
  3. 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 ---