# BeautifulAlgorithms.jl

Concise algorithms written in Julia and formatted with Carbon.

Algorithms for machine learning, optimization, reinforcement learning, online planning, decision making under uncertainty, and sorting. All implementations are working and self-contained; refer to the test cases.

`] add http://github.com/mossr/BeautifulAlgorithms.jl`

- Gradient descent
- Stochastic gradient descent
- Two-layer neural network
- Multi-layer neural network
- Loss functions
- Distance functions
- Nearest neighbor
- K-nearest neighbors
- K-means clustering
- The EM algorithm
- Linear regression
- Radial basis regression
- Cross-entropy method
- Finite difference methods
- Simulated annealing
- Twiddle
- Newton's method
- Gaussian process
- Thompson sampling
- Particle filter
- Value iteration
- Branch and bound
- Monte Carlo tree search
- Huffman coding
- Hailstone sequence (Collatz conjecture)
- Bubble sort
- Merge sort
- Insertion sort
- Bogo sort
- Quine

*Note: Algorithms are modified from their original sources.*

## Gradient descent

Percy Liang and Dorsa Sadigh, *Artificial Intelligence: Principles and Techniques*, Stanford University, 2019.

## Stochastic gradient descent

Percy Liang and Dorsa Sadigh, *Artificial Intelligence: Principles and Techniques*, Stanford University, 2019.

## Two-layer neural network

##### Two-layer neural network (one-liner)

## Multi-layer neural network

## Loss functions

## Distance functions

## Nearest neighbor

## K-nearest neighbors

## K-means clustering

Percy Liang and Dorsa Sadigh, *Artificial Intelligence: Principles and Techniques*, Stanford University, 2019.

## The EM algorithm

Andrew Ng, *Mixtures of Gaussians and the EM algorithm*, Stanford University, 2020.^{1}

## Linear regression

Mykel J. Kochenderfer and Tim A. Wheeler, *Algorithms for Optimization*, MIT Press, 2019.

## Radial basis regression

Mykel J. Kochenderfer and Tim A. Wheeler, *Algorithms for Optimization*, MIT Press, 2019.

## Cross-entropy method

Mykel J. Kochenderfer and Tim A. Wheeler, *Algorithms for Optimization*, MIT Press, 2019.

## Finite difference methods

Mykel J. Kochenderfer and Tim A. Wheeler, *Algorithms for Optimization*, MIT Press, 2019.

## Simulated annealing

Mykel J. Kochenderfer and Tim A. Wheeler, *Algorithms for Optimization*, MIT Press, 2019.

## Twiddle

Sebatian Thurn, *Artificial Intelligence for Robotics*, Udacity, 2012.

## Newton's method

John Wallis, *A Treatise of Algebra both Historical and Practical*, 1685.

## Gaussian process

Mykel J. Kochenderfer and Tim A. Wheeler, *Algorithms for Optimization*, MIT Press, 2019.

## Gaussian process kernels

## Thompson sampling

Daniel J. Russo, Benjamin Van Roy, Abbas Kazerouni, Ian Osband, and Zheng Wen, *A Tutorial on Thompson Sampling*, arXiv:1707.02038, 2020.

## Particle filter

Mykel J. Kochenderfer, Tim A. Wheeler, and Kyle H. Wray, *Algorithms for Decision Making*, Preprint.

## Value iteration

Mykel J. Kochenderfer, Tim A. Wheeler, and Kyle H. Wray, *Algorithms for Decision Making*, Preprint.

## Branch and bound

Mykel J. Kochenderfer, Tim A. Wheeler, and Kyle H. Wray, *Algorithms for Decision Making*, Preprint.

## Monte Carlo tree search

Mykel J. Kochenderfer, Tim A. Wheeler, and Kyle H. Wray, *Algorithms for Decision Making*, Preprint.

## Huffman coding

David A. Huffman, *A Method for the Construction of Minimum-Redundancy Codes*, IEEE, 1952.

## Hailstone sequence (Collatz conjecture)

## Bubble sort

Karey Shi, *Design and Analysis of Algorithms*, Stanford University, 2020.

## Merge sort

Karey Shi, *Design and Analysis of Algorithms*, Stanford University, 2020.

## Insertion sort

Karey Shi, *Design and Analysis of Algorithms*, Stanford University, 2020.

## Bogo sort

##### Bogo sort (one-liner)

## Quine

Nathan Daly, *Julia Discord*, 2019.^{2}

Written by Robert Moss.