From 4670a22756de79a563e0fedb4c89d0fef44f4d00 Mon Sep 17 00:00:00 2001 From: Miloslav Ciz Date: Mon, 28 Mar 2022 21:33:32 +0200 Subject: [PATCH] Update alg --- algorithm.md | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/algorithm.md b/algorithm.md index cd3327b..ee8a021 100644 --- a/algorithm.md +++ b/algorithm.md @@ -115,8 +115,61 @@ int main(void) ## Study of Algorithms +As algorithms are at the heart of [computer science](scompsci.md), there's a lot of rich theory and knowledge about them. + +From theoretical computer science we know not all problems are [computable](computability.md), i.e. there are problems unsolvable by any algorithm (e.g. the [halting problem](halting_problem.md)). [Computational complexity](computational_complexity.md) is a theoretical study of resource consumption by algorithms, i.e. how fast and memory efficient algorithms are. [Formal verification](formal_verification.md) is a field that tries to mathematically prove correctness of algorithms (this is needed for critical software, e.g. in planes). [Genetic programming](generic_programming.md) and some other methods of [artificial intelligence](ai.md) try to automatically create algorithms (creating algorithms that create algorithms). [Computer language](computer_language.md) design is an art of finding best ways of expressing algorithms. + TODO: sorting, searching, classical algorithms (primes, haugh transform, FFT, ...), time/space complexity, genetic programming, design patterns, fizzbuzz +## Specific Algorithms + +Following are some common algorithms classified into groups. + +- [graphics](graphics.md) + - [DDA](dda.md): line drawing algorithm + - [flood fill](flood_fille.md) + - [FXAA](fxaa.md) + - [Hough transform](hough_transform.md): finds shapes in pictures + - [painter's algorithm](painters_algorithm.md) + - [path tracing](path_tracing.md) + - [ray tracing](ray_tracing.md) +- [math](math.md) + - [Boot'h algorithm]: algorithm for multiplication + - [Dijkstra's algorithm](dijkstras_algorithm.md) + - [Euclidean algorithm](euclidean_algorithm.md): computes greatest common divisor + - [numerical algorithms](numerical.md): approximate mathematical functions + - [sieve of Eratosthenes](sieve_of_eratosthenes.md): computes [prime numbers](prime.md) +- [sorting](sorting.md) + - [bogosort](bogosort.md) (stupid sort) + - [bubble sort](bubble_sort.md): simple, kind of slow but still usable sorting algorithm + - [heap sort](heap_sort.md) + - [insertion sort](insertion_sort.md) + - [merge sort](merge_sort.md) + - [shaker sort](shaker_sort.md) + - [selection sort](selection_sort.md) + - [slow sort](slow_sort.md) + - [quick sort](quick_sort.md): one of the fastest sorting algorithms +- [searching](searching.md) + - [binary search](binary_search.md) + - [linear search](linear_search.md) +- [other](other.md) + - [A*](a_start.md): path searching algorithm, used by [AI](ai.md) in many [games](game.md) + - [backpropagation](backpropagation.md) + - [fizzbugg](fizzbugg.md): problem/simple algorithm given in job interviews to filter out complete [noobs](noob.md) + - [FFT](fft.md): quickly converts signal (audio, image, ...) to its representation in frequencies, one of the most famous and important algorithms + - [Huffman coding](huffman_code.md): [compression](compression.md) algorithm + - [Kalman filter](kalman_filter.md) + - [k-means](k_means.md): [clustering](clustering.md) algorithm + - [MD5](md5.md): [hash](hash.md) function + - [minimax](minimax.md) plus [alpha-beta pruning](alpha_beta.md): used by many [AI](ai.md)s that play turn based games + - [proof of work](proof_of_work.md) algorithms: used by some [cryptocurrencies](crypto.md) + - [RSA](rsa.md) + - [Shor's algorithm](shors_algorithm.md): [quantum](quantum.md) factorization algorithm + - [YouTube](youtube.md) algorithm: secret algorithm YouTube uses to suggest videos to viewers, a lot of people hate it :) + + ## See Also - [programming](programming.md) +- [design pattern](design_pattern.md) +- [recursion](recursion.md) \ No newline at end of file