Daftar algoritme

Berikut adalah **daftar [[algoritme]]**.

*Lihat juga [[daftar struktur data]], [[daftar topik umum algoritme]], dan [[daftar istilah yang berhubungan dengan algoritme dan struktur data]].*

## Algoritma kombinatorial

### Algoritma kombinatorial umum

* Algoritme pencari-siklus Floyd: iterasi untuk mencari siklus dalam barisan/sekuens
* (uniformly distributed) Pseudorandom number generators:
** Blum Blum Shub
** Mersenne twister
* Robinson-Schensted algorithm: korespondensi dan pasangan yang bijetif dari Young tableaux yang standar

### Algoritma graf

* Algoritme Bellman-Ford: menghitung jarak terpendek pada graf berbobot, di mana sisi bisa memiliki bobot negatif
* Algoritme Dijkstra: menghitung jarak terpendek pada graf berbobot, tanpa sisi berbobot negatif.
* Algoritme Floyd-Warshall: menghitung solusi jarak terpendek untuk semua pasang titik pada sebuah graf berarah dan berbobot
* Algoritme Kruskal: mencari pohon rentang minimum pada sebuah graf
* Algoritme Prim: mencari pohon rentang minimum pada sebuah graf
* Algoritme Boruvka: mencari pohon rentang minimum pada sebuah graf
* Algoritme Ford-Fulkerson: menghitung aliran maksimal di dalam graf
* Algoritme Edmonds-Karp: implementasi dari Ford-Fulkerson
* Nonblocking Minimal Spanning Switch say, for a telephone exchange
* Spring based algorithm: algoritma untuk penggambaran draf
* Topological sort
* Algoritme Hungaria: algorithm for finding a perfect matching

### [[Algoritme pencarian]]

* Pencarian linear: mencari sebuah item pada sebuah list tak berurut
* Algoritme seleksi: mencari item ke-*k* pada sebuah list
* Pencarian biner: menemukan sebuah item pada sebuah list terurut
* Pohon Pencarian Biner
* Pencarian Breadth-first: menelusuri sebuah graf tingkatan demi tingkatan
* Pencarian Depth-first: menelusuri sebuah graf cabang demi cabang
* Pencarian Best-first: menelusuri sebuah graf dengan urutan sesuai kepentingan dengan menggunakan antrian prioritas
* Pencarian pohon A*: kasus khusus dari pencarian best-first
* Pencarian Prediktif: pencarian mirip biner dengan faktor pada magnitudo dari syarat pencarian terhadap nilai atas dan bawah dalam pencarian. Kadang-kadang disebut pencarian kamus atau pencarian interpolasi.
* Tabel Hash: mencari sebuah item dalam sebuah kumpulan tak berurut dalam waktu O(1).

### Algoritma string
#### [[Algoritme pencarian string|Pencarian]]
* Algoritme brute force
* Algoritme Aho-Corasick
* Algoritme Boyer-Moore
* Algoritme Knuth-Morris-Pratt
* Algoritme Karp-Rabin

#### Pencocokan string
* Algoritme Bitap
* Algoritme Fonetik
** Metaphone
** Soundex
* Metrik kemiripan string
** Jarak Damerau–Levenshtein
** Jarak Hamming
** Jarak Jaro-Winkler
** Jarak Levenshtein

### [[Algoritme penyusunan]]

* Binary tree sort
* Bogosort
* Bubble sort: untik setiap pasangan, tukar item tersebut
* Bucket sort
* Comb sort
* Cocktail sort
* Counting sort
* Gnome sort
* Heapsort: mengubah list menjadi heap, lalu pindah yang terbesar kepada daftar.
* Insertion sort: menentukan di mana item tertentu termasuk dalam list yang ter-urut, dan menyisipkan padanya
* Merge sort: pisah daftar menjadi pasangan dua-dua, urutkan lalu digabung dengan satu pasangan lainnya, kembali diurutkan, dan diulang hingga menjadi daftar utuh
* Pancake sorting
* Pigeonhole sort
* Quicksort: pisah daftar menjadi dua daftar, yang satu lebih rendah yang satu lebih besar, dan urut terpisah.
* Radix sort: sorts strings letter by letter
* Selection sort: pick the smallest of the remaining elements, add it to the end of the sorted list
* Shell sort: an attempt to improve insertion sort
* Smoothsort
* Stupid sort
* Topological sort

## [[Kompresi data]]

### [[Kompresi data tanpa kehilangan]]

* Burrows-Wheeler transform: preprocessing useful for improving lossless compression
* DEFLATE: lossless data compression
* Delta encoding: aid to compression of data in which sequential data occurs frequently
* Incremental encoding: delta encoding applied to sequences of strings
* LZW: singkatan dari (Lempel-Ziv-Welch)
* LZ77 (algorithm): LZ77 and LZ78 are the names for the two lossless data compression algorithms
* LZMA: singkatan dari Lempel-Ziv-Markov chain-Algorithm
* LZO: pemadatan data yang cepat
* PPM compression algorithm
* Shannon-Fano coding
* Truncated binary encoding
* Run-length encoding: pemadatan data yang menggunakan deretan huruf yang berulang.
* SEQUITUR algorithm: lossless compression by incremental grammar inference on a string
* EZW (Embedded Zerotree Wavelet)
* Entropy encoding: coding scheme that assigns codes to symbols so as to match code lengths with the probabilities of the symbols
** Huffman coding: simple lossless compression taking advantage of relative character frequencies
*** Adaptive Huffman coding: adaptive coding technique based on Huffman coding
** Arithmetic coding: advanced entropy coding
** Range encoding: data compression method that is believed to approach the compression ratio of arithmetic coding
* Entropy coding with known entropy characteristics
** Unary coding: code that represents a number n with n ones followed by a zero
** Elias delta|gamma|omega coding: universal code encoding the positive integers
** Fibonacci coding: universal code which encodes positive integers into binary code words
** Golomb coding: form of entropy coding that is optimal for alphabets following geometric distributions
** Rice coding: form of entropy coding that is optimal for alphabets following geometric distributions

### [[Kompresi data berkehilangan]]

* Linear predictive coding: lossy compression by representing the spectral envelope of a digital signal of speech in compressed form
* A-law algorithm: standard companding algorithm
* Mu-law algorithm: standard analog signal compression or companding algorithm
* Fractal compression: method used to compress images using fractals
* Transform coding: type of data compression for "natural" data like audio signals or photographic images
* Vector quantization: technique often used in lossy data compression
* Wavelet compression: form of data compression well suited for image compression (sometimes also video compression and audio compression)

## [[Computational geometry]]

* Gift wrapping algorithm: determining the convex hull of a set of points
* Graham scan determining the convex hull of a set of points in the plane
* Point in polygon: tests whether a given point lies within a given polygon

## [[Grafik komputer]]

* Bresenham's line algorithm: plots points of a 2-dimensional array to form a straight line between 2 specified points (uses decision variables)
* DDA line algorithm: plots points of a 2-dimensional array to form a straight line between 2 specified points (uses floating-point math)
* Flood fill: fills a connected region of a multi-dimensional array with a specified symbol
* Painter's algorithm: detects visible parts of a 3-dimensional scenery
* Ray tracing: realistic image rendering

## Algoritma [[Kriptografi]]
*Lihat juga [[Topik dalam kriptografi]]*

* Enkripsi simetris dengan kata kunci:
** Advanced Encryption Standard (AES), pemenang kompetisi NIST pada tahun 2000
** Blowfish
** Data Encryption Standard (DES), pemenang kompetisi NBS (sekarang NIST), telah digantikan dengan AES.
** IDEA
** RC4 (cipher)
* Enkripsi asimetris dengan kunci publik atau tanda tangan digital:
** DSA
** ElGamal
** RSA
** Diffie-Hellman key exchange
** NTRUEncrypt
* Cryptographic Message digest functions:
** MD5 – Sekarang ini sudah terdapat algoritma yang mampu memalsukan jumlah MD5.
** RIPEMD-160
** SHA-1
** HMAC: keyed-hash message authentication
* Perhitungan nomor acak tentu yang aman untuk persandian (Cryptographically secure pseudo-random number generator)
** Blum Blum Shub - berdasarkan faktorisasi prima.
** Yarrow algorithm
** Fortuna, allegedly an improvement on Yarrow
* *Other*
** Diffie-Hellman: key exchange

## Algoritma [[Distributed systems]]
* Lamport ordering: a partial ordering of events based on the *happened-before* relation
* Snapshot algorithm: a snapshot is the process of recording the global state of a system
* Vector ordering: a total ordering of events

## Algoritma Numerik
*See also main article *numerical analysis* and [[list of numerical analysis topics]]*

* Algoritme De Boor: computes splines.
* Algoritme de Casteljau: melakukan perhitungan kurva Bézier
* False position method: approximates roots of a function
* Eliminasi Gauss-Jordan: menyelesaikan sistem persamaan linear
* Algoritme Gauss-Legendre: computes the digits of pi
* Gauss-Newton algorithm: find minimum of function of several variables
* Penambahan Kahan: menambahkan bilangan-bilangan titik mengambang dengan ketelitian lebih
* Levenberg-Marquardt algorithm: find minimum of function of several variables
* MISER algorithm: Monte Carlo simulation, numerical integration
* Newton's method: finds zeros of functions with calculus
* Bracketing Methods:
* Pembulatan: membulatkan bilangan pecah
* Secant method: approximates roots of a function
* Shifting nth-root algorithm: digit by digit root extraction
* Akar persegi: menghitungkan akar persegi dengan ketelitian terbatas
* Strassen algorithm

### [[Optimization (mathematics)|Optimization algorithms]]

* Simplex algorithm: An algorithm for solving the linear programming problem
* Branch and bound
* Simulated annealing
* Genetic algorithms
* Particle swarm
* Tabu search
* Local search

### [[Digital signal processing]]
* CORDIC: Fast trigonometric function computation technique.
* Fast Fourier transform: determines the frequencies contained in a (segment of a) signal
** Cooley-Tukey FFT algorithm
* Rainflow-counting algorithm: Reduces a complex stress history to a count of elementary stress-reversals for use in fatigue analysis
* Osem: algorithm for processing of medical images
* Goertzel algorithm Can be used for DTMF digit decoding.
* [Discrete Fourier transform** [Rader's FFT algorithm
** Bluestein's FFT algorithm

## [[Number theory|Number theoretic]] algorithms
* Discrete logarithm:
** Baby-step giant-step
** Pollard's rho algorithm for logarithms
** Pohlig-Hellman algorithm
** Index calculus algorithm
* Euclidean algorithm: computes the greatest common divisor
* Faktorisasi prima: pemecahan bilangan bulat menjadi faktor prima.
** Trial division
** Faktorisasi kurva eliptik Lenstra
** Pollard's rho algorithm
** Pollard's p-1 algorithm
** Congruence of squares
** Quadratic sieve
** Special number field sieve
** General number field sieve
** Jones's period proxy algorithm
* Algoritme perkalian: cara perkalian dua bilangan yang cepat.
* Ujian bilangan prima: menentukan apakah suatu bilangan adalah bilangan prima.
** AKS primality test
** Miller-Rabin primality test
** Sieve of Eratosthenes
** Sieve of Atkin

## [[Numerical algebra]]

* Buchberger's algorithm: finds a Gröbner basis
* Eigenvalue algorithm
* Exponentiating by squaring: quickly computes powers of numbers and matrices
* Gram-Schmidt process: orthogonalizes a set of vectors
* Knuth-Bendix completion algorithm: for rewriting rule systems
* Multivariate division algorithm: for polynomials in several indeterminates

## [[Parsing]]

* Recursive descent parser: A top-down parser suitable for LL(*k*) grammars
* LL parser: A relatively simple linear time parsing algorithm for a limited class of context-free grammars
* LR parser: A more complex linear time parsing algorithm for a larger class of context-free grammars. Variants:
** Operator-precedence parser
** SLR (Simple LR) parser
** LALR (Look-ahead LR) parser
** Canonical LR parser
* Packrat parser: A linear time parsing algorithm supporting some context-free grammars and parsing expression grammars
* CYK algorithm: An O(n3) algorithm for parsing any context-free grammar
* Earley's algorithm: Another O(n3) algorithm for parsing any context-free grammar

## [[Teknik perangkat lunak]]
* Algorithms for Recovery and Isolation Exploiting Semantics: recovery
* Unicode Collation Algorithm
* CHS conversion: Converting between disk addressing systems
* Cyclic redundancy check: calculation of a check word
* Parity: Simple/fast error detection technique. Is a number even or odd?
* Diff: compare two sequences. An example of Dynamic programming (dynamic refers to the property that the optimal solution can be constructed by combining optimal solutions to sub-problems e.g. quicksort).

## [[Komputer kuantum|Algoritme kuantum]]
*<small>Application of [[quantum computation]] to various categories of problems and algorithms</small>*

* Grover's algorithm: provides quadratic speedup for many search problems
* Shor's algorithm: provides exponential speedup for factorizing a number
* Deutsch-Jozsa algorithm: criterion of balance for Boolean function

## Algoritma medis

* Medical algorithm
* Texas Medication Algorithm Project

## Lainnya
* Astronomical algorithms
* Banker's algorithm
* Algoritme Baum-Welch
* Doomsday algorithm: day of the week
* Levenberg-Marquardt nonlinear least squares fitting algorithm
* Marzullo's algorithm: distributed clock synchronization
* Page replacement algorithms
* Risch algorithm
* Schreier-Sims algorithm
* Todd-Coxeter algorithm
* Viterbi algorithm
* Penukaran XOR: menukar nilainya dua variabel tanpa menggunakan variabel sementara
* Algoritme merge
* Algoritme penggantian halaman

## Referensi