Git Product home page Git Product logo

algorithms-and-data-structures's Introduction


Algorithms & Data Structures Guide

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.


Table of Contents

  1. Algorithms & Data Structures Learning Resources

  2. Algorithms

  3. Algorithmic Complexity Analysis

  4. Data Structures

Algorithms & Data Structures Learning Resources

Back to the Top

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

Discrete Probability

Mathematical Proofs

Algorithms

Back to the Top

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

Algorithmic Complexity Analysis

Back to the Top

  • 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

Data Structures

Back to the Top

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).

Contribute

  • If would you like to contribute to this guide simply make a Pull Request.

License

Back to the Top

Distributed under the Creative Commons Attribution 4.0 International (CC BY 4.0) Public License.

algorithms-and-data-structures's People

Contributors

mikeroyal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.