Algorithmics
Slowly moving (and improving) all content to this website
Data structures and common algorithms playground. As well as some theory notes. Only dependencies are STD library and MPI for parallel implementations. As always more an exercise for me to think their implementation rather than anything useful.
NOTE: Some theoretical content and ideas are from The Cherno YouTube channel. Likewise, other ideas are from this book.
More algorithm implementations on my LeetCode
Theory
- Complexity
- Bit manipulation
- Pointers
- Passing args to functions
- Memory Management
- C++ KeyWords
- Recursion
- Dynamic programming
- Competitive programming problems approach guide
Lists
Arrays
- Binary search (& variants)
- Bubble Sort (Serial)
- Heap Sort (Serial)
- Quick Sort (Serial)
- Merge Sort (Parallel)
Tree Traversal
Recursive
Iterative
- Pre-order DFS
- In-order DFS
- Post-order DFS
- BFS
Graph Search
Uninformed:
- BFS (Breath First Search)
- DFS (Depth First Search)
Informed:
Without heuristic:
- Dijkstra (Expand lowest acquisition_cost node)
Heuristic available:
- Greedy (Expand lowest heuristic node)
- A* (Expand lowest heuristic + acquisition_cost node)
Metaheuristics
- Genetic algorithm
- Simulated Annealing
- Ant Colony
- Tabu Search
Data Structures
- Static Array (stack allocated). Usage example. STD implementation.
- Dynamic Array (heap allocated). Usage example. STD implementation.
- Singly Linked List. Usage example.
- Double Linked List
- Hash table. Usage example. STD implementation.
- Stack
- Queue
- BT (Binnary Tree)
- BST (Binnary Search Tree)
- Heap
- Trie
- Graph
To test an algorithm
If serial algorithm:
./run_serial.sh <path_to_cpp_file>
If parallel algorithm:
./run_parallel.sh <path_to_cpp_file> <processors_to_use>