Home

Awesome

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

FigurePageName (in 3<sup>rd</sup> edition)Code
234EnvironmentEnvironment
2.135AgentAgent
2.336Table-Driven-Vacuum-AgentTableDrivenVacuumAgent
2.747Table-Driven-AgentTableDrivenAgentProgram
2.848Reflex-Vacuum-AgentReflexVacuumAgent
2.1049Simple-Reflex-AgentSimpleReflexAgentProgram
2.1251Model-Based-Reflex-AgentModelBasedReflexAgentProgram
366ProblemProblem
3.167Simple-Problem-Solving-AgentSimpleProblemSolvingAgent
3.268RomaniaSimplifiedRoadMapOfRomania
3.777Tree-SearchTreeSearch
3.777Graph-SearchGraphSearch
3.1079NodeNode
3.1182Breadth-First-SearchBreadthFirstSearch
3.1484Uniform-Cost-SearchUniformCostSearch
385Depth-first SearchDepthFirstSearch
3.1788Depth-Limited-SearchDepthLimitedSearch
3.1889Iterative-Deepening-SearchIterativeDeepeningSearch
390Bidirectional searchBidirectionalSearch
392Best-First searchBestFirstSearch
392Greedy best-First searchGreedyBestFirstSearch
393A* SearchAStarSearch
3.2699Recursive-Best-First-SearchRecursiveBestFirstSearch
4.2122Hill-ClimbingHillClimbingSearch
4.5126Simulated-AnnealingSimulatedAnnealingSearch
4.8129Genetic-AlgorithmGeneticAlgorithm
4.11136And-Or-Graph-SearchAndOrSearch
4147Online search problemOnlineSearchProblem
4.21150Online-DFS-AgentOnlineDFSAgent
4.24152LRTA*-AgentLRTAStarAgent
5.3166Minimax-DecisionMinimaxSearch
5.7170Alpha-Beta-SearchAlphaBetaSearch
6202CSPCSP
6.1204Map CSPMapCSP
6.3209AC-3AC3Strategy
6.5215Backtracking-SearchAbstractBacktrackingSolver
6.8221Min-ConflictsMinConflictsSolver
6.11224Tree-CSP-SolverTreeCspSolver
7235Knowledge BaseKnowledgeBase
7.1236KB-AgentKBAgent
7.7244Propositional-Logic-SentenceSentence
7.10248TT-EntailsTTEntails
7253Convert-to-CNFConvertToCNF
7.12255PL-ResolutionPLResolution
7.15258PL-FC-Entails?PLFCEntails
7.17261DPLL-Satisfiable?DPLLSatisfiable
7.18263WalkSATWalkSAT
7.20270Hybrid-Wumpus-AgentHybridWumpusAgent
7.22272SATPlanSATPlan
9323SubstSubstVisitor
9.1328UnifyUnifier
9.3332FOL-FC-AskFOLFCAsk
9.6338FOL-BC-AskFOLBCAsk
9345CNFCNFConverter
9347ResolutionFOLTFMResolution
9354DemodulationDemodulation
9354ParamodulationParamodulation
9345SubsumptionSubsumptionElimination
10.9383GraphplanGraphPlan
11.5409Hierarchical-SearchHierarchicalSearchAlgorithm
11.8414Angelic-Search---
13.1484DT-AgentDT-Agent
13484Probability-ModelProbabilityModel
13487Probability-DistributionProbabilityDistribution
13490Full-Joint-DistributionFullJointDistributionModel
14510Bayesian NetworkBayesianNetwork
14.9525Enumeration-AskEnumerationAsk
14.11528Elimination-AskEliminationAsk
14.13531Prior-SamplePriorSample
14.14533Rejection-SamplingRejectionSampling
14.15534Likelihood-WeightingLikelihoodWeighting
14.16537GIBBS-AskGibbsAsk
15.4576Forward-BackwardForwardBackward
15578Hidden Markov ModelHiddenMarkovModel
15.6580Fixed-Lag-SmoothingFixedLagSmoothing
15590Dynamic Bayesian NetworkDynamicBayesianNetwork
15.17598Particle-FilteringParticleFiltering
16.9632Information-Gathering-AgentInformationGatheringAgent
17647Markov Decision ProcessMarkovDecisionProcess
17.4653Value-IterationValueIteration
17.7657Policy-IterationPolicyIteration
17.9663POMDP-Value-IterationPOMDPValueIteration
18.5702Decision-Tree-LearningDecisionTreeLearner
18.8710Cross-Validation-WrapperCrossValidation
18.11717Decision-List-LearningDecisionListLearner
18.24734Back-Prop-LearningBackPropLearning
18.34751AdaBoostAdaBoostLearner
19.2771Current-Best-LearningCurrentBestLearning
19.3773Version-Space-LearningVersionSpaceLearning
19.8786Minimal-Consistent-DetMinimalConsistentDet
19.12793FOILFOIL
21.2834Passive-ADP-AgentPassiveADPAgent
21.4837Passive-TD-AgentPassiveTDAgent
21.8844Q-Learning-AgentQLearningAgent
22.1871HITSHITS
23.5894CYK-ParseCYK
25.9982Monte-Carlo-LocalizationMonteCarloLocalization

Index of implemented notebooks

Chapter NoNameStatus (in 3<sup>rd</sup> edition)Status (in 4<sup>th</sup> edition)
3Solving Problems by SearchingIn ProgressNot started
6Constraint Satisfaction ProblemsIn Progress---
12Knowledge RepresentationDone---
13Quantifying UncertaintyDone---
14Probabilistic ReasoningIn 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.

FigPageName (in book)Code
9.8341Append---
10.1369AIR-CARGO-TRANSPORT-PROBLEM---
10.2370SPARE-TIRE-PROBLEM---
10.3371BLOCKS-WORLD---
10.7380HAVE-CAKE-AND-EAT-CAKE-TOO-PROBLEM---
11.1402JOB-SHOP-SCHEDULING-PROBLEM---
11.4407REFINEMENT-HIGH-LEVEL-ACTIONS---
23.6895SENTENCE-TREE---
29.11062POWERS-OF-2---