Giter Club home page Giter Club logo

introduction-to-algorithms-go's Introduction

Repository for functions mentioned in this book

  • Preface
  • I Foundations
    • Introduction
    • 1 The Role of Algorithms in Computing
      • 1.1 Algorithms
      • 1.2 Algorithms as a technology
    • 2 Getting Started
    • 3 Characterizing Running Times
      • 3.1 O-notation, Ω-notation, and Θ-notation
      • 3.2 Asymptotic notation: formal definitions
      • 3.3 Standard notations and common functions
    • 4 Divide-and-Conquer
      • 4.1 Multiplying square matrices
      • 4.2 Strassen’s algorithm for matrix multiplication
      • 4.3 The substitution method for solving recurrences
      • 4.4 The recursion-tree method for solving recurrences
      • 4.5 The master method for solving recurrences
      • 4.6 Proof of the continuous master theorem
      • 4.7 Akra-Bazzi recurrences
    • 5 Probabilistic Analysis and Randomized Algorithms
      • 5.1 The hiring problem
      • 5.2 Indicator random variables
      • 5.3 Randomized algorithms
      • 5.4 Probabilistic analysis and further uses of indicator random variables
  • II Sorting and Order Statistics
    • Introduction
    • 6 Heapsort
      • 6.1 Heaps
      • 6.2 Maintaining the heap property
      • 6.3 Building a heap
      • 6.4 The heapsort algorithm
      • 6.5 Priority queues
    • 7 Quicksort
      • 7.1 Description of quicksort
      • 7.2 Performance of quicksort
      • 7.3 A randomized version of quicksort
      • 7.4 Analysis of quicksort
    • 8 Sorting in Linear Time
      • 8.1 Lower bounds for sorting
      • 8.2 Counting sort
      • 8.3 Radix sort
      • 8.4 Bucket sort
    • 9 Medians and Order Statistics
      • 9.1 Minimum and maximum
      • 9.2 Selection in expected linear time
      • 9.3 Selection in worst-case linear time
  • III Data Structures
    • Introduction
    • 10 Elementary Data Structures
      • 10.1 Simple array-based data structures: arrays, matrices, stacks, queues
      • 10.2 Linked lists
      • 10.3 Representing rooted trees
    • 11 Hash Tables
      • 11.1 Direct-address tables
      • 11.2 Hash tables
      • 11.3 Hash functions
      • 11.4 Open addressing
      • 11.5 Practical considerations
    • 12 Binary Search Trees
      • 12.1 What is a binary search tree?
      • 12.2 Querying a binary search tree
      • 12.3 Insertion and deletion
    • 13 Red-Black Trees
      • 13.1 Properties of red-black trees
      • 13.2 Rotations
      • 13.3 Insertion
      • 13.4 Deletion
  • IV Advanced Design and Analysis Techniques
    • Introduction
    • 14 Dynamic Programming
      • 14.1 Rod cutting
      • 14.2 Matrix-chain multiplication
      • 14.3 Elements of dynamic programming
      • 14.4 Longest common subsequence
      • 14.5 Optimal binary search trees
    • 15 Greedy Algorithms
      • 15.1 An activity-selection problem
      • 15.2 Elements of the greedy strategy
      • 15.3 Huffman codes
      • 15.4 Offline caching
    • 16 Amortized Analysis
      • 16.1 Aggregate analysis
      • 16.2 The accounting method
      • 16.3 The potential method
      • 16.4 Dynamic tables
  • V Advanced Data Structures
    • Introduction
    • 17 Augmenting Data Structures
      • 17.1 Dynamic order statistics
      • 17.2 How to augment a data structure
      • 17.3 Interval trees
    • 18 B-Trees
      • 18.1 Definition of B-trees
      • 18.2 Basic operations on B-trees
      • 18.3 Deleting a key from a B-tree
    • 19 Data Structures for Disjoint Sets
      • 19.1 Disjoint-set operations
      • 19.2 Linked-list representation of disjoint sets
      • 19.3 Disjoint-set forests
      • 19.4 Analysis of union by rank with path compression
  • VI Graph Algorithms
    • Introduction
    • 20 Elementary Graph Algorithms
      • 20.1 Representations of graphs
      • 20.2 Breadth-first search
      • 20.3 Depth-first search
      • 20.4 Topological sort
      • 20.5 Strongly connected components
    • 21 Minimum Spanning Trees
      • 21.1 Growing a minimum spanning tree
      • 21.2 The algorithms of Kruskal and Prim
    • 22 Single-Source Shortest Paths
      • 22.1 The Bellman-Ford algorithm
      • 22.2 Single-source shortest paths in directed acyclic graphs
      • 22.3 Dijkstra’s algorithm
      • 22.4 Difference constraints and shortest paths
      • 22.5 Proofs of shortest-paths properties
    • 23 All-Pairs Shortest Paths
      • 23.1 Shortest paths and matrix multiplication
      • 23.2 The Floyd-Warshall algorithm
      • 23.3 Johnson’s algorithm for sparse graphs
    • 24 Maximum Flow
      • 24.1 Flow networks
      • 24.2 The Ford-Fulkerson method
      • 24.3 Maximum bipartite matching
    • 25 Matchings in Bipartite Graphs
      • 25.1 Maximum bipartite matching (revisited)
      • 25.2 The stable-marriage problem
      • 25.3 The Hungarian algorithm for the assignment problem
  • VII Selected Topics
    • Introduction
    • 26 Parallel Algorithms
      • 26.1 The basics of fork-join parallelism
      • 26.2 Parallel matrix multiplication
      • 26.3 Parallel merge sort
    • 27 Online Algorithms
      • 27.1 Waiting for an elevator
      • 27.2 Maintaining a search list
      • 27.3 Online caching
    • 28 Matrix Operations
      • 28.1 Solving systems of linear equations
      • 28.2 Inverting matrices
      • 28.3 Symmetric positive-definite matrices and least-squares approximation
    • 29 Linear Programming
      • 29.1 Linear programming formulations and algorithms
      • 29.2 Formulating problems as linear programs
      • 29.3 Duality
    • 30 Polynomials and the FFT
      • 30.1 Representing polynomials
      • 30.2 The DFT and FFT
      • 30.3 FFT circuits
    • 31 Number-Theoretic Algorithms
      • 31.1 Elementary number-theoretic notions
      • 31.2 Greatest common divisor
      • 31.3 Modular arithmetic
      • 31.4 Solving modular linear equations
      • 31.5 The Chinese remainder theorem
      • 31.6 Powers of an element
      • 31.7 The RSA public-key cryptosystem
      • 31.8 Primality testing
    • 32 String Matching
      • 32.1 The naive string-matching algorithm
      • 32.2 The Rabin-Karp algorithm
      • 32.3 String matching with finite automata
      • 32.4 The Knuth-Morris-Pratt algorithm
      • 32.5 Suffix arrays
    • 33 Machine-Learning Algorithms
      • 33.1 Clustering
      • 33.2 Multiplicative-weights algorithms
      • 33.3 Gradient descent
    • 34 NP-Completeness
      • 34.1 Polynomial time
      • 34.2 Polynomial-time verification
      • 34.3 NP-completeness and reducibility
      • 34.4 NP-completeness proofs
      • 34.5 NP-complete problems
    • 35 Approximation Algorithms
      • 35.1 The vertex-cover problem
      • 35.2 The traveling-salesperson problem
      • 35.3 The set-covering problem
      • 35.4 Randomization and linear programming
      • 35.5 The subset-sum problem
  • VIII Appendix: Mathematical Background
    • Introduction
    • A Summations
      • A.1 Summation formulas and properties
      • A.2 Bounding summations
    • B Sets, Etc.
      • B.1 Sets
      • B.2 Relations
      • B.3 Functions
      • B.4 Graphs
      • B.5 Trees
      • Problems
      • Appendix notes
    • C Counting and Probability
      • C.1 Counting
      • C.2 Probability
      • C.3 Discrete random variables
      • C.4 The geometric and binomial distributions
      • C.5 The tails of the binomial distribution
      • Problems
      • Appendix notes
    • D Matrices
      • D.1 Matrices and matrix operations
      • D.2 Basic matrix properties
      • Problems
      • Appendix notes
  • Bibliography
  • Index

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.