Definición amplia del término algoritmo
Un algoritmo es fundamentalmente un conjunto de reglas o procedimientos definidos que normalmente se diseñan y utilizan para resolver un problema específico o un conjunto amplio de problemas.
En términos generales, los algoritmos definen procesos, conjuntos de reglas o metodologías que se deben seguir en los cálculos, el procesamiento de datos, la minería de datos, el reconocimiento de patrones, el razonamiento automatizado u otras operaciones de resolución de problemas. Con la creciente automatización de los servicios, cada vez se toman más decisiones mediante algoritmos. Algunos ejemplos generales son: evaluaciones de riesgos, vigilancia preventiva y tecnología de reconocimiento de patrones. [1]
La siguiente es una lista de algoritmos conocidos junto con descripciones de una línea para cada uno.
Planificación automatizada
Algoritmos combinatorios
Algoritmos combinatorios generales
- Algoritmo de Brent : encuentra un ciclo en iteraciones de valores de función utilizando solo dos iteradores [2]
- Algoritmo de búsqueda de ciclos de Floyd : encuentra un ciclo en iteraciones de valores de funciones [3]
- Algoritmo de Gale-Shapley : resuelve el problema del matrimonio estable [ cita requerida ]
- Generadores de números pseudoaleatorios (distribuidos uniformemente; consulte también Lista de generadores de números pseudoaleatorios para otros PRNG con distintos grados de convergencia y calidad estadística variable): [ cita requerida ]
Algoritmos gráficos
- Algoritmo de coloración : Algoritmo de coloración de gráficos.
- Algoritmo de Hopcroft-Karp : convierte un gráfico bipartito en uno con correspondencia de cardinalidad máxima
- Algoritmo húngaro : algoritmo para encontrar la coincidencia perfecta
- Codificación de Prüfer : conversión entre un árbol etiquetado y su secuencia de Prüfer
- Algoritmo de ancestros comunes más bajos fuera de línea de Tarjan : calcula los ancestros comunes más bajos para pares de nodos en un árbol
- Ordenación topológica : encuentra el orden lineal de los nodos (por ejemplo, trabajos) en función de sus dependencias.
Dibujo gráfico
- Algoritmos basados en fuerza (también conocidos como algoritmos dirigidos por fuerza o algoritmos basados en resortes)
- Disposición espectral
Teoría de redes
- Análisis de red
- Análisis de enlaces
- Algoritmo de Girvan-Newman : detección de comunidades en sistemas complejos
- Análisis de enlaces web
- Búsqueda de temas inducida por hipervínculos (HITS) (también conocida como centros y autoridades )
- PageRank
- Rango de confianza
- Análisis de enlaces
- Redes de flujo
- Algoritmo de Dinic : es un algoritmo fuertemente polinomial para calcular el flujo máximo en una red de flujo .
- Algoritmo de Edmonds-Karp : implementación del algoritmo de Ford-Fulkerson
- Algoritmo de Ford-Fulkerson : calcula el caudal máximo en un gráfico
- Algoritmo de Karger : un método de Monte Carlo para calcular el corte mínimo de un gráfico conexo
- Algoritmo push-relabel : calcula un flujo máximo en un gráfico
Enrutamiento para gráficos
- Algoritmo de Edmonds (también conocido como algoritmo de Chu-Liu/Edmonds): encuentre ramificaciones máximas o mínimas
- Árbol de expansión mínimo euclidiano : algoritmos para calcular el árbol de expansión mínimo de un conjunto de puntos en el plano
- Problema de la ruta más larga : encontrar una ruta simple de longitud máxima en un gráfico dado
- Árbol de expansión mínimo
- Interruptor de expansión mínima sin bloqueo , por ejemplo, para una central telefónica
- Problema del camino más corto
- Algoritmo Bellman-Ford : calcula las rutas más cortas en un gráfico ponderado (donde algunos de los pesos de los bordes pueden ser negativos)
- Algoritmo de Dijkstra : calcula las rutas más cortas en un gráfico con pesos de aristas no negativos
- Algoritmo de Floyd-Warshall : resuelve el problema de la ruta más corta de todos los pares en un gráfico dirigido y ponderado
- Algoritmo de Johnson : algoritmo de ruta más corta para todos los pares en un gráfico dirigido con ponderación dispersa
- Problema de clausura transitiva : encontrar la clausura transitiva de una relación binaria dada
- Problema del viajante de comercio
- Regla de Warnsdorff : un método heurístico para resolver el problema del recorrido del caballo
Búsqueda de gráficos
- A* : caso especial de búsqueda de mejor primero que utiliza heurística para mejorar la velocidad
- B* : un algoritmo de búsqueda de gráficos de mejor primero que encuentra la ruta de menor costo desde un nodo inicial dado hasta cualquier nodo objetivo (de uno o más objetivos posibles)
- Retroceso : abandona soluciones parciales cuando se descubre que no satisfacen una solución completa.
- Búsqueda de haz : es un algoritmo de búsqueda heurística que es una optimización de la búsqueda de mejor primero que reduce su requerimiento de memoria.
- Búsqueda de pila de haces : integra el retroceso con la búsqueda de haces
- Búsqueda de mejor primero : recorre un gráfico en el orden de importancia probable utilizando una cola de prioridad
- Búsqueda bidireccional : encuentra la ruta más corta desde un vértice inicial hasta un vértice objetivo en un gráfico dirigido
- Búsqueda en amplitud : recorre un gráfico nivel por nivel
- Búsqueda de fuerza bruta : un método de búsqueda exhaustivo y confiable, pero computacionalmente ineficiente en muchas aplicaciones
- D* : un algoritmo de búsqueda heurística incremental
- Búsqueda en profundidad : recorre un gráfico rama por rama
- Algoritmo de Dijkstra : un caso especial de A* para el que no se utiliza ninguna función heurística
- Solucionador de problemas general : un algoritmo seminal de demostración de teoremas diseñado para funcionar como una máquina de resolución de problemas universal.
- Búsqueda en profundidad iterativa (IDDFS): una estrategia de búsqueda en el espacio de estados
- Búsqueda de puntos de salto : una optimización de A* que puede reducir el tiempo de cálculo en un orden de magnitud utilizando heurísticas adicionales
- Búsqueda en amplitud lexicográfica (también conocida como Lex-BFS): un algoritmo de tiempo lineal para ordenar los vértices de un gráfico
- Búsqueda de costo uniforme : una búsqueda en árbol que encuentra la ruta de menor costo donde los costos varían
- SSS* : búsqueda en el espacio de estados que recorre un árbol de juego de manera que el mejor primero sea similar al algoritmo de búsqueda A*
Subgrafos
- Camarillas
- Algoritmo de Bron-Kerbosch : una técnica para encontrar camarillas máximas en un grafo no dirigido
- Algoritmo de camarilla máxima MaxCliqueDyn : encuentre una camarilla máxima en un gráfico no dirigido
- Componentes fuertemente conectados
- Problema de isomorfismo de subgrafos
Algoritmos de secuencia
Coincidencia de secuencia aproximada
- Algoritmo Bitap : algoritmo difuso que determina si las cadenas son aproximadamente iguales.
- Algoritmos fonéticos
- Daitch–Mokotoff Soundex : un refinamiento de Soundex que permite la coincidencia de apellidos eslavos y germánicos
- Double Metaphone : una mejora de Metaphone
- Enfoque de calificación de coincidencias : un algoritmo fonético desarrollado por Western Airlines
- Metaphone : un algoritmo para indexar palabras por su sonido, cuando se pronuncian en inglés
- NYSIIS : algoritmo fonético que mejora Soundex
- Soundex : un algoritmo fonético para indexar nombres por sonido, tal como se pronuncia en inglés
- Métricas de cadenas : calcula una puntuación de similitud o disimilitud (distancia) entre dos pares de cadenas de texto
- Distancia Damerau-Levenshtein : calcula una medida de distancia entre dos cuerdas, mejora la distancia de Levenshtein
- Coeficiente de Dice (también conocido como coeficiente de Dice): una medida de similitud relacionada con el índice de Jaccard
- Distancia de Hamming : suma del número de posiciones que son diferentes
- Distancia de Jaro-Winkler : es una medida de similitud entre dos cadenas
- Distancia de edición de Levenshtein : calcula una métrica para la cantidad de diferencia entre dos secuencias
- Búsqueda de trigramas : búsqueda de texto cuando no se conoce con precisión la sintaxis o la ortografía exacta del objeto de destino
Algoritmos de selección
Búsqueda de secuencias
- Búsqueda lineal : ubica un elemento en una secuencia no ordenada
- Algoritmo de selección : encuentra el k -ésimo elemento más grande en una secuencia
- Búsqueda ternaria : técnica para encontrar el mínimo o el máximo de una función que es estrictamente creciente y luego estrictamente decreciente o viceversa.
- Listas ordenadas
- Algoritmo de búsqueda binaria : localiza un elemento en una secuencia ordenada
- Técnica de búsqueda de Fibonacci : busque una secuencia ordenada utilizando un algoritmo de dividir y vencer que limita las posibles ubicaciones con la ayuda de los números de Fibonacci.
- Búsqueda por salto (o búsqueda por bloque): búsqueda lineal en un subconjunto más pequeño de la secuencia
- Búsqueda predictiva : búsqueda de tipo binario que tiene en cuenta la magnitud del término de búsqueda en comparación con los valores altos y bajos de la búsqueda. A veces se denomina búsqueda de diccionario o búsqueda interpolada.
- Búsqueda binaria uniforme : una optimización del algoritmo de búsqueda binaria clásico
- Búsqueda binaria de Eytzinger : algoritmo de búsqueda binaria compatible con caché [4]
Fusión de secuencias
- Algoritmo de fusión simple
- algoritmo de fusión de k-way
- Unión (fusión, con elementos en la salida no repetidos)
Permutaciones de secuencias
- Mezcla de Fisher-Yates (también conocida como mezcla de Knuth): mezcla aleatoriamente un conjunto finito
- Algoritmo de Schensted : construye un par de tablas de Young a partir de una permutación
- Algoritmo de Steinhaus-Johnson-Trotter (también conocido como algoritmo Johnson-Trotter): genera permutaciones transponiendo elementos
- Algoritmo de generación de permutaciones de Heap : intercambia elementos para generar la siguiente permutación
Combinaciones de secuencias
Alineación de secuencias
- Deformación temporal dinámica : mide la similitud entre dos secuencias que pueden variar en el tiempo o la velocidad.
- Algoritmo de Hirschberg : encuentra la alineación de secuencia de menor costo entre dos secuencias, medida por su distancia de Levenshtein.
- Algoritmo Needleman-Wunsch : búsqueda de alineamiento global entre dos secuencias
- Algoritmo de Smith-Waterman : búsqueda de alineamiento de secuencias locales
Ordenación de secuencias
- Tipos de intercambio
- Ordenamiento de burbuja : para cada par de índices, intercambie los elementos si están fuera de orden
- Clasificación con coctelera u clasificación de burbuja bidireccional, una clasificación de burbuja que recorre la lista alternativamente de adelante hacia atrás y de atrás hacia adelante.
- Clasificación por peine
- Ordenación de gnomos
- Ordenamiento par-impar
- Ordenación rápida : divide la lista en dos, con todos los elementos de la primera lista antes que todos los elementos de la segunda lista; luego ordena las dos listas. A menudo, el método de elección
- Humorístico o ineficaz
- Híbrido
- Clasificación flash
- Introsort : comienza con quicksort y cambia a heapsort cuando la profundidad de recursión excede un cierto nivel
- Timsort : algoritmo adaptativo derivado de la ordenación por fusión y la ordenación por inserción. Se utiliza en Python 2.3 y versiones posteriores, y en Java SE 7.
- Ordenamientos por inserción
- Ordenación por inserción : determina dónde pertenece el elemento actual en la lista de elementos ordenados y lo inserta allí
- Ordenar por biblioteca
- Clasificación con paciencia
- Ordenación por shell : un intento de mejorar la ordenación por inserción
- Ordenación de árbol (ordenación de árbol binario): construye un árbol binario y luego recorre el mismo para crear una lista ordenada
- Ordenación cíclica : en el lugar con un número teóricamente óptimo de escrituras
- Ordenamientos por fusión
- Ordenar por fusión : ordena la primera y la segunda mitad de la lista por separado y luego fusiona las listas ordenadas
- Ordenación lenta
- Ordenación de hebras
- Tipos sin comparación
- Clasificación de cuentas
- Ordenar por cubos
- Burstsort : crea un trie de ráfaga compacto y con uso eficiente de la memoria caché y luego lo recorre para crear una salida ordenada
- Ordenar por conteo
- Clasificación por casilleros
- Ordenación del cartero : variante de la ordenación de cubos que aprovecha la estructura jerárquica
- Ordenación por radix : ordena cadenas letra por letra
- Tipos de selección
- Heapsort : convierte la lista en un montón, eliminando constantemente el elemento más grande del montón y agregándolo al final de la lista
- Ordenación por selección : elige el más pequeño de los elementos restantes y agrégalo al final de la lista ordenada
- Clasificación de jugadores suaves
- Otro
- Clase desconocida
Subsecuencias
- Problema de la subsecuencia común más larga : encuentre la subsecuencia común más larga a todas las secuencias en un conjunto de secuencias
- Problema de subsecuencia creciente más larga : encuentre la subsecuencia creciente más larga de una secuencia dada
- Algoritmo de Ruzzo-Tompa : busca todas las subsecuencias contiguas, no superpuestas y con puntuación máxima en una secuencia de números reales
- Problema de supersecuencia común más corta : encuentre la supersecuencia más corta que contenga dos o más secuencias como subsecuencias
Subcadenas
- Algoritmo de Kadane : encuentra el subarreglo contiguo con la suma más grande en un arreglo de números
- Problema de subcadena común más larga : encuentre la cadena (o cadenas) más larga que sea una subcadena (o subcadenas) de dos o más cadenas
- Búsqueda de subcadenas
- Algoritmo de coincidencia de cadenas Aho-Corasick : algoritmo basado en trie para encontrar todas las coincidencias de subcadenas con cualquiera de un conjunto finito de cadenas
- Algoritmo de búsqueda de cadenas de Boyer-Moore : algoritmo lineal amortizado ( sublineal en la mayoría de los casos) para búsqueda de subcadenas
- Algoritmo de Boyer–Moore–Horspool : simplificación del algoritmo de Boyer–Moore
- Algoritmo de Knuth-Morris-Pratt : búsqueda de subcadenas que evita tener que volver a examinar los caracteres coincidentes
- Algoritmo de búsqueda de cadenas Rabin–Karp : busca múltiples patrones de manera eficiente
- Algoritmo de coincidencia de cadenas de Zhu-Takaoka : una variante del algoritmo de Boyer-Moore
- Algoritmo de Ukkonen : un algoritmo en línea y en tiempo lineal para construir árboles de sufijos
- Comodines coincidentes
- Wildmat de Rich Salz : un algoritmo recursivo de código abierto ampliamente utilizado
- Algoritmo de coincidencia de comodines de Krauss : un algoritmo no recursivo de código abierto
Matemáticas computacionales
Álgebra abstracta
- Búsqueda de Chien : un algoritmo recursivo para determinar raíces de polinomios definidos sobre un campo finito
- Algoritmo de Schreier-Sims : cálculo de un conjunto generador fuerte y base (BSGS) de un grupo de permutación
- Algoritmo de Todd-Coxeter : procedimiento para generar clases laterales .
Álgebra computacional
- Algoritmo de Buchberger : encuentra una base de Gröbner
- Algoritmo de Cantor-Zassenhaus : factorización de polinomios sobre cuerpos finitos
- Algoritmo F4 de Faugère : encuentra una base de Gröbner (también menciona el algoritmo F5)
- Algoritmo de Gosper : encontrar sumas de términos hipergeométricos que sean en sí mismos términos hipergeométricos
- Algoritmo de compleción de Knuth-Bendix : para reescribir sistemas de reglas
- Algoritmo de división multivariante : para polinomios con varios indeterminados
- Algoritmo canguro de Pollard (también conocido como algoritmo lambda de Pollard): un algoritmo para resolver el problema del logaritmo discreto
- División larga de polinomios : un algoritmo para dividir un polinomio por otro polinomio del mismo grado o de grado inferior.
- Algoritmo de Risch : un algoritmo para la operación de cálculo de integración indefinida (es decir, encontrar antiderivadas )
Geometría
- Problema del par más cercano : encontrar el par de puntos (de un conjunto de puntos) con la menor distancia entre ellos
- Algoritmos de detección de colisiones : comprueban la colisión o intersección de dos sólidos dados
- Algoritmo de cono : identificar puntos de la superficie
- Algoritmos de envoltura convexa : determinación de la envoltura convexa de un conjunto de puntos
- Transformada de distancia euclidiana : calcula la distancia entre cada punto de una cuadrícula y una colección discreta de puntos.
- Hashing geométrico : un método para encontrar de manera eficiente objetos bidimensionales representados por puntos discretos que han sufrido una transformación afín
- Algoritmo de distancia de Gilbert–Johnson–Keerthi : determinación de la distancia más pequeña entre dos formas convexas .
- Algoritmo Jump-and-Walk : un algoritmo para la localización de puntos en triangulaciones
- Suavizado laplaciano : un algoritmo para suavizar una malla poligonal
- Intersección de segmentos de línea : determinar si las líneas se intersecan, generalmente con un algoritmo de línea de barrido
- Algoritmo de Bentley-Ottmann
- Algoritmo de Shamos-Hoey
- Algoritmos de cuadro delimitador mínimo : encuentre el cuadro delimitador mínimo orientado que encierra un conjunto de puntos
- Búsqueda de vecino más cercano : busque el punto o los puntos más cercanos a un punto de consulta
- Algoritmo de anidamiento : hacer el uso más eficiente del material o el espacio
- Algoritmos de puntos en polígonos : comprueban si un punto determinado se encuentra dentro de un polígono determinado
- Algoritmos de registro de conjuntos de puntos : encuentra la transformación entre dos conjuntos de puntos para alinearlos de forma óptima.
- Calibradores rotatorios : determinan todos los pares antípodas de puntos y vértices en un polígono convexo o una envoltura convexa .
- Algoritmo del cordón : determinar el área de un polígono cuyos vértices están descritos por pares ordenados en el plano
- Triangulación
- Triangulación de Delaunay
- Algoritmo de Ruppert (también conocido como refinamiento de Delaunay): crear triangulaciones de Delaunay de calidad
- Segundo algoritmo de Chew : crear triangulaciones de Delaunay con restricciones de calidad
- Triángulos en marcha : reconstrucción de la geometría de una superficie bidimensional a partir de una nube de puntos no estructurada
- Algoritmos de triangulación de polígonos : descomponen un polígono en un conjunto de triángulos
- Diagramas de Voronoi , dual geométrico de la triangulación de Delaunay
- Algoritmo de Bowyer-Watson : crea un diagrama de Voronoi en cualquier número de dimensiones
- Algoritmo de la fortuna : crear un diagrama de Voronoi
- Cuasitriangulación
- Triangulación de Delaunay
Algoritmos de teoría de números
- Algoritmo MCD binario : una forma eficiente de calcular MCD.
- Algoritmo de multiplicación de Booth
- Método Chakravala : un algoritmo cíclico para resolver ecuaciones cuadráticas indeterminadas, incluida la ecuación de Pell
- Logaritmo discreto :
- Algoritmo euclidiano : calcula el máximo común divisor
- Algoritmo euclidiano extendido : también resuelve la ecuación ax + by = c
- Factorización de enteros : descomponer un número entero en sus factores
primos
- Congruencia de cuadrados
- Algoritmo de Dixon
- Método de factorización de Fermat
- Tamiz de campo numérico general
- Factorización de curva elíptica de Lenstra
- Algoritmo p − 1 de Pollard
- Algoritmo rho de Pollard
- algoritmo de factorización prima
- Tamiz cuadrático
- Algoritmo de Shor
- Tamiz de campo de número especial
- División de juicio
- Algoritmos de multiplicación : multiplicación rápida de dos números
- Raíz cuadrada modular : cálculo de raíces cuadradas módulo un número primo
- Algoritmo de Odlyzko-Schönhage : calcula ceros no triviales de la función zeta de Riemann
- Algoritmo de Lenstra–Lenstra–Lovász (también conocido como algoritmo LLL): encuentra una base reticular corta, casi ortogonal, en tiempo polinomial
- Pruebas de primalidad : determinar si un número dado es primo
Algoritmos numéricos
Resolución de ecuaciones diferenciales
- Método de Euler
- Método de Euler inverso
- Regla del trapecio (ecuaciones diferenciales)
- Métodos lineales de varios pasos
- Métodos de Runge-Kutta
- Métodos multigrid (métodos MG), un grupo de algoritmos para resolver ecuaciones diferenciales utilizando una jerarquía de discretizaciones
- Ecuación diferencial parcial :
- Método de diferencias finitas
- Método de Crank-Nicolson para ecuaciones de difusión
- Lax-Wendroff para ecuaciones de onda
- Integración de Verlet ( pronunciación francesa: [vɛʁˈlɛ] ): integrar las ecuaciones de movimiento de Newton
Funciones elementales y especiales
- Cálculo de π :
- Algoritmo de Borwein : un algoritmo para calcular el valor de 1/π
- Algoritmo de Gauss-Legendre : calcula los dígitos de pi
- Algoritmo de Chudnovsky : un método rápido para calcular los dígitos de π
- Fórmula de Bailey-Borwein-Plouffe : (fórmula BBP) un algoritmo de espiga para el cálculo del n-ésimo dígito binario de π
- Algoritmos de división : para calcular el cociente y/o el resto de dos números
- División larga
- Restaurando la división
- División no restaurativa
- División SRT
- División de Newton-Raphson : utiliza el método de Newton para encontrar el recíproco de D y multiplicar ese recíproco por N para encontrar el cociente final Q.
- División Goldschmidt
- Funciones hiperbólicas y trigonométricas:
- Algoritmo BKM : calcula funciones elementales utilizando una tabla de logaritmos.
- CORDIC : calcula funciones hiperbólicas y trigonométricas utilizando una tabla de arcotangentes
- Exponenciación:
- Exponenciación por adición en cadena : exponenciación por potencias de números enteros positivos que requiere un número mínimo de multiplicaciones
- Exponenciación por cuadrado : un algoritmo utilizado para el cálculo rápido de grandes potencias enteras de un número.
- Reducción de Montgomery : un algoritmo que permite realizar aritmética modular de manera eficiente cuando el módulo es grande
- Algoritmos de multiplicación : multiplicación rápida de dos números
- Algoritmo de multiplicación de Booth : un algoritmo de multiplicación que multiplica dos números binarios con signo en notación de complemento a dos.
- Algoritmo de Fürer : un algoritmo de multiplicación de números enteros para números muy grandes que posee una complejidad asintótica muy baja
- Algoritmo Karatsuba : un procedimiento eficiente para multiplicar números grandes
- Algoritmo de Schönhage-Strassen : un algoritmo de multiplicación asintóticamente rápido para números enteros grandes
- Multiplicación de Toom-Cook : (Toom3) un algoritmo de multiplicación para números enteros grandes
- Algoritmos inversos multiplicativos : para calcular el inverso multiplicativo de un número (recíproco).
- Funciones de redondeo : las formas clásicas de redondear números
- Algoritmo de Spigot : una forma de calcular el valor de una constante matemática sin conocer los dígitos anteriores
- Raíz cuadrada y enésima de un número:
- Algoritmo alfa máximo más beta mínimo : una aproximación de la raíz cuadrada de la suma de dos cuadrados
- Métodos para calcular raíces cuadradas
- algoritmo de raíz n- ésima
- Suma:
- Descomposición binaria : una técnica de dividir y vencer que acelera la evaluación numérica de muchos tipos de series con términos racionales
- Algoritmo de suma de Kahan : un método más preciso para sumar números de punto flotante
- Algoritmo sin restricciones
Geométrico
- Retroproyección filtrada : calcula de manera eficiente la transformada inversa bidimensional de Radon .
- Método de conjunto de niveles (LSM): una técnica numérica para rastrear interfaces y formas
Interpolación y extrapolación
- Interpolación de Birkhoff : una extensión de la interpolación polinómica
- Interpolación cúbica
- Interpolación de Hermite
- Interpolación de Lagrange : interpolación utilizando polinomios de Lagrange
- Interpolación lineal : un método de ajuste de curvas utilizando polinomios lineales
- Interpolación cúbica monótona : una variante de la interpolación cúbica que preserva la monotonía del conjunto de datos que se interpola.
- Interpolación multivariante
- Interpolación bicúbica : una generalización de la interpolación cúbica a dos dimensiones
- Interpolación bilineal : una extensión de la interpolación lineal para interpolar funciones de dos variables en una cuadrícula regular
- Remuestreo de Lanczos ("Lanzosh"): un método de interpolación multivariable utilizado para calcular nuevos valores para cualquier dato muestreado digitalmente
- Interpolación del vecino más próximo
- Interpolación tricúbica : una generalización de la interpolación cúbica a tres dimensiones
- Interpolación de Pareto : método para estimar la mediana y otras propiedades de una población que sigue una distribución de Pareto .
- Interpolación polinómica
- Interpolación de splines : reduce el error con el fenómeno de Runge .
- Interpolación trigonométrica
Álgebra lineal
- Métodos de Krylov (para problemas de matrices dispersas de gran tamaño; tercera clase de método numérico más importante del siglo XX según la clasificación del SISC; después del método rápido de Fourier y el método rápido multipolar)
- Algoritmos de valores propios
- Proceso de Gram-Schmidt : ortogonaliza un conjunto de vectores
- Algoritmos de multiplicación de matrices
- Algoritmo de Cannon : un algoritmo distribuido para la multiplicación de matrices especialmente adecuado para computadoras dispuestas en una malla N × N
- Algoritmo de Coppersmith-Winograd : multiplicación de matrices cuadradas
- Algoritmo de Freivalds : un algoritmo aleatorio utilizado para verificar la multiplicación de matrices
- Algoritmo de Strassen : multiplicación de matrices más rápida
- Resolución de sistemas de ecuaciones lineales
- Método del gradiente biconjugado : resuelve sistemas de ecuaciones lineales
- Gradiente conjugado : un algoritmo para la solución numérica de sistemas particulares de ecuaciones lineales
- Eliminación gaussiana
- Eliminación de Gauss-Jordan : resuelve sistemas de ecuaciones lineales
- Método de Gauss-Seidel : resuelve sistemas de ecuaciones lineales de forma iterativa
- Recursión de Levinson : resuelve ecuaciones que involucran una matriz de Toeplitz
- El método de Stone , también conocido como procedimiento fuertemente implícito o SIP, es un algoritmo para resolver un sistema lineal disperso de ecuaciones.
- Sobre-relajación sucesiva (SOR): método utilizado para acelerar la convergencia del método de Gauss-Seidel
- Algoritmo de matriz tridiagonal (algoritmo de Thomas): resuelve sistemas de ecuaciones tridiagonales
- Algoritmos
de matriz dispersa
- Algoritmo Cuthill-McKee : reduce el ancho de banda de una matriz dispersa simétrica
- Algoritmo de grado mínimo : permutar las filas y columnas de una matriz dispersa simétrica antes de aplicar la descomposición de Cholesky
- Descomposición simbólica de Cholesky : una forma eficiente de almacenar matrices dispersas
Montecarlo
- Muestreo de Gibbs : genera una secuencia de muestras a partir de la distribución de probabilidad conjunta de dos o más variables aleatorias
- Monte Carlo híbrido : genera una secuencia de muestras utilizando el método Monte Carlo de cadena de Markov ponderado por Hamilton , a partir de una distribución de probabilidad que es difícil de muestrear directamente.
- Algoritmo Metropolis-Hastings : se utiliza para generar una secuencia de muestras a partir de la distribución de probabilidad de una o más variables.
- Algoritmo de Wang y Landau : una extensión del muestreo del algoritmo Metropolis-Hastings
Integración numérica
- Algoritmo MISER : Simulación de Monte Carlo, integración numérica
Búsqueda de raíces
- Método de bisección
- Método de posición falsa : y método de Illinois: 2 puntos, corchetes
- Método de Halley : utiliza derivadas primera y segunda
- Método ITP : convergencia mínima-máxima óptima y superlineal simultáneamente
- Método de Muller : interpolación cuadrática de 3 puntos
- El método de Newton : encuentra ceros de funciones mediante cálculo
- Método de Ridder : escala exponencial de 3 puntos
- Método secante : 2 puntos, 1 lado
Algoritmos de optimización
Algoritmos híbridos
- Poda alfa-beta : búsqueda para reducir el número de nodos en el algoritmo minimax
- Rama y límite
- Algoritmo de Bruss : ver algoritmo de probabilidades
- Multiplicación de matrices en cadena
- Optimización combinatoria : problemas de optimización donde el conjunto de soluciones factibles es discreto.
- Procedimiento de búsqueda adaptativa aleatoria codiciosa (GRASP): construcciones sucesivas de una solución aleatoria codiciosa y mejoras iterativas posteriores de la misma a través de una búsqueda local
- Método húngaro : un algoritmo de optimización combinatoria que resuelve el problema de asignación en tiempo polinomial
- Satisfacción de restricciones
- Algoritmos generales para la satisfacción de restricciones
- Algoritmo Chaff : un algoritmo para resolver instancias del problema de satisfacibilidad booleano
- Algoritmo de Davis-Putnam : comprobar la validez de una fórmula lógica de primer orden
- Algoritmo de Davis–Putnam–Logemann–Loveland (DPLL): un algoritmo para decidir la satisfacibilidad de una fórmula lógica proposicional en forma normal conjuntiva , es decir, para resolver el problema CNF-SAT
- Problema
de cobertura exacta
- Algoritmo X : un algoritmo no determinista
- Dancing Links : una implementación eficiente del algoritmo X
- Método de entropía cruzada : un enfoque general de Monte Carlo para la optimización combinatoria y continua de múltiples extremos y el muestreo de importancia
- Evolución diferencial
- Programación dinámica : problemas que presentan las propiedades de subproblemas superpuestos y subestructura óptima
- Método del elipsoide : es un algoritmo para resolver problemas de optimización convexa.
- Computación evolutiva : optimización inspirada en los mecanismos biológicos de la evolución
- Estrategia de evolución
- Programación de la expresión genética
- Algoritmos genéticos
- Selección proporcional a la aptitud : también conocida como selección de ruleta
- Muestreo universal estocástico
- Selección de truncamiento
- Selección de torneos
- Algoritmo memético
- Inteligencia de enjambre
- Optimización de colonias de hormigas
- Algoritmo de las abejas : un algoritmo de búsqueda que imita el comportamiento de búsqueda de alimento de los enjambres de abejas melíferas.
- Enjambre de partículas
- Algoritmo de Frank-Wolfe : un algoritmo de optimización iterativo de primer orden para la optimización convexa restringida
- Búsqueda de sección áurea : un algoritmo para encontrar el máximo de una función real
- Descenso de gradiente
- Búsqueda en cuadrícula
- Búsqueda de armonía (HS): un algoritmo metaheurístico que imita el proceso de improvisación de los músicos
- Método del punto interior
- Programación lineal
- Algoritmo de Benson : un algoritmo para resolver problemas de optimización vectorial lineal
- Descomposición de Dantzig-Wolfe : un algoritmo para resolver problemas de programación lineal con estructura especial
- Generación de columna retrasada
- Programación lineal entera : resolver problemas de programación lineal donde algunas o todas las incógnitas están restringidas a valores enteros.
- Algoritmo de Karmarkar : el primer algoritmo razonablemente eficiente que resuelve el problema de programación lineal en tiempo polinomial .
- Algoritmo Simplex : un algoritmo para resolver problemas de programación lineal.
- Búsqueda de línea
- Búsqueda local : una metaheurística para resolver problemas de optimización computacionalmente difíciles
- Minimax utilizado en programación de juegos
- Búsqueda de vecino más cercano (NNS): encuentra los puntos más cercanos en un espacio métrico
- Best Bin First : encuentre una solución aproximada al problema de búsqueda del vecino más cercano en espacios de dimensiones muy altas
- El método de Newton en optimización
- Optimización no lineal
- Método BFGS : un algoritmo de optimización no lineal
- Algoritmo de Gauss-Newton : un algoritmo para resolver problemas de mínimos cuadrados no lineales
- Algoritmo de Levenberg-Marquardt : un algoritmo para resolver problemas de mínimos cuadrados no lineales
- Método de Nelder-Mead (método símplex descendente): un algoritmo de optimización no lineal
- Algoritmo de probabilidades (algoritmo de Bruss): encuentra la estrategia óptima para predecir un último evento específico en una secuencia aleatoria de eventos.
- Búsqueda aleatoria
- Recocido simulado
- Túnel estocástico
- Algoritmo de suma de subconjuntos
- Un algoritmo de gradiente conjugado híbrido HS-LS (ver https://doi.org/10.1016/j.cam.2023.115304)
- Un método híbrido similar a BFGS (ver más en https://doi.org/10.1016/j.cam.2024.115857)
- Métodos de gradiente conjugado (ver más en https://doi.org/10.1016/j.jksus.2022.101923)
Ciencia computacional
Astronomía
- Algoritmo del fin del mundo : día de la semana
- La congruencia de Zeller es un algoritmo para calcular el día de la semana para cualquier fecha del calendario juliano o gregoriano.
- Se utilizan varios algoritmos de Pascua para calcular el día de Pascua.
Bioinformática
- Herramienta básica de búsqueda de alineación local también conocida como BLAST: un algoritmo para comparar información de secuencias biológicas primarias
- Algoritmo de Kabsch : calcula la alineación óptima de dos conjuntos de puntos para calcular la desviación cuadrática media entre dos estructuras de proteínas.
- Velvet : un conjunto de algoritmos que manipulan los gráficos de De Bruijn para el ensamblaje de secuencias genómicas
- Ordenación por reversiones firmadas: un algoritmo para comprender la evolución genómica.
- Máxima parsimonia (filogenética) : un algoritmo para encontrar el árbol filogenético más simple para explicar una matriz de caracteres dada.
- UPGMA : un algoritmo de construcción de árboles filogenéticos basado en la distancia.
- Filtro Bloom : estructura de datos probabilística que se utiliza para comprobar la existencia de un elemento dentro de un conjunto. Se utiliza principalmente en bioinformática para comprobar la existencia de un k-mero en una o más secuencias.
Geociencia
- Fórmulas de Vincenty : un algoritmo rápido para calcular la distancia entre dos puntos de latitud/longitud en un elipsoide
- Geohash : un algoritmo de dominio público que codifica un par decimal de latitud/longitud como una cadena hash
Lingüística
- Algoritmo de Lesk : desambiguación del sentido de las palabras
- Algoritmo de derivación : un método para reducir las palabras a su raíz, base o forma raíz.
- Algoritmo de Sukhotin : un algoritmo de clasificación estadística para clasificar caracteres de un texto como vocales o consonantes.
Medicamento
- Algoritmo ESC para el diagnóstico de insuficiencia cardíaca
- Criterios de Manning para el síndrome del intestino irritable
- Algoritmos para el diagnóstico de la embolia pulmonar
- Proyecto de algoritmo de medicación de Texas
Física
- Algoritmo de restricción : una clase de algoritmos para satisfacer restricciones para cuerpos que obedecen las ecuaciones de movimiento de Newton.
- Algoritmo del demonio : un método de Monte Carlo para muestrear de manera eficiente los miembros de un conjunto microcanónico con una energía dada
- Algoritmo de Featherstone : calcula los efectos de las fuerzas aplicadas a una estructura de juntas y enlaces.
- Aproximación del estado fundamental
- Problemas de cuerpos n
- Simulación de Barnes–Hut : resuelve el problema de n cuerpos de una manera aproximada que tiene el orden O( n log n ) en lugar de O( n 2 ) como en una simulación de suma directa.
- Método multipolar rápido (FMM): acelera el cálculo de fuerzas de largo alcance
- Algoritmo de conteo de Rainflow : reduce un historial de estrés complejo a un recuento de inversiones de estrés elementales para su uso en el análisis de fatiga .
- Barrido y poda : un algoritmo de fase amplia utilizado durante la detección de colisiones para limitar la cantidad de pares de sólidos que se deben verificar para detectar colisiones.
- Algoritmo VEGAS : un método para reducir errores en simulaciones de Monte Carlo
- Dinámica de Glauber : un método para simular el modelo de Ising en una computadora
Estadística
- Algoritmos para calcular la varianza : cómo evitar la inestabilidad y el desbordamiento numérico
- Algoritmo de conteo aproximado : permite contar una gran cantidad de eventos en un registro pequeño
- Estadísticas bayesianas
- Algoritmo de muestreo anidado : un enfoque computacional para el problema de comparación de modelos en estadística bayesiana
- Algoritmos de agrupamiento
- Agrupamiento por ligamiento promedio : un algoritmo de agrupamiento aglomerativo simple
- Algoritmo de agrupamiento de dosel : un algoritmo de preagrupamiento no supervisado relacionado con el algoritmo K-means
- Agrupamiento por ligamiento completo : un algoritmo de agrupamiento aglomerativo simple
- DBSCAN : un algoritmo de agrupamiento basado en la densidad
- Algoritmo de maximización de expectativas
- Agrupamiento difuso : una clase de algoritmos de agrupamiento donde cada punto tiene un grado de pertenencia a grupos.
- C-medias difusas
- Agrupamiento FLAME (agrupamiento difuso por aproximación local de membresías): define clústeres en las partes densas de un conjunto de datos y realiza la asignación de clústeres únicamente en función de las relaciones de vecindad entre los objetos.
- Algoritmo de agrupamiento KHOPCA : un algoritmo de agrupamiento local que produce clústeres jerárquicos de múltiples saltos en entornos estáticos y móviles.
- Agrupamiento k-means : agrupa objetos en particiones según sus atributos
- k-means++ : una variación de esto, que utiliza semillas aleatorias modificadas
- k-medoides : similar a k-medias, pero elige puntos de datos o medoides como centros
- Algoritmo de Linde–Buzo–Gray : un algoritmo de cuantificación vectorial para obtener un buen libro de códigos
- Algoritmo de Lloyd (iteración o relajación de Voronoi): agrupa los puntos de datos en un número determinado de categorías, un algoritmo popular para la agrupación de k-medias
- ÓPTICA : un algoritmo de agrupamiento basado en densidad con un método de evaluación visual
- Agrupamiento de enlace único : un algoritmo de agrupamiento aglomerativo simple
- SUBCLU : un algoritmo de agrupamiento de subespacios
- El método de Ward : un algoritmo de agrupamiento aglomerativo, extendido a algoritmos de Lance-Williams más generales
- Algoritmo de agrupamiento WACA : un algoritmo de agrupamiento local con estructuras potencialmente de múltiples saltos; para redes dinámicas
- Teoría de la estimación
- Algoritmo de maximización de expectativas Una clase de algoritmos relacionados para encontrar estimaciones de máxima verosimilitud de parámetros en modelos probabilísticos.
- Maximización de expectativa de subconjunto ordenado (OSEM): se utiliza en imágenes médicas para tomografía por emisión de positrones , tomografía computarizada por emisión de fotón único y tomografía computarizada con rayos X.
- Algoritmo de probabilidades (algoritmo de Bruss) Búsqueda óptima en línea de valores distinguidos en entradas aleatorias secuenciales
- Filtro de Kalman : estima el estado de un sistema dinámico lineal a partir de una serie de mediciones ruidosas
- Algoritmo de maximización de expectativas Una clase de algoritmos relacionados para encontrar estimaciones de máxima verosimilitud de parámetros en modelos probabilísticos.
- El algoritmo del vecino falso más cercano (FNN) estima la dimensión fractal
- Modelo oculto de Markov
- Algoritmo de Baum-Welch : calcula estimaciones de máxima verosimilitud y estimaciones de modo posterior para los parámetros de un modelo oculto de Markov.
- Algoritmo de avance-retroceso : un algoritmo de programación dinámica para calcular la probabilidad de una secuencia de observación particular.
- Algoritmo de Viterbi : encuentre la secuencia más probable de estados ocultos en un modelo oculto de Markov
- Regresión de mínimos cuadrados parciales : encuentra un modelo lineal que describe algunas variables predichas en términos de otras variables observables
- Teoría de colas
- Algoritmo de Buzen : un algoritmo para calcular la constante de normalización G(K) en el teorema de Gordon-Newell
- RANSAC (abreviatura de "RANdom SAmple Consensus"): un método iterativo para estimar los parámetros de un modelo matemático a partir de un conjunto de datos observados que contiene valores atípicos.
- Algoritmo de puntuación : es una forma del método de Newton que se utiliza para resolver numéricamente ecuaciones de máxima verosimilitud .
- Método de Yamartino : calcular una aproximación a la desviación estándar σθ de la dirección del viento θ durante un solo paso a través de los datos entrantes
- Algoritmo Ziggurat : genera números aleatorios a partir de una distribución no uniforme
Ciencias de la Computación
Arquitectura de computadoras
- Algoritmo de Tomasulo : permite que las instrucciones secuenciales que normalmente se estancarían debido a ciertas dependencias se ejecuten de forma no secuencial.
Gráficos de computadora
- Recorte
- Curvas de nivel e isosuperficies
- Cubos de marcha : extraen una malla poligonal de una isosuperficie de un campo escalar tridimensional (a veces llamados vóxeles)
- Cuadrados de marcha : genera líneas de contorno para un campo escalar bidimensional
- Tetraedros en marcha : una alternativa a los cubos de marcha
- Teorema de Green discreto: es un algoritmo para calcular la integral doble sobre un dominio rectangular generalizado en tiempo constante. Es una extensión natural del algoritmo de tabla de áreas sumadas
- Relleno de inundación : rellena una región conectada de una matriz multidimensional con un símbolo especificado
- Algoritmos de iluminación global : considera la iluminación directa y el reflejo de otros objetos.
- Eliminación de superficies ocultas o determinación visual de superficies
- Algoritmo de Newell : eliminar ciclos poligonales en la ordenación de profundidad requerida en la eliminación de superficies ocultas
- Algoritmo del pintor : detecta partes visibles de un paisaje tridimensional
- Representación de línea de escaneo : construye una imagen moviendo una línea imaginaria sobre la imagen.
- Algoritmo de Warnock
- Dibujo lineal : algoritmo gráfico para aproximar un segmento de línea en medios gráficos discretos.
- Algoritmo de línea de Bresenham : traza puntos de una matriz bidimensional para formar una línea recta entre dos puntos especificados (utiliza variables de decisión)
- Algoritmo de línea DDA : traza puntos de una matriz bidimensional para formar una línea recta entre dos puntos especificados (usa matemáticas de punto flotante)
- Algoritmo de línea de Xiaolin Wu : algoritmo para suavizado de líneas.
- Algoritmo del círculo de punto medio : un algoritmo utilizado para determinar los puntos necesarios para dibujar un círculo.
- Algoritmo de Ramer-Douglas-Peucker : Dada una "curva" compuesta de segmentos de línea, se busca una curva que no sea muy diferente pero que tenga menos puntos.
- Sombreado
- Sombreado Gouraud : un algoritmo para simular los diferentes efectos de la luz y el color en la superficie de un objeto en gráficos de computadora 3D
- Sombreado Phong : un algoritmo para interpolar vectores normales de superficie para el sombreado de superficies en gráficos de computadora 3D
- Slerp (interpolación lineal esférica): interpolación de cuaterniones con el fin de animar la rotación 3D
- Tabla de área sumada (también conocida como imagen integral): un algoritmo para calcular la suma de valores en un subconjunto rectangular de una cuadrícula en tiempo constante
- Partición del espacio binario
Criptografía
- Cifrado asimétrico (clave pública) :
- Firmas digitales (autenticación asimétrica):
- DSA y sus variantes:
- ECDSA y ECDSA determinista
- Licenciatura en Ciencias Aplicadas (EdDSA ) (Ed25519)
- Sociedad Anónima
- DSA y sus variantes:
- Funciones hash criptográficas (véase también la sección sobre códigos de autenticación de mensajes):
- BLAKE
- MD5 – Tenga en cuenta que ahora existe un método para generar colisiones para MD5
- RIPEMD-160
- SHA-1 – Tenga en cuenta que ahora existe un método para generar colisiones para SHA-1
- SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512)
- SHA-3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE128, SHAKE256)
- Tiger (TTH), generalmente utilizado en hashes de árboles Tiger
- TORBELLINO
- Generadores de números pseudoaleatorios criptográficamente seguros
- Blum Blum Shub – basado en la dureza de la factorización
- Fortuna , concebido como una mejora del algoritmo Yarrow
- Registro de desplazamiento con retroalimentación lineal (nota: muchos algoritmos basados en LFSR son débiles o están dañados)
- Algoritmo de milenrama
- Intercambio de claves
- Funciones de derivación de claves , que se utilizan a menudo para el hash de contraseñas y el estiramiento de claves.
- Códigos de autenticación de mensajes (algoritmos de autenticación simétrica, que toman una clave como parámetro):
- Intercambio de secretos , división de secretos, división de claves, algoritmos M de N
- El plan de Blakey
- El plan de Shamir
- Cifrado simétrico (clave secreta) :
- Estándar de cifrado avanzado (AES), ganador del concurso NIST , también conocido como Rijndael
- Pez globo
- Dos peces
- Tres peces
- Estándar de cifrado de datos (DES), a veces algoritmo DE, ganador del concurso de selección de NBS, reemplazado por AES para la mayoría de los propósitos
- IDEA
- RC4 (cifrado)
- Algoritmo de cifrado diminuto (TEA)
- Salsa20 y su variante actualizada ChaCha20
- Criptografía post-cuántica
- Algoritmos de prueba de trabajo
Lógica digital
- Minimización booleana
- Algoritmo de Quine-McCluskey : también llamado algoritmo QM, método programable para simplificar las ecuaciones booleanas.
- El método de Petrick : otro algoritmo para la simplificación booleana
- Minimizador de lógica heurística de espresso : un algoritmo rápido para la minimización de funciones booleanas
Aprendizaje automático y clasificación estadística
- Retropropagación recurrente de Almeida–Pineda : ajuste una matriz de pesos sinápticos para generar las salidas deseadas dadas sus entradas
- ALOPEX : un algoritmo de aprendizaje automático basado en correlación
- Aprendizaje de reglas de asociación : descubra relaciones interesantes entre variables, utilizadas en minería de datos
- Impulso (meta-algoritmo) : utilizar muchos estudiantes débiles para aumentar la eficacia
- AdaBoost : refuerzo adaptativo
- BrownBoost : un algoritmo de refuerzo que puede ser robusto ante conjuntos de datos ruidosos
- LogitBoost : mejora de la regresión logística
- LPBoost : potenciación de la programación lineal
- Agregación bootstrap (bagging): técnica para mejorar la estabilidad y la precisión de la clasificación
- Visión por computadora
- Grabcut basado en cortes de gráficos
- Árboles de decisión
- Algoritmo C4.5 : una extensión de ID3
- Algoritmo ID3 (Iterative Dichotomiser 3): utiliza heurística para generar pequeños árboles de decisión
- Agrupamiento : una clase de algoritmos de aprendizaje no supervisado para agrupar y clasificar vectores de entrada relacionados.
- k-vecinos más cercanos (k-NN): un método para clasificar objetos en función de los ejemplos de entrenamiento más cercanos en el espacio de características
- Algoritmo de Linde–Buzo–Gray : un algoritmo de cuantificación vectorial utilizado para obtener un buen libro de códigos
- Hashing sensible a la localidad (LSH): un método para realizar una reducción de dimensión probabilística de datos de alta dimensión
- Red neuronal
- Retropropagación : un método de aprendizaje supervisado que requiere un profesor que conozca o pueda calcular el resultado deseado para cualquier entrada dada.
- Red de Hopfield : una red neuronal recurrente en la que todas las conexiones son simétricas
- Perceptrón : el tipo más simple de red neuronal de propagación hacia adelante: un clasificador lineal .
- Redes neuronales acopladas a pulsos (PCNN): modelos neuronales propuestos modelando la corteza visual de un gato y desarrollados para el procesamiento de imágenes biomiméticas de alto rendimiento .
- Red de funciones de base radial : una red neuronal artificial que utiliza funciones de base radial como funciones de activación.
- Mapa autoorganizado : una red no supervisada que produce una representación de baja dimensión del espacio de entrada de las muestras de entrenamiento
- Bosque aleatorio : clasificación mediante múltiples árboles de decisión
- Aprendizaje por refuerzo :
- Aprendizaje Q : aprende una función de valor de acción que proporciona la utilidad esperada de tomar una acción determinada en un estado determinado y seguir una política fija a partir de entonces.
- Estado-Acción-Recompensa-Estado-Acción (SARSA): aprenda una política de proceso de decisión de Markov
- Aprendizaje por diferencias temporales
- Máquina de vectores de relevancia (RVM): similar a SVM, pero proporciona clasificación probabilística
- Aprendizaje supervisado : aprendizaje mediante ejemplos (conjunto de datos etiquetados dividido en conjunto de entrenamiento y conjunto de prueba)
- Máquina de vectores de soporte (SVM): un conjunto de métodos que dividen datos multidimensionales encontrando un hiperplano divisor con el margen máximo entre los dos conjuntos.
- SVM estructurado : permite el entrenamiento de un clasificador para etiquetas de salida estructuradas generales.
- Algoritmo Winnow : relacionado con el perceptrón, pero utiliza un esquema de actualización de peso multiplicativo
Teoría de lenguajes de programación
- Linealización C3 : un algoritmo utilizado principalmente para obtener una linealización consistente de una jerarquía de herencia múltiple en programación orientada a objetos.
- Algoritmo de Chaitin : un algoritmo de asignación de registros de coloración de gráficos de abajo hacia arriba que utiliza el costo/grado como su métrica de derrame
- Algoritmo de inferencia de tipos Hindley-Milner
- Algoritmo Rete : un algoritmo de coincidencia de patrones eficiente para implementar sistemas de reglas de producción
- Algoritmo de Sethi-Ullman : genera código óptimo para expresiones aritméticas
Analizando
- Algoritmo CYK : un algoritmo O(n 3 ) para analizar gramáticas libres de contexto en la forma normal de Chomsky
- Analizador de Earley : otro algoritmo O(n 3 ) para analizar cualquier gramática libre de contexto
- Analizador GLR : un algoritmo para analizar cualquier gramática independiente del contexto, de Masaru Tomita . Está optimizado para gramáticas deterministas, en las que funciona en un tiempo casi lineal y O(n 3 ) en el peor de los casos.
- Algoritmo Inside-Outside : un algoritmo O(n 3 ) para reestimar las probabilidades de producción en gramáticas probabilísticas libres de contexto
- Analizador LL : un algoritmo de análisis de tiempo lineal relativamente simple para una clase limitada de gramáticas libres de contexto
- Analizador LR : un algoritmo de análisis de tiempo lineal más complejo para una clase más amplia de gramáticas independientes del contexto . Variantes:
- Analizador Packrat : un algoritmo de análisis de tiempo lineal que admite algunas gramáticas libres de contexto y analiza gramáticas de expresión
- Analizador sintáctico descendente recursivo : un analizador sintáctico de arriba hacia abajo adecuado para gramáticas LL( k )
- Algoritmo de patio de maniobras : convierte una expresión matemática de notación infija en una de notación posfija
- Analizador Pratt
- Análisis léxico
Algoritmos cuánticos
- Algoritmo de Deutsch-Jozsa : criterio de equilibrio para una función booleana
- Algoritmo de Grover : proporciona una aceleración cuadrática para muchos problemas de búsqueda
- Algoritmo de Shor : proporciona una aceleración exponencial (en relación con los algoritmos no cuánticos conocidos actualmente) para factorizar un número.
- Algoritmo de Simon : proporciona una aceleración exponencial demostrable (en relación con cualquier algoritmo no cuántico) para un problema de caja negra
Teoría de la computación y autómatas
- Algoritmo de Hopcroft , algoritmo de Moore y algoritmo de Brzozowski : algoritmos para minimizar el número de estados en un autómata finito determinista
- Construcción de conjuntos de potencias : algoritmo para convertir un autómata no determinista en un autómata determinista .
- Algoritmo de Tarski-Kuratowski : un algoritmo no determinista que proporciona un límite superior para la complejidad de las fórmulas en la jerarquía aritmética y la jerarquía analítica.
Teoría de la información y procesamiento de señales
Teoría de la codificación
Detección y corrección de errores
- Códigos BCH
- Algoritmo BCJR : decodificación de códigos de corrección de errores definidos en enrejados (principalmente códigos convolucionales)
- Corrección de errores hacia adelante
- Código gris
- Códigos de Hamming
- Hamming(7,4) : un código Hamming que codifica 4 bits de datos en 7 bits agregando 3 bits de paridad
- Distancia de Hamming : suma del número de posiciones que son diferentes
- Peso de Hamming (conteo de población): encuentre la cantidad de bits 1 en una palabra binaria
- Comprobaciones de redundancia
- Adler-32
- Comprobación de redundancia cíclica
- Algoritmo de Damm
- Suma de comprobación de Fletcher
- Comprobación de redundancia longitudinal (LRC)
- Algoritmo de Luhn : un método para validar números de identificación
- Algoritmo Luhn mod N : extensión de Luhn a caracteres no numéricos
- Paridad : técnica de detección de errores sencilla y rápida
- Algoritmo de Verhoeff
Algoritmos de compresión sin pérdida
- Transformada de Burrows-Wheeler : preprocesamiento útil para mejorar la compresión sin pérdidas
- Ponderación del árbol de contexto
- Codificación delta : ayuda a la compresión de datos en los que aparecen datos secuenciales con frecuencia.
- Compresión dinámica de Markov : compresión mediante codificación aritmética predictiva
- Codificadores de diccionarios
- Codificación de pares de bytes (BPE)
- Desinflar
- Lempel–Ziv
- LZ77 y LZ78
- Lempel-Ziv Jeff Bonwick (LZJB)
- Algoritmo de cadena Lempel-Ziv-Markov (LZMA)
- Lempel–Ziv–Oberhumer (LZO): orientado a la velocidad
- Lempel–Ziv–Stac (LZS)
- Lempel–Ziv–Storer–Szymanski (LZSS)
- Lempel–Ziv–Welch (LZW)
- LZWL : variante basada en sílabas
- LZX
- Lempel-Ziv Ross Williams (LZRW)
- Codificación de entropía : esquema de codificación que asigna códigos a los símbolos de modo que coincidan las longitudes de los códigos con las probabilidades de los símbolos.
- Codificación aritmética : codificación
de entropía avanzada
- Codificación de rango : igual que la codificación aritmética , pero vista de una manera ligeramente diferente
- Codificación de Huffman : compresión simple sin pérdida que aprovecha las frecuencias relativas de los caracteres
- Codificación Huffman adaptativa : técnica de codificación adaptativa basada en la codificación Huffman
- Algoritmo de fusión de paquetes : optimiza la codificación de Huffman sujeta a una restricción de longitud en las cadenas de código
- Codificación de Shannon-Fano
- Codificación de Shannon-Fano-Elias : precursora de la codificación aritmética [5]
- Codificación aritmética : codificación
de entropía avanzada
- Codificación de entropía con características de entropía conocidas
- Codificación de Golomb : forma de codificación de entropía que es óptima para alfabetos que siguen distribuciones geométricas
- Codificación de Rice : forma de codificación de entropía que es óptima para alfabetos que siguen distribuciones geométricas
- Codificación binaria truncada
- Codificación unaria : código que representa un número n con n unos seguidos de un cero
- Códigos universales : codifica números enteros positivos en palabras de código binario
- Codificación delta , gamma y omega de Elias
- Codificación exponencial de Golomb
- Codificación de Fibonacci
- Codificación de Levenshtein
- Sistema de compresión de imágenes rápido, eficiente y sin pérdidas (FELICS): un algoritmo de compresión de imágenes sin pérdidas
- Codificación incremental : codificación delta aplicada a secuencias de cadenas
- Predicción por correspondencia parcial (PPM): una técnica de compresión de datos estadísticos adaptativa basada en el modelado y la predicción del contexto
- Codificación de longitud de ejecución : compresión de datos sin pérdida que aprovecha cadenas de caracteres repetidos
- Algoritmo SEQUITUR : compresión sin pérdidas mediante inferencia gramatical incremental en una cadena
Algoritmos de compresión con pérdida
- 3Dc : un algoritmo de compresión de datos con pérdida para mapas normales
- Compresión
de audio y voz
- Algoritmo de ley A : algoritmo de compresión y compresión estándar
- Predicción lineal excitada por código (CELP): compresión de voz a baja tasa de bits
- Codificación predictiva lineal (LPC): compresión con pérdida mediante la representación de la envolvente espectral de una señal digital de voz en forma comprimida
- Algoritmo Mu-law : algoritmo estándar de compresión o expansión de señales analógicas
- Codificación predictiva lineal deformada (WLPC)
- Compresión de imagen
- Codificación de truncamiento de bloques (BTC): un tipo de técnica de compresión de imágenes con pérdida para imágenes en escala de grises
- Wavelet de árbol cero integrado (EZW)
- Algoritmos de transformada rápida de coseno (algoritmos FCT): calculan la transformada discreta de coseno (DCT) de manera eficiente
- Compresión fractal : método utilizado para comprimir imágenes utilizando fractales.
- Particionamiento de conjuntos en árboles jerárquicos (SPIHT)
- Compresión wavelet : forma de compresión de datos muy adecuada para la compresión de imágenes (a veces también para la compresión de vídeo y la compresión de audio)
- Codificación de transformación : tipo de compresión de datos para datos "naturales", como señales de audio o imágenes fotográficas.
- Compresión de vídeo
- Cuantización vectorial : técnica que se utiliza a menudo en la compresión de datos con pérdida.
Procesamiento de señales digitales
- Algoritmo aditivo adaptativo (algoritmo AA): encuentra la fase de frecuencia espacial de una fuente de onda observada
- Transformada de Fourier discreta : determina las frecuencias contenidas en una (segmento de una) señal
- Algoritmo de plegado rápido : un algoritmo eficiente para la detección de eventos aproximadamente periódicos dentro de datos de series de tiempo
- Algoritmo de Gerchberg-Saxton : algoritmo de recuperación de fase para planos ópticos
- Algoritmo de Goertzel : identifica un componente de frecuencia particular en una señal. Puede utilizarse para decodificar dígitos DTMF .
- Síntesis de cuerdas Karplus-Strong : síntesis de modelado físico para simular el sonido de una cuerda pulsada o martilleada o algunos tipos de percusión
Procesamiento de imágenes
- Mejora del contraste
- Ecualización de histograma : utilice el histograma para mejorar el contraste de la imagen
- Ecualización de histograma adaptativa : ecualización de histograma que se adapta a los cambios locales en el contraste.
- Etiquetado de componentes conectados : busque y etiquete regiones disjuntas
- Tramado y semitono
- Algoritmo de mapa de diferencias de Elser : un algoritmo de búsqueda para problemas de satisfacción de restricciones generales. Originalmente utilizado para microscopía de difracción de rayos X
- Detección de características
- Detector de bordes Canny : detecta una amplia gama de bordes en imágenes
- Transformada de Hough generalizada
- Transformada de Hough
- Algoritmo de Marr-Hildreth : un algoritmo de detección temprana de bordes
- SIFT (Transformación de características invariantes de escala): es un algoritmo para detectar y describir características locales en imágenes.
- SURF ( Speeded Up Robust Features ) : es un detector de características locales robusto, presentado por primera vez por Herbert Bay et al. en 2006, que se puede utilizar en tareas de visión artificial como el reconocimiento de objetos o la reconstrucción 3D. Está parcialmente inspirado en el descriptor SIFT. La versión estándar de SURF es varias veces más rápida que SIFT y sus autores afirman que es más robusta frente a diferentes transformaciones de imágenes que SIFT. [6] [7]
- Desconvolución de Richardson-Lucy : algoritmo para desenfocar imágenes
- Deconvolución ciega : algoritmo de desenfocado de imágenes cuando se desconoce la función de dispersión de puntos .
- Filtrado de mediana
- Tallado de costuras : algoritmo de redimensionamiento de imágenes que tiene en cuenta el contenido
- Segmentación : dividir una imagen digital en dos o más regiones
- Algoritmo GrowCut : un algoritmo de segmentación interactivo
- Algoritmo del caminante aleatorio
- Región en crecimiento
- Transformación de cuencas hidrográficas : una clase de algoritmos basados en la analogía de cuencas hidrográficas
Ingeniería de software
- Algoritmos de caché
- Conversión CHS : conversión entre sistemas de direccionamiento de disco
- Doble dabble : Convertir números binarios a BCD
- Función hash : convierte una gran cantidad de datos, posiblemente de tamaño variable, en un dato pequeño, generalmente un único entero que puede servir como índice en una matriz.
- Función hash de Fowler-Noll-Vo : rápida y con baja tasa de colisiones
- Hashing de Pearson : calcula solo valores de 8 bits, optimizado para computadoras de 8 bits
- Hashing Zobrist : se utiliza en la implementación de tablas de transposición
- Algoritmo de intercalación Unicode
- Algoritmo de intercambio Xor : intercambia los valores de dos variables sin utilizar un búfer
Algoritmos de bases de datos
- Algoritmos para la recuperación y el aislamiento que explotan la semántica (ARIES): recuperación de transacciones
- Unir algoritmos
- La persecución
Algoritmos de sistemas distribuidos
- Sincronización de reloj
- Consenso (informática) : ponerse de acuerdo sobre un único valor o historial entre procesadores no fiables
- Detección de terminación de proceso
- Ordenamiento de Lamport : un ordenamiento parcial de eventos basado en la relación entre lo que sucedió antes
- Elección de líder : un método para seleccionar dinámicamente un coordinador
- Exclusión mutua
- Algoritmo de instantánea : registra un estado global consistente para un sistema asincrónico
- Relojes vectoriales : generan un ordenamiento parcial de eventos en un sistema distribuido y detectan violaciones de causalidad
Algoritmos de asignación y desasignación de memoria
- Asignación de memoria de amigos : un algoritmo para asignar memoria con menos fragmentación
- Recolectores de basura
- Algoritmo de Cheney : una mejora del colector semiespacial
- Recolector de basura generacional : recolectores de basura rápidos que segregan la memoria por edad
- Algoritmo Mark-Compact : una combinación del algoritmo Mark-Sweep y el algoritmo de copia de Cheney
- Marcar y barrer
- Coleccionista semiespacial: un coleccionista de copias tempranas
- Recuento de referencias
Redes
- Algoritmo de Karn : aborda el problema de obtener estimaciones precisas del tiempo de ida y vuelta de los mensajes cuando se utiliza TCP
- Algoritmo de Luleå : una técnica para almacenar y buscar tablas de enrutamiento de Internet de manera eficiente
- Congestión de la red
- Retroceso exponencial
- Algoritmo de Nagle : mejora la eficiencia de las redes TCP/IP fusionando paquetes
- Retroceso exponencial binario truncado
Algoritmos de sistemas operativos
- Algoritmo del banquero : algoritmo utilizado para evitar bloqueos
- Algoritmos de reemplazo de página : para seleccionar la página víctima en condiciones de poca memoria
- Caché de reemplazo adaptativo : mejor rendimiento que LRU
- Reloj con reemplazo adaptativo (CAR): un algoritmo de reemplazo de páginas con un rendimiento comparable al del caché de reemplazo adaptativo
Sincronización de procesos
Programación
- Fecha límite más temprana, primera programación
- Programación de reparto equitativo
- Programación con el mínimo tiempo de holgura
- Programación de listas
- Cola de retroalimentación de varios niveles
- Programación monotónica de tasas
- Programación por turnos
- El trabajo más corto a continuación
- Tiempo restante más corto
- Algoritmo de nodos superiores : gestión del calendario de recursos
Programación de E/S
Programación de discos
- Algoritmo de ascensor : algoritmo de programación de discos que funciona como un ascensor.
- Búsqueda más corta primero : algoritmo de programación de disco para reducir el tiempo de búsqueda .
Véase también
- Lista de estructuras de datos
- Lista de algoritmos de aprendizaje automático
- Lista de algoritmos de búsqueda de rutas
- Lista de temas generales sobre algoritmos
- Lista de términos relacionados con algoritmos y estructuras de datos
- Heurístico
Referencias
- ^ "algoritmo". LII / Instituto de Información Jurídica . Consultado el 26 de octubre de 2023 .
- ^ Gegenfurtner, Karl R. (1992-12-01). "PRAXIS: algoritmo de Brent para la minimización de funciones". Métodos, instrumentos y computadoras de investigación del comportamiento . 24 (4): 560–564. doi : 10.3758/BF03203605 . ISSN 1532-5970.
- ^ "richardshin.com | Algoritmo de detección de ciclos de Floyd". 2013-09-30 . Consultado el 2023-10-26 .
- ^ "Búsqueda binaria de Eytzinger - Algorithmica" . Consultado el 9 de abril de 2023 .
- ^ "Codificación de Shannon-Fano-Elias" (PDF) . my.ece.msstate.edu . Archivado desde el original (PDF) el 28 de febrero de 2021 . Consultado el 11 de octubre de 2023 .
- ^ "Copia archivada" (PDF) . www.vision.ee.ethz.ch . Archivado desde el original (PDF) el 21 de febrero de 2007 . Consultado el 13 de enero de 2022 .
{{cite web}}: CS1 maint: archived copy as title (link) - ^ "Copia archivada" (PDF) . Archivado desde el original (PDF) el 6 de octubre de 2013. Consultado el 5 de octubre de 2013 .
{{cite web}}: CS1 maint: archived copy as title (link)