Update alg

This commit is contained in:
Miloslav Ciz 2022-03-28 21:33:32 +02:00
parent 31d4d1b982
commit 4670a22756

View file

@ -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)