A guide covering Data Structures and Algorithms such as Neural networks, MLPs, Arrays, Linked Lists, Trees, Hashtables, Stacks, Queues, Heaps, Graphs, Sorting & Searching, and Dynamic programming.
Note: You can easily convert this markdown file to a PDF in VSCode using this handy extension Markdown PDF.
Algorithm is a procedure of well-defined, computer implementabled instructions, typically to solve a class of specific problems or to perform a computation task such as data processing, automated reasoning, and machine learning.
Data Structure is a specific way to store and organize data in a computer's memory so that these data can be used efficiently later. Data may be arranged in many different ways, such as the logical or mathematical model for a particular organization of data is termed as a data structure.
VisualGo: Visualising data structures and algorithms through animation
Data Structure & Algorithms Visualizations
Learning Data Structures and Algorithms courses on Coursera
Learning Data Structures and Algorithms courses on Udemy
Learning Data Structures and Algorithms courses on edX
Intro to Data Structures and Algorithms courses on Udacity
Learning Algorithms courses on Khan Academy
Data Structures and Algorithms course from Harvard University
Data Structures and Algorithms course from Standford University(CS 166)
Learning Data Structures and Algorithms on CodeChef
Learning Algorithms and Data Structures courses on Pluralsight
Data structure and algorithms online course on Learnbay.io
Fuzzy logic is a heuristic approach that allows for more advanced decision-tree processing and better integration with rules-based programming.
Architecture of a Fuzzy Logic System. Source: ResearchGate
Support Vector Machine (SVM) is a supervised machine learning model that uses classification algorithms for two-group classification problems.
Support Vector Machine (SVM). Source:OpenClipArt
Neural networks are a subset of machine learning and are at the heart of deep learning algorithms. The name/structure is inspired by the human brain copying the process that biological neurons/nodes signal to one another.
Neural Networks Toplogies. Source: Fjodor van Veen from Asimov institute.
Deep neural network. Source: IBM
Convolutional Neural Networks (R-CNN) is an object detection algorithm that first segments the image to find potential relevant bounding boxes and then run the detection algorithm to find most probable objects in those bounding boxes.
Convolutional Neural Networks. Source: CS231n
Recurrent neural networks (RNNs) is a type of artificial neural network which uses sequential data or time series data.
Recurrent Neural Networks. Source: Slideteam
Multilayer Perceptrons (MLPs) is multi-layer neural networks composed of multiple layers of perceptrons with a threshold activation.
Multilayer Perceptrons. Source: DeepAI
Random forest is a commonly-used machine learning algorithm, which combines the output of multiple decision trees to reach a single result. A decision tree in a forest cannot be pruned for sampling and therefore, prediction selection. Its ease of use and flexibility have fueled its adoption, as it handles both classification and regression problems.
Random forest. Source: wikimedia
Decision trees are tree-structured models for classification and regression.
*Decision Trees. Source: CMU
Naive Bayes is a machine learning algorithm that is used solved calssification problems. It's based on applying Bayes' theorem with strong independence assumptions between the features.
Bayes' theorem. Source: mathisfun
Graph Algorithms
- Breadth First Search (BFS)
- Depth First Search (DFS)
- Shortest Path from source to all vertices Dijkstra
- Shortest Path from every vertex to every other vertex Floyd Warshall
- Minimum Spanning tree Prim
- Minimum Spanning tree Kruskal
- Topological Sort
- Articulation Points (Cut Vertices) in a Graph
- Bridges in a graph
Searching And Sorting
- Binary Search
- Quick Sort
- Merge Sort
- Order Statistics
- KMP algorithm
- Rabin karp
- Z’s algorithm
- String Matching/String Parsing
- Counting Sort
Dynamic Programming
- Longest Common Subsequence
- Longest Increasing Subsequence
- Edit Distance
- Minimum Partition
- Ways to Cover a Distance
- Longest Path In Matrix
- Subset Sum Problem
- Optimal Strategy for a Game
- 0-1 Knapsack Problem
- Assembly Line Scheduling
- Big O Notation
- Time Complexity
- Space Complexity
Order of growth of algorithms specified in Big-O notation. Source: Big-O Cheat Sheet
Complexity of operations on Data Structures. Source: Big-O Cheat Sheet
Complexity of Sorting algorithms. Source: Big-O Cheat Sheet
Arrays are a series of elements(numbers, booleans, or strings) of the same type placed in phyiscal memory locations that can be individually referenced by adding an index to a unique identifier.
- Vector is a dynamic array, where the size can be increased when an element is inserted or deleted, with the storage being handled automatically by the container.
Linked Lists is a linear collection of data elements whose order is not given by their physical placement in memory. Instead, elements in a linked list are linked using pointers.
-
Singly Linked List is a type of linked data structure where each node points to the next node in the sequence. It does not have any pointer that points to the previous node.
-
Doubly-Linked List is a type of linked data structure in which each node apart from storing its data has two links. A node consists of three parts: node data, a pointer to the next node in sequence (next pointer), pointer to the previous node (previous pointer).
Trees is a nonlinear data structure unlike arrays, linked lists, stacks and queues which are linear data structures. A tree can be empty with no nodes or in other instances a tree's structure consists of one node called the root and 0 or 1 or more subtrees.
- Basic Tree
- Binary Tree
- Binary Search Tree
- AVL Tree
- Red-Black Tree
- N-ary Tree
Hash Tables are a data structure, much like an array, except you store each value (object) using a key. It is a basic key/value store for mapping known as a hash function.
Stacks is a linear data structure that store data in an order known as the Last In First Out (LIFO) order.
- LIFO (Last In First Out)
- FILO (First In Last Out)
Queues is a linear data structure that stores data in an order known as the First In First Out(FIFO) order.
Heaps is a specialized tree-based data structure which is essentially an almost complete tree that satisfies the heap property.
- Max Heap
- Min-Heap
- Binary Heap
Graphs is a data structure that represent relations between pairs of objects. It consists of nodes (known as vertices) that are connected through links (known as edges).
- If would you like to contribute to this guide simply make a Pull Request.
Distributed under the Creative Commons Attribution 4.0 International (CC BY 4.0) Public License.