Julia (v1.1) implementation of the algorithms found in "Artificial Intelligence: A Modern Approach".
This project is not intended to be a standard Julia package (i.e. the Julia package manager).
We're looking for solid contributors to help.
When complete, this project will have Julia implementations for all the pseudocode algorithms in the book, as well as tests and examples of use. For each major topic, such as nlp
(natural language processing), we provide the following files:
nlp.jl
: Implementations of all the pseudocode algorithms, and necessary support functions/datatypes/data.tests/test_nlp.jl
: A lightweight test suite using Base.Test macros.nlp.ipynb
: A Jupyter (IJulia) notebook that explains and gives examples of how to use the code.nlp_apps.ipynb
: A Jupyter notebook that gives example applications of the code.
Include the following lines in all files within the same directory.
include("aimajulia.jl");
using Main.aimajulia;
Figure | Name (in 3rd edition) | Name (in repository) | File |
---|---|---|---|
2.1 | Environment | Environment |
agents.jl |
2.1 | Agent | Agent |
agents.jl |
2.3 | Table-Driven-Vacuum-Agent | TableDrivenVacuumAgent |
agents.jl |
2.7 | Table-Driven-Agent | TableDrivenAgentProgram |
agents.jl |
2.8 | Reflex-Vacuum-Agent | ReflexVacuumAgent |
agents.jl |
2.10 | Simple-Reflex-Agent | SimpleReflexAgent |
agents.jl |
2.12 | Model-Based-Reflex-Agent | ModelBasedReflexAgentProgram |
agents.jl |
3 | Problem | Problem |
search.jl |
3 | Node | Node |
search.jl |
3 | Queue | Queue |
utils.jl |
3.1 | Simple-Problem-Solving-Agent | SimpleProblemSolvingAgent |
search.jl |
3.2 | Romania | romania |
search.jl |
3.7 | Tree-Search | tree_search |
search.jl |
3.7 | Graph-Search | graph_search |
search.jl |
3.11 | Breadth-First-Search | breadth_first_search |
search.jl |
3.14 | Uniform-Cost-Search | uniform_cost_search |
search.jl |
3.17 | Depth-Limited-Search | depth_limited_search |
search.jl |
3.18 | Iterative-Deepening-Search | iterative_deepening_search |
search.jl |
3.22 | Best-First-Search | best_first_graph_search |
search.jl |
3.24 | A*-Search | astar_search |
search.jl |
3.26 | Recursive-Best-First-Search | recursive_best_first_search |
search.jl |
4.2 | Hill-Climbing | hill_climbing |
search.jl |
4.5 | Simulated-Annealing | simulated_annealing |
search.jl |
4.8 | Genetic-Algorithm | genetic_algorithm |
search.jl |
4.11 | And-Or-Graph-Search | and_or_graph_search |
search.jl |
4.21 | Online-DFS-Agent | OnlineDFSAgentProgram |
search.jl |
4.24 | LRTA*-Agent | LRTAStarAgentProgram |
search.jl |
5.3 | Minimax-Decision | minimax_decision |
games.jl |
5.7 | Alpha-Beta-Search | alphabeta_search |
games.jl |
6 | CSP | CSP |
csp.jl |
6.3 | AC-3 | AC3 |
csp.jl |
6.5 | Backtracking-Search | backtracking_search |
csp.jl |
6.8 | Min-Conflicts | min_conflicts |
csp.jl |
6.11 | Tree-CSP-Solver | tree_csp_solver |
csp.jl |
7 | KB | KnowledgeBase |
logic.jl |
7.1 | KB-Agent | KnowledgeBaseAgentProgram |
logic.jl |
7.7 | Propositional Logic Sentence | Expression |
logic.jl |
7.10 | TT-Entails | tt_entails |
logic.jl |
7.12 | PL-Resolution | pl_resolution |
logic.jl |
7.14 | Convert to CNF | to_conjunctive_normal_form |
logic.jl |
7.15 | PL-FC-Entails? | pl_fc_resolution |
logic.jl |
7.17 | DPLL-Satisfiable? | dpll_satisfiable |
logic.jl |
7.18 | WalkSAT | walksat |
logic.jl |
7.20 | Hybrid-Wumpus-Agent | ||
7.22 | SATPlan | sat_plan |
logic.jl |
9 | Subst | substitute |
logic.jl |
9.1 | Unify | unify |
logic.jl |
9.3 | FOL-FC-Ask | fol_fc_ask |
logic.jl |
9.6 | FOL-BC-Ask | fol_bc_ask |
logic.jl |
9.8 | Append | ||
10.1 | Air-Cargo-problem | air_cargo_pddl |
planning.jl |
10.2 | Spare-Tire-problem | spare_tire_pddl |
planning.jl |
10.3 | Three-Block-Tower | three_block_tower_pddl |
planning.jl |
10.7 | Cake-problem | have_cake_and_eat_cake_too_pddl |
planning.jl |
10.9 | Graphplan | graphplan |
planning.jl |
10.13 | Partial-Order-Planner | ||
11.1 | Job-Shop-Problem-With-Resources | job_shop_scheduling_pddl |
planning.jl |
11.5 | Hierarchical-Search | hierarchical_search |
planning.jl |
11.8 | Angelic-Search | ||
11.10 | Doubles-Tennis-problem | doubles_tennis_pddl |
planning.jl |
13 | Discrete Probability Distribution | ProbabilityDistribution |
probability.jl |
13.1 | DT-Agent | DecisionTheoreticAgentProgram |
probability.jl |
14.9 | Enumeration-Ask | enumeration_ask |
probability.jl |
14.11 | Elimination-Ask | elimination_ask |
probability.jl |
14.13 | Prior-Sample | prior_sample |
probability.jl |
14.14 | Rejection-Sampling | rejection_sample |
probability.jl |
14.15 | Likelihood-Weighting | likelihood_weighting |
probability.jl |
14.16 | Gibbs-Ask | gibbs_ask |
probability.jl |
15.4 | Forward-Backward | forward_backward |
probability.jl |
15.6 | Fixed-Lag-Smoothing | fixed_lag_smoothing |
probability.jl |
15.17 | Particle-Filtering | particle_filtering |
probability.jl |
16.9 | Information-Gathering-Agent | ||
17.4 | Value-Iteration | value_iteration |
mdp.jl |
17.7 | Policy-Iteration | policy_iteration |
mdp.jl |
17.7 | POMDP-Value-Iteration | ||
18.5 | Decision-Tree-Learning | decision_tree_learning |
learning.jl |
18.8 | Cross-Validation | cross_validation |
learning.jl |
18.11 | Decision-List-Learning | decision_list_learning |
learning.jl |
18.24 | Back-Prop-Learning | back_propagation_learning! |
learning.jl |
18.34 | AdaBoost | adaboost! |
learning.jl |
19.2 | Current-Best-Learning | current_best_learning |
kl.jl |
19.3 | Version-Space-Learning | version_space_learning |
kl.jl |
19.8 | Minimal-Consistent-Det | minimal_consistent_determination |
kl.jl |
19.12 | FOIL | foil |
kl.jl |
21.2 | Passive-ADP-Agent | PassiveADPAgentProgram |
rl.jl |
21.4 | Passive-TD-Agent | PassiveTDAgentProgram |
rl.jl |
21.8 | Q-Learning-Agent | QLearningAgentProgram |
rl.jl |
22.1 | HITS | HITS |
nlp.jl |
23 | Chart-Parse | Chart |
nlp.jl |
23.5 | CYK-Parse | cyk_parse |
nlp.jl |
25.9 | Monte-Carlo-Localization | monte_carlo_localization |
probability.jl |
All Test
tests for the aima-julia project can be found in the tests directory.
The algorithms implemented in this project are found from both Russell And Norvig's "Artificial Intelligence - A Modern Approach" and aima-pseudocode.