Add content for common algorithms in computer science roadmap

pull/2902/head
Kamran Ahmed 2 years ago
parent 2b4dede970
commit 09b95f30d7
  1. 1
      content/roadmaps/101-backend/content/103-learn-a-language/100-go.md
  2. 1
      content/roadmaps/103-computer-science/content/101-pick-a-language/104-go.md
  3. 10
      content/roadmaps/103-computer-science/content/104-common-algorithms/105-back-tracking-algorithms/100-finding-hamiltonian-paths.md
  4. 9
      content/roadmaps/103-computer-science/content/104-common-algorithms/105-back-tracking-algorithms/101-solving-n-queen-problem.md
  5. 10
      content/roadmaps/103-computer-science/content/104-common-algorithms/105-back-tracking-algorithms/102-maze-solving-problem.md
  6. 10
      content/roadmaps/103-computer-science/content/104-common-algorithms/105-back-tracking-algorithms/103-knights-tour-problem.md
  7. 8
      content/roadmaps/103-computer-science/content/104-common-algorithms/105-back-tracking-algorithms/readme.md
  8. 11
      content/roadmaps/103-computer-science/content/104-common-algorithms/106-robin-karp-algorithm.md
  9. 8
      content/roadmaps/103-computer-science/content/104-common-algorithms/107-recursion/100-tail-recursion.md
  10. 12
      content/roadmaps/103-computer-science/content/104-common-algorithms/107-recursion/101-non-tail-recursion.md
  11. 12
      content/roadmaps/103-computer-science/content/104-common-algorithms/107-recursion/readme.md
  12. 10
      content/roadmaps/103-computer-science/content/104-common-algorithms/108-search-algorithms/100-binary-search.md
  13. 7
      content/roadmaps/103-computer-science/content/104-common-algorithms/108-search-algorithms/101-linear-search.md
  14. 8
      content/roadmaps/103-computer-science/content/104-common-algorithms/108-search-algorithms/readme.md
  15. 9
      content/roadmaps/103-computer-science/content/104-common-algorithms/109-cache-algorithms/100-lru-cache.md
  16. 8
      content/roadmaps/103-computer-science/content/104-common-algorithms/109-cache-algorithms/101-lfu-cache.md
  17. 8
      content/roadmaps/103-computer-science/content/104-common-algorithms/109-cache-algorithms/102-mfu-cache.md
  18. 8
      content/roadmaps/103-computer-science/content/104-common-algorithms/109-cache-algorithms/readme.md
  19. 1
      content/roadmaps/108-python/content/101-data-structures-and-algorithms/103-binary-search-trees.md

@ -13,7 +13,6 @@ Go is an open source programming language supported by Google. Go can be used to
<BadgeLink badgeText='Read' colorScheme="yellow" href='https://go.dev/tour/welcome/1'>A Tour of Go – Go Basics</BadgeLink>
<BadgeLink badgeText='Read' colorScheme="yellow" href='https://go.dev/doc/'>Go Reference Documentation</BadgeLink>
<BadgeLink badgeText='Read' colorScheme="yellow" href='https://gobyexample.com/'>Go by Example - annotated example programs</BadgeLink>
<BadgeLink colorScheme='green' badgeText='Course' href='https://boot.dev/learn/learn-golang'>Learn Go | Boot.dev </BadgeLink>
<BadgeLink colorScheme='green' badgeText='Course' href='https://www.codecademy.com/learn/learn-go'>Learn Go | Codecademy</BadgeLink>
<BadgeLink colorScheme='green' badgeText='Course' href='https://www.w3schools.com/go/'>W3Schools Go Tutorial </BadgeLink>
<BadgeLink badgeText='Read' colorScheme="yellow" href='https://thenewstack.io/make-a-restful-json-api-go/'>Making a RESTful JSON API in Go</BadgeLink>

@ -13,7 +13,6 @@ Go is an open source programming language supported by Google. Go can be used to
<BadgeLink badgeText='Read' colorScheme="yellow" href='https://go.dev/tour/welcome/1'>A Tour of Go – Go Basics</BadgeLink>
<BadgeLink badgeText='Read' colorScheme="yellow" href='https://go.dev/doc/'>Go Reference Documentation</BadgeLink>
<BadgeLink badgeText='Read' colorScheme="yellow" href='https://gobyexample.com/'>Go by Example - annotated example programs</BadgeLink>
<BadgeLink colorScheme='green' badgeText='Course' href='https://boot.dev/learn/learn-golang'>Learn Go | Boot.dev </BadgeLink>
<BadgeLink colorScheme='green' badgeText='Course' href='https://www.codecademy.com/learn/learn-go'>Learn Go | Codecademy</BadgeLink>
<BadgeLink colorScheme='green' badgeText='Course' href='https://www.w3schools.com/go/'>W3Schools Go Tutorial </BadgeLink>
<BadgeLink badgeText='Read' colorScheme="yellow" href='https://thenewstack.io/make-a-restful-json-api-go/'>Making a RESTful JSON API in Go</BadgeLink>

@ -1 +1,9 @@
# Finding hamiltonian paths
# Finding Hamiltonian Paths
Hamiltonian paths are paths that visit every node in a graph exactly once. They are named after the famous mathematician [Hamilton](https://en.wikipedia.org/wiki/William_Rowan_Hamilton). Hamiltonian paths are a special case of [Hamiltonian cycles](https://en.wikipedia.org/wiki/Hamiltonian_cycle), which are cycles that visit every node in a graph exactly once.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.hackerearth.com/practice/algorithms/graphs/hamiltonian-path/tutorial/'>Hamiltonian Path</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.geeksforgeeks.org/hamiltonian-cycle-backtracking-6/'>Hamiltonian Cycle | Backtracking-6</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://medium.com/stamatics-iit-kanpur/hamiltonian-paths-and-cycles-4f233bfbc53a'>Hamiltonian Paths and Cycles</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://people.csail.mit.edu/virgi/6.s078/lecture17.pdf'>Hamiltonian Paths - Lecture 7</BadgeLink>

@ -1 +1,8 @@
# Solving n queen problem
# Solving n Queen Problem
N Queen Problem is a famous problem in Computer Science. It is a problem of placing n queens on an n x n chessboard such that no two queens attack each other. The problem is to find all possible solutions to the problem.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.digitalocean.com/community/tutorials/n-queens-problem-java-c-plus-plus'>N-Queens problem using backtracking in Java/C++</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.geeksforgeeks.org/n-queen-problem-backtracking-3/'>N Queen Problem | Backtracking-3</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=xFv_Hl4B83A'>6.1 N Queens Problem using Backtracking</BadgeLink>

@ -1 +1,9 @@
# Maze solving problem
# Maze Solving Problem
Maze solving problem is a classic problem in computer science. It is a problem where we have to find a path from a starting point to an end point in a maze. The maze is represented as a grid of cells. Each cell can be either a wall or a path. The path cells are connected to each other. The starting point and the end point are also given. The goal is to find a path from the starting point to the end point. The path can only be made up of path cells. The path cannot go through the wall cells.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://github.com/john-science/mazelib/blob/main/docs/MAZE_SOLVE_ALGOS.md'>Maze Solving Algorithms</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://kidscodecs.com/maze-solving-algorithms/'>Maze Solving Algorithms</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=rop0W4QDOUI'>Maze Solving - Computerphile</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=XP94WC_XnZc'>Python Maze Solving Tutorial (Using Recursion)</BadgeLink>

@ -1 +1,9 @@
# Knights tour problem
# Knight's Tour Problem
Knight's Tour Problem is a problem where we have to find a path for a knight to visit all the cells of a chessboard without visiting any cell twice.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.geeksforgeeks.org/the-knights-tour-problem-backtracking-1/'>The Knight’s tour problem | Backtracking-1</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://bradfieldcs.com/algos/graphs/knights-tour/'>Knight's Tour</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.codesdope.com/course/algorithms-knights-tour-problem/'>Knight's Tour Proble</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.codingninjas.com/codestudio/library/backtracking-the-knights-tour-problem'>Backtracking: The Knight’s Tour Problem</BadgeLink>

@ -1 +1,7 @@
# Back tracking algorithms
# Back Tracking Algorithm
Back tracking algorithms are used to solve problems that can be broken down into smaller sub-problems. The algorithm tries to solve each sub-problem and if it fails, it backtracks and tries to solve the sub-problem in a different way.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.geeksforgeeks.org/backtracking-algorithms'>Backtracking Algorithms</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.programiz.com/dsa/backtracking-algorithm'>Backtracking Algorithm</BadgeLink>

@ -1 +1,10 @@
# Robin karp algorithm
# Rabin-Karp's algorithm
Rabin-Karp algorithm is a string searching algorithm that uses hashing to find any one of a set of pattern strings in a text. For strings of average length `n`, it performs in `O(n+m)` time with `O(m)` space, where `m` is the length of the pattern. It is often used in bioinformatics to search for DNA patterns.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.coursera.org/lecture/data-structures/rabin-karps-algorithm-c0Qkw'>Rabin Karp's Algorithm</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation'>Optimization: Precomputation</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis'>Optimization: Implementation and Analysis</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9'>Lecture 9: Table Doubling, Karp-Rabin</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=33'>Rolling Hashes, Amortized Analysis</BadgeLink>

@ -1 +1,7 @@
# Tail recursion
# Tail Recursion
Tail recursion is a special kind of recursion where the recursive call is the very last thing in the function. It's a function that does not do anything at all after recursing.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad'>What is tail recursion? Why is it so bad?</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1'>Tail Recursion</BadgeLink>

@ -1 +1,11 @@
# Non tail recursion
# Non-tail recursion
Tail recursion is when a function can directly return the result of a recursive call - there are no outstanding operations, and there is no need for the call stack frame to be preserved. So it can be translated to a “goto with arguments”, and the stack usage will be constant.
In “non-tail recursion”, there are outstanding operations after the recursive call, and the stack frame cannot be nuked.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.quora.com/What-is-non-tail-recursion'>What is non-tail recursion?</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.baeldung.com/cs/tail-vs-non-tail-recursion'>Tail vs Non-Tail Recursion</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=IVLUGb_gDDE'>Recursion (Solved Problem 1)</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=HIt_GPuD7wk'>Types of Recursion (Part 2) | Tail & Non-tail Recursion</BadgeLink>

@ -1 +1,11 @@
# Recursion
# Recursion
Recursion is a method of solving problems where the solution depends on solutions to smaller instances of the same problem. A recursive algorithm must have a base case. A recursive algorithm calls itself, recursively.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=rf60MejMz3E'>Recursion in 100 Seconds</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=9'>Lecture 8 | Programming Abstractions (Stanford)</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=10'>Lecture 9 | Programming Abstractions (Stanford)</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=NdF1QDTRkck&list=PLFE6E58F856038C69&index=11'>Lecture 10 | Programming Abstractions (Stanford)</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=12'>Lecture 11 | Programming Abstractions (Stanford)</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=ngCos392W4w'>5 Simple Steps for Solving Any Recursive Problem</BadgeLink>

@ -1 +1,9 @@
# Binary search
# Binary Search
Binary search is a search algorithm that finds the position of a target value within a sorted array. Binary search compares the target value to the middle element of the array. If they are not equal, the half in which the target cannot lie is eliminated and the search continues on the remaining half, again taking the middle element to compare to the target value, and repeating this until the target value is found. If the search ends with the remaining half being empty, the target is not in the array.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=fDKIpRe8GW4&feature=youtu.be'>Binary Search in 4 Minutes</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=D5SrAga1pno'>Binary Search - CS50</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search'>Binary Search - Khan Academy</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.topcoder.com/thrive/articles/Binary%20Search'>Binary Search</BadgeLink>

@ -1 +1,6 @@
# Linear search
# Linear Search
Linear search is a very simple algorithm that is used to search for a value in an array. It sequentially checks each element of the array until a match is found or until all the elements have been searched.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.geeksforgeeks.org/linear-search/'>Linear Search Algorithm</BadgeLink>

@ -1 +1,7 @@
# Search algorithms
# Search Algorithms
Search algorithms are used to find a specific item in a collection of items. For example, if you have a list of names and you want to find a specific name, you can use a search algorithm to find that name.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.geeksforgeeks.org/searching-algorithms/'>Searching Algorithms</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.freecodecamp.org/news/search-algorithms-linear-and-binary-search-explained/'>Search Algorithms – Linear Search and Binary Search</BadgeLink>

@ -1 +1,8 @@
# Lru cache
# LRU Cache
LRU cache is a cache that evicts the least recently used item first. It is a very common cache algorithm. It is used in many places, such as in the browser cache, the database cache, and the cache of the operating system.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=R5ON3iwx78M'>The Magic of LRU Cache (100 Days of Google Dev)</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=bq6N7Ym81iI'>Implementing LRU - Udacity</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=8-FZRAjR7qU'>LeetCode | 146 LRU Cache | C++ | Explanation</BadgeLink>

@ -1 +1,7 @@
# Lfu cache
# LFU Cache
LFU Cache is a data structure that stores key-value pairs. It has a fixed size and when it is full, it removes the least frequently used key-value pair. It is a variation of the LRU Cache and is used in many applications such as caching web pages, caching database queries, and caching images.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.geeksforgeeks.org/least-frequently-used-lfu-cache-implementation/'>Least Frequently Used (LFU) Cache Implementation</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://jojozhuang.github.io/algorithm/data-structure-lfu-cache/'>1117. Data Structure - LFU Cache</BadgeLink>

@ -1 +1,7 @@
# Mfu cache
# MFU Cache
MFU Cache is a variation of the LRU Cache. The difference is that instead of deleting the least recently used entry, the MFU Cache deletes the least frequently used entry.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://stackoverflow.com/questions/13597246/comparison-of-mfu-and-lru-page-replacement-algorithms'>Comparison of MFU and LRU page replacement algorithms</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://stackoverflow.com/questions/5088128/why-does-cache-use-most-recently-used-mru-algorithm-as-evict-policy'>Why does cache use Most Recently Used (MRU) algorithm as evict policy?</BadgeLink>

@ -1 +1,7 @@
# Cache algorithms
# Cache Algorithms
Cache algorithms are used to manage the cache memory of a computer. Cache memory is a small amount of memory that is used to store data that is frequently accessed. This allows the computer to access the data faster than if it had to go to the main memory. Cache algorithms are used to determine which data should be stored in the cache memory and which data should be removed from the cache memory.
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://dev.to/satrobit/cache-replacement-algorithms-how-to-efficiently-manage-the-cache-storage-2ne1'>Cache Replacement Algorithms: How To Efficiently Manage The Cache Storage</BadgeLink>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=xDKnMXtZKq8'>14. Caching and Cache-Efficient Algorithms</BadgeLink>

@ -4,7 +4,6 @@ A binary search tree, also called an ordered or sorted binary tree, is a rooted
<ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='red' badgeText='Watch' href='https://www.youtube.com/watch?v=S2W3SXGPVyU'>Tree Data Structure | Illustrated Data Structures</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://blog.boot.dev/computer-science/binary-search-tree-in-python/'>Writing a Binary Search Tree in Python with Examples</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.section.io/engineering-education/implementing-binary-search-tree-using-python/'>How to Implement Binary Search Tree in Python</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.geeksforgeeks.org/binary-search-tree-data-structure/?ref=gcse'>Problem Set</BadgeLink>

Loading…
Cancel
Save