This repository contains implementation of different AI algorithms, based on the amazing AI book Artificial Intelligence: A Modern Approach (4th edition, 2020).
- Search problems
- Uninformed search strategies:
- BFS, DFS, UCS, DLS, IDS
- Informed search strategies:
- Gready, A-star
- Uninformed search strategies:
Example: solving 8-puzzle using search algorithms.
- Local search:
- Hill climbing, Simulated Annealing, Genetic algorithms
Example solution found by simulated annealing for TSP problem (for 50 cities).
Example: solving 10-Queens using simulated annealing.
- Adversarial search and games
- MiniMax, alpha-beta pruning
- Object oriented programming in Python
- Using and defining special python methods (dunder methods).
- Immutable objects.
- Making an object hashable (implementing
__hash__()
and__eq__()
methods. - Implementing decortors in Python.
- Class methods and static methods.
__repr__()
and__str__()
methods.
- Machine learning
- Supervised learning:
- KNN, Naive Bayes, Desision Trees, SVM, Neural Nets
- Unsupervised learning:
- k-Means clustering
- Reinforcement learning
- Q-learning
- Supervised learning:
- Search:
- N-Puzzle, N-Queens, TSP
- Games:
- Pacman, Chess
- Learning:
- Pacman, Chess, etc.
- Implementing data structures like stack, queue and priority queue
- Implementing N-Puzzle (8-Puzzle)
- Implementing uninformed search strategies: BFS, DFS, UCS, DLS, IDS
- Programming assignment
- Implementing informed search strategies: Greedy, A-star
- Programming assignment
- Implementing N-Queens and TSP(a graphical implementation)
- Implementing local search strategies: hill climbing, simulated annealing and genetic algorithms
- Programming assignment
- Implementing Otello
- Implementing adversarial search algoritms: Minimax and alpha-beta prunning
- Programming assignment
- Basic knowledge of programming (Python)
- Basic knowledge of data structures and algorithms
- You will have a good understanding of basic AI techniques (solving problems using searching)
- You will become a real python programmer and most importantly a real programmer!
- You will see a lot of programming challenges and you will learn how to solve them