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 las evaluaciones de riesgos, la vigilancia preventiva y la 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 las 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 de 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 el 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 función de 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 : encuentra la alineación 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 combinación : ordena la primera y la segunda mitad de la lista por separado y luego combina 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 cubo 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 hamiltoniano , 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
- Método de gradientes colineales
- 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 el error en las 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
- Susurros chinos
- Agrupamiento por ligamiento completo : un algoritmo de agrupamiento aglomerativo simple
- DBSCAN : un algoritmo de agrupamiento basado en 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 en 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 la superficie
- 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 puntos específicos
- 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 de 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 sombreado de superficie 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 secreto compartido 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 no paramétrico 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 de 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 del coseno (algoritmos FCT): calculan la transformada discreta del 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 adaptativo-aditivo (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
- Desconvolució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 según 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
- El 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: copia archivada como título ( enlace ) - ^ "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: copia archivada como título ( enlace )