The aima-python repository implements, in Python code, the algorithms in the textbook Artificial Intelligence: A Modern Approach. A typical module in the repository has the code for a single chapter in the book, but some modules combine several chapters. See the index if you can't find the algorithm you want. The code in this repository attempts to mirror the pseudocode in the textbook as closely as possible and to stress readability foremost; if you are looking for high-performance code with advanced features, there are other repositories for you. For each module, there are three files, for example:
logic.py: Source code with data types and algorithms for fealing with logic; functions have docstrings explaining their use.
logic.ipynb: A notebook like this one; gives more detailed examples and explanations of use.
tests/test_logic.py: Test cases, used to verify the code is correct, and also useful to see examples of use.
There is also an aima-java repository, if you prefer Java.
The code is tested in Python 3.4 and 3.5. If you try a different version of Python 3 and find a problem, please report it as an Issue. There is an incomplete legacy branch for those who must run in Python 2.
We recommend the Anaconda distribution of Python 3.5. It comes with additional tools like the powerful IPython interpreter, the Jupyter Notebook and many helpful packages for scientific computing. After installing Anaconda, you will be good to go to run all the code and all the IPython notebooks.
The IPython notebooks in this repository explain how to use the modules, and give examples of usage. You can use them in three ways:
gitcommands), start a Jupyter notebook server with the shell command "
jupyter notebook" (issued from the directory where the files are), and click on the notebook you want to interact with.)
In :from logic import *
From there, the notebook alternates explanations with examples of use. You can run the examples as they are, and you can modify the code cells (or add new cells) and run your own examples. If you have some really good examples to add, you can make a github pull request.
If you want to see the source code of a function, you can open a browser or editor and see it in another window, or from within the notebook you can use the IPython magic funtion
%psource (for "print source"):
In :%psource WalkSAT
Or see an abbreviated description of an object with a trainling question mark: