# A.I Algortihms

### Here you can find a variety of AI techniques and approaches that are designed for different purposes and applications.

## Description

Artificial Intelligence, in contrary with natural intelligence which is how people think and solve problems, is the intelligence demonstrated by machines.

## Problem Solving

The ability to solve problems that arise, is a fundamental part of artificial intelligence. In other words, the ability any model has to demonstrate some form of intelligence is an important property to own. For instance, given a maze with some random obstacles, an intelligent model of any nature, should be able to recognize and avoid the obstacles while finding its way to its destination.

For the automation of this procedure, there are search algorithms, which given a brief understanding of the problem state, they search for a solution. Given a problem and a description of its state space, we want to find a solution. To achieve that, we have to apply a sequence of strictly predetermined steps, also known as algorithms. All algorithms that fall into that category, meaning they try to find a solution to a problem, are called search algorithms.

### Blind and Informed Search Algorithms

- Romania map path finder implementing various search algorithms
- Maze solver using the A* search algorithm

### Two-person Games Search

- Tic Tac Toe game using minimax and alpha-beta prunning

### Constraint Satisfaction Problems

- Coloring the map of Australia using backtracking
- N-Queens Problem using backtracking and MRV

### Genetic Algorithms

- Traveling salesman Problem

## Machine Learning

Machine learning is a subset of Artificial Intelligence. It is the study of algorithms and statistical models that various computer systems use in order to perform a task without any implicit instructions.

### Optimization

In machine learning, we need some form of optimization techniques, one of them being an algorithm commonly used, called gradient descent.

- Gradient Descent

### Supervised Learning

#### Classification / Regression

- Linear Regression (Used for regression analysis)
- K-Nearest Neighbors (Used for classification and regression)
- Support Vector Machines (Used for classification and regression)
- Naive Bayes (Used for classification)

#### Artificial Neural Networks

Artificial neural networks (ANNs) are tools widely used in machine learning. They are brain inspired algorithms which replicate the way human beings think and learn. They consist of layers which are called input, hidden and output layers respectively. Deep neural networks usually include a lot of hidden layers (more than one) to produce far more reliable results and improve the learning process.

- Perceptron
- Multilayer Perceptron

### Unsupervised Learning

#### Clustering

- k-means
- Partition Around Medoids (PAM)
- Mean shift
- Fuzzy c-means
- Self Organizing Maps (SOM)
- Kernel k-means

### Reinforcement Learning

Reinforcement learning (RL) is a subset of machine learning that makes use of software agents, which take actions in a given environment. Their goal is to maximize a cumulative reward.

- Q-Learning