## Coding an Unbeatable Tic Tac Toe AI

This post talks about the minimax decision making algorithm and includes a scala implementation of a tic-tac-toe-playing AI that uses minimax.

## Graphs: Dijkstra’s Algorithm

Dijkstra’s algorithm is a very useful tool to find the shortest distance between any two nodes in a weighted graph. For now we will stick to an explanation of the algorithm, which will be short and to-the-point in keeping with the function of the algorithm.

## Breadth First Traversal

This is an algorithm used to traverse a graph consisting of nodes and edges. In this, we traverse a graph “breadth-wise”. This means we visit all the nodes of the graph by going down the different levels of the graph. However, this poses a problem.

## Reinforcement Learning: Value Iteration

In this post, we shall discuss the working of a reinforcement learning model and create our own reinforcement learning model in python, trained to play a game of Gridworld.

## Smurf Paths Dunjudge Editorial

An editorial to a interesting problem present on dunjudge. It involves the fantastic use of graphs along with segment tree.

## Graphs: An Overview

A graph is a data structure composed of nodes(vertices) and edges. Simple, I know. Not enough to …..

## Depth First Traversal

This is an algorithm that is used to traverse a graph Depth-wise. We move forward in depth and visit all the adjacent nodes of a given starting node.

## Merge Sort

This is also a kind of divide and conquer algorithm where we divide the array into two parts and then call the same function on the two parts and finally merge the sorted halves.

## Brute Force Attack

This post discusses the basic cryptographic concept of a brute force attack aimed at guessing a password and includes a python implementation of a brute force attack to gain access to a protected file.

## Selection Sort

This is a basic sorting algorithm which repeatedly finds the smallest number and replaces it with the number on the first index, then the second index and so on.