m (→Books) Tags: Visual edit apiedit |
mNo edit summary Tag: Visual edit |
||
(38 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | This page contains resources about [https://en.wikipedia.org/wiki/Algorithm Algorithms] in general. |
+ | This page contains resources about [https://en.wikipedia.org/wiki/Algorithm Algorithms] and [https://en.wikipedia.org/wiki/Theory_of_computation Theory of Computation] in general. |
More specific information is included in each subfield. |
More specific information is included in each subfield. |
||
Line 5: | Line 5: | ||
==Subfields and Concepts== |
==Subfields and Concepts== |
||
''See [http://kourouklides.wikia.com/wiki/Category:Algorithms Category:Algorithms] for some of its subfields.'' |
''See [http://kourouklides.wikia.com/wiki/Category:Algorithms Category:Algorithms] for some of its subfields.'' |
||
+ | |||
+ | === Elementary topics=== |
||
+ | ''(It includes topics of [[International Olympiad in Informatics]] and some others)'' |
||
⚫ | |||
* Sorting Algorithms |
* Sorting Algorithms |
||
+ | ** Simple sorts |
||
+ | *** Insertion sort |
||
+ | *** Selection sort |
||
+ | ** Efficient sorts |
||
+ | *** Merge sort |
||
+ | *** Heapsort |
||
+ | *** Quicksort |
||
+ | ** Bubble sort and variants |
||
+ | *** Bubble sort |
||
+ | *** Shellsort |
||
+ | *** Comb sort |
||
+ | ** Distribution sort |
||
+ | *** Counting sort |
||
+ | *** Bucket sort |
||
+ | *** Radix sort |
||
* Search Algorithms |
* Search Algorithms |
||
+ | ** Breadth First Search (BFS) |
||
⚫ | |||
+ | ** Depth First Search (DFS) |
||
+ | *[[Graph Theory|Graph]] and Tree Algorithms |
||
+ | ** Minimum Spanning Tree |
||
⚫ | |||
⚫ | |||
+ | * [[Cryptography |Number Theory and Cryptography Algorithms]] |
||
+ | ** Chinese Remainder Theorem |
||
+ | |||
+ | === Advanced Topics === |
||
+ | * [[Quantum Computation|Quantum Algorithms]] |
||
+ | * [[Game Theory|Game Theory Algorithms]] |
||
* [[Optimization |Optimization Algorithms]] |
* [[Optimization |Optimization Algorithms]] |
||
+ | ** [[Evolutionary Computation]] |
||
⚫ | |||
+ | ** Greedy Algorithms |
||
+ | ** Dynamic Programming / Optimal [[Control Theory|Control]] |
||
+ | ** Linear Programming |
||
+ | ** Travelling Salesman Problem (TSP) |
||
+ | * Shortest Path Problem |
||
+ | ** Dijkstra's Algorithm |
||
+ | ** Bellman–Ford Algorithm |
||
+ | ** A* search Algorithm |
||
+ | ** Floyd–Warshall Algorithm |
||
+ | ** Johnson's Algorithm |
||
+ | ** Viterbi Algorithm |
||
* [[Machine Learning|Machine Learning Algorithms]] |
* [[Machine Learning|Machine Learning Algorithms]] |
||
+ | * [[Statistical Learning Theory|Learning Theory]] |
||
⚫ | |||
+ | ** Computational Learning Theory |
||
− | * Regular Expressions |
||
+ | ** Statistical Learning Theory |
||
+ | ** Algorithmic Learning Theory |
||
+ | * [[Information Theory|Data Compression Algorithms]] |
||
* Algorithms on Strings |
* Algorithms on Strings |
||
* [[Digital Signal Processing|Digital Signal Processing Algorithms]] |
* [[Digital Signal Processing|Digital Signal Processing Algorithms]] |
||
+ | ** [[Digital Image Processing|Digital Image Processing Algorithms]] |
||
− | ** Fast Fourier Transform |
||
+ | * Algorithmic [[Information Theory]] |
||
− | ** Discrete Hilbert Transform |
||
+ | ** Kolmogorov Complexity / Algorithmic Complexity |
||
− | ** Spectral Peak Location Algorithm |
||
+ | ** Algorithmic Probability / Solomonoff Probability |
||
− | ** Frequency Demodulation Algorithm |
||
+ | ** Universal Search (by Levin) |
||
⚫ | |||
+ | ** Algorithmic Randomness (by Martin-Lof) |
||
− | |||
+ | ** Solomonoff's Theory of Inductive Inference |
||
− | * NP-Completeness |
||
+ | ** Epicurus' Principle of Multiple Explanations |
||
+ | ** Occam's Razor |
||
+ | ** Bayes rule |
||
+ | * NP-Completeness and Approximation Algorithms |
||
+ | * External Memory Algorithms |
||
⚫ | |||
+ | * Semantics (of Programming Languages) |
||
+ | * Computational Complexity Theory |
||
+ | ** Space Complexity |
||
+ | ** Time Complexity |
||
+ | ** Intractability |
||
+ | * Computability Theory / Recursion Theory |
||
+ | ** Church-Turing Thesis |
||
+ | ** Decidability |
||
+ | ** Reducibility |
||
+ | * Models of Computation |
||
+ | ** Sequential Models (e.g. Turing Machine) |
||
+ | ** Functional Models (e.g. Cellular Automata) |
||
+ | ** Concurrent Models (e.g. Petri Nets) |
||
+ | * Automata Theory |
||
+ | ** Turing Machine |
||
+ | ** Linear Bounded Automaton (LBA) |
||
+ | ** Finite State Machine (FSM) / Finite State Automaton (FSA) |
||
+ | ** Pushdown Automaton (PDA) |
||
+ | * (Formal) Grammars |
||
+ | ** Type-0 / Recursively enumerable |
||
+ | ** Type-1 / Context-sensitive |
||
+ | ** Type-2 / Context-free |
||
+ | ** Type-3 / Regular |
||
+ | * Formal Language Theory |
||
==Online Courses== |
==Online Courses== |
||
===Video Lectures=== |
===Video Lectures=== |
||
+ | * [https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/lecture-videos/ Introduction to Algorithms by Erik Devaine and Srinivas Devadas] |
||
− | * |
||
===Lecture Notes=== |
===Lecture Notes=== |
||
+ | * [http://www.cs.duke.edu/courses/fall10/cps130/lectures.html Algorithms by Piotr Idyk] |
||
− | * |
||
+ | * [http://jeffe.cs.illinois.edu/teaching/algorithms/ Algorithms by Jeff Erickson] |
||
+ | * [https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2012/index.htm Design and Analysis of Algorithms by Dana Moshkovitz and Bruce Tidor] |
||
+ | * [https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-045j-automata-computability-and-complexity-spring-2011/index.htm Automata, Computability and Complexity by Scott Aaronson] |
||
+ | * [http://cglab.ca/~michiel/TheoryOfComputation/TheoryOfComputation.pdf Introduction to Theory of Computation by Anil Maheshwari and Michiel Smid] |
||
==Books== |
==Books== |
||
+ | ''See also [https://en.wikipedia.org/wiki/Theory_of_computation#Further_reading Further Reading].'' |
||
+ | *Davis, M., Sigal, R., & Weyuker, E. J. (1994). ''Computability, Complexity, and Languages: Fundamentals of Theoretical Computer Science''. 2nd Ed. Morgan Kaufmann. |
||
+ | *Lewis, H. R., & Papadimitriou, C. H. (1997). ''Elements of the Theory of Computation''. 2nd Ed. Prentice Hall. |
||
+ | *Savage, J. E. (1998). ''Models of Computation''. Addison-Wesley. ([http://cs.brown.edu/people/jsavage/book/pdfs/ModelsOfComputation.pdf link]) |
||
+ | *Skiena, S. S., & Revilla, M. A. (2003). ''Programming Challenges: The Programming Contest Training Manual''. Springer Science & Business Media. |
||
+ | *Hopcroft, J. E., Motwani, R., & Ullman, J. D. (2006). ''Introduction to Automata Theory, Languages, and Computation''. 3rd Ed. Pearson. |
||
*Cormen, T. H. (2009). ''Introduction to Algorithms''. 3rd Ed. MIT Press. |
*Cormen, T. H. (2009). ''Introduction to Algorithms''. 3rd Ed. MIT Press. |
||
+ | *Fernandez, M. (2009). ''Models of Computation: An Introduction to Computability Theory''. Springer. |
||
*Sedgewick, R. (2011). ''Algorithms''. 4th Ed. Pearson Education. |
*Sedgewick, R. (2011). ''Algorithms''. 4th Ed. Pearson Education. |
||
+ | *Knuth, D. E. (2011). ''The Art of Computer Programming, Volumes 1-4A''. Addison-Wesley Professional. |
||
+ | *Sipser, M. (2012). ''Introduction to the Theory of Computation''. 3rd Ed. Cengage Learning. |
||
+ | *Linz, P. (2016). ''An Introduction to Formal Languages and Automata''. 6th Ed. Jones & Bartlett Publishers. |
||
==Software== |
==Software== |
||
+ | * [http://www.sanfoundry.com/1000-cpp-algorithms-problems-programming-examples/ C++ Algorithms, Problems & Programming Examples] |
||
− | * |
||
+ | * [https://www.codeproject.com/Articles/177363/Searching-and-Sorting-Algorithms-via-C Searching and Sorting Algorithms via C#] |
||
+ | * [https://github.com/aalhour/C-Sharp-Algorithms C-Sharp-Algorithms] - Github |
||
+ | * [https://github.com/OmkarPathak/pygorithm pygorithm] - Python (Github) |
||
+ | * [https://github.com/TheAlgorithms TheAlgorithms] - C++, Python, Java, C#, C, Scala, Go, Javascript, Ruby (Github) |
||
+ | * [http://codeforces.com/blog/entry/14328 EZ Collections, EZ Life] - Java |
||
+ | * [https://github.com/SuprDewd/CompetitiveProgramming CompetitiveProgramming] - C++ (Github) |
||
==See also== |
==See also== |
||
+ | *[[International Olympiad in Informatics]] |
||
⚫ | |||
− | * |
||
==Other Resources== |
==Other Resources== |
||
+ | * [https://scholar.google.com/citations?view_op=top_venues&hl=en&vq=eng_theoreticalcomputerscience Theoretical Computer Science] - Google Scholar Metrics (Top Publications) |
||
⚫ | |||
+ | * [http://www.scholarpedia.org/article/Algorithmic_information_theory - Algorithmic Information Theory] - Scholarpedia |
||
+ | * [http://www.geeksforgeeks.org/top-algorithms-and-data-structures-for-competitive-programming/ Top 10 Algorithms and Data Structures for Competitive Programming] - Geeks for Geeks |
||
+ | * [https://www.geeksforgeeks.org/theory-of-computation-automata-tutorials/ Theory Of Computation and Automata Tutorials] - Geeks for Geeks |
||
+ | * [https://www.geeksforgeeks.org/dynamic-programming/ Dynamic Programming] - Geeks for Geeks |
||
+ | * [https://www.geeksforgeeks.org/traveling-salesman-problem-tsp-implementation/ Traveling Salesman Problem (TSP) Implementation] |
||
+ | * [https://github.com/lnishan/awesome-competitive-programming Awesome Competitive Programming] |
||
+ | * [https://www.hackerrank.com/domains/algorithms/ HackerRank - Algorithms challenges] |
||
+ | * [https://www.hackerearth.com HackerEarth] |
||
+ | |||
+ | [[Category:Algorithms]] |
||
+ | [[Category:Informatics Competitions]] |
||
+ | [[Category:Artificial Intelligence]] |
Revision as of 14:54, 28 April 2018
This page contains resources about Algorithms and Theory of Computation in general.
More specific information is included in each subfield.
Subfields and Concepts
See Category:Algorithms for some of its subfields.
Elementary topics
(It includes topics of International Olympiad in Informatics and some others)
- Divide and Conquer Algorithm
- Sorting Algorithms
- Simple sorts
- Insertion sort
- Selection sort
- Efficient sorts
- Merge sort
- Heapsort
- Quicksort
- Bubble sort and variants
- Bubble sort
- Shellsort
- Comb sort
- Distribution sort
- Counting sort
- Bucket sort
- Radix sort
- Simple sorts
- Search Algorithms
- Breadth First Search (BFS)
- Depth First Search (DFS)
- Graph and Tree Algorithms
- Minimum Spanning Tree
- Hashing Algorithms
- Randomized Algorithms
- Number Theory and Cryptography Algorithms
- Chinese Remainder Theorem
Advanced Topics
- Quantum Algorithms
- Game Theory Algorithms
- Optimization Algorithms
- Evolutionary Computation
- Genetic Algorithms
- Greedy Algorithms
- Dynamic Programming / Optimal Control
- Linear Programming
- Travelling Salesman Problem (TSP)
- Evolutionary Computation
- Shortest Path Problem
- Dijkstra's Algorithm
- Bellman–Ford Algorithm
- A* search Algorithm
- Floyd–Warshall Algorithm
- Johnson's Algorithm
- Viterbi Algorithm
- Machine Learning Algorithms
- Learning Theory
- Computational Learning Theory
- Statistical Learning Theory
- Algorithmic Learning Theory
- Data Compression Algorithms
- Algorithms on Strings
- Digital Signal Processing Algorithms
- Algorithmic Information Theory
- Kolmogorov Complexity / Algorithmic Complexity
- Algorithmic Probability / Solomonoff Probability
- Universal Search (by Levin)
- Algorithmic Randomness (by Martin-Lof)
- Solomonoff's Theory of Inductive Inference
- Epicurus' Principle of Multiple Explanations
- Occam's Razor
- Bayes rule
- NP-Completeness and Approximation Algorithms
- External Memory Algorithms
- Logic
- Semantics (of Programming Languages)
- Computational Complexity Theory
- Space Complexity
- Time Complexity
- Intractability
- Computability Theory / Recursion Theory
- Church-Turing Thesis
- Decidability
- Reducibility
- Models of Computation
- Sequential Models (e.g. Turing Machine)
- Functional Models (e.g. Cellular Automata)
- Concurrent Models (e.g. Petri Nets)
- Automata Theory
- Turing Machine
- Linear Bounded Automaton (LBA)
- Finite State Machine (FSM) / Finite State Automaton (FSA)
- Pushdown Automaton (PDA)
- (Formal) Grammars
- Type-0 / Recursively enumerable
- Type-1 / Context-sensitive
- Type-2 / Context-free
- Type-3 / Regular
- Formal Language Theory
Online Courses
Video Lectures
Lecture Notes
- Algorithms by Piotr Idyk
- Algorithms by Jeff Erickson
- Design and Analysis of Algorithms by Dana Moshkovitz and Bruce Tidor
- Automata, Computability and Complexity by Scott Aaronson
- Introduction to Theory of Computation by Anil Maheshwari and Michiel Smid
Books
See also Further Reading.
- Davis, M., Sigal, R., & Weyuker, E. J. (1994). Computability, Complexity, and Languages: Fundamentals of Theoretical Computer Science. 2nd Ed. Morgan Kaufmann.
- Lewis, H. R., & Papadimitriou, C. H. (1997). Elements of the Theory of Computation. 2nd Ed. Prentice Hall.
- Savage, J. E. (1998). Models of Computation. Addison-Wesley. (link)
- Skiena, S. S., & Revilla, M. A. (2003). Programming Challenges: The Programming Contest Training Manual. Springer Science & Business Media.
- Hopcroft, J. E., Motwani, R., & Ullman, J. D. (2006). Introduction to Automata Theory, Languages, and Computation. 3rd Ed. Pearson.
- Cormen, T. H. (2009). Introduction to Algorithms. 3rd Ed. MIT Press.
- Fernandez, M. (2009). Models of Computation: An Introduction to Computability Theory. Springer.
- Sedgewick, R. (2011). Algorithms. 4th Ed. Pearson Education.
- Knuth, D. E. (2011). The Art of Computer Programming, Volumes 1-4A. Addison-Wesley Professional.
- Sipser, M. (2012). Introduction to the Theory of Computation. 3rd Ed. Cengage Learning.
- Linz, P. (2016). An Introduction to Formal Languages and Automata. 6th Ed. Jones & Bartlett Publishers.
Software
- C++ Algorithms, Problems & Programming Examples
- Searching and Sorting Algorithms via C#
- C-Sharp-Algorithms - Github
- pygorithm - Python (Github)
- TheAlgorithms - C++, Python, Java, C#, C, Scala, Go, Javascript, Ruby (Github)
- EZ Collections, EZ Life - Java
- CompetitiveProgramming - C++ (Github)
See also
Other Resources
- Theoretical Computer Science - Google Scholar Metrics (Top Publications)
- - Algorithmic Information Theory - Scholarpedia
- Top 10 Algorithms and Data Structures for Competitive Programming - Geeks for Geeks
- Theory Of Computation and Automata Tutorials - Geeks for Geeks
- Dynamic Programming - Geeks for Geeks
- Traveling Salesman Problem (TSP) Implementation
- Awesome Competitive Programming
- HackerRank - Algorithms challenges
- HackerEarth