Un algoritmo es un conjunto fundamental de reglas o procedimientos definidos que normalmente se diseñan y utilizan para ser una forma más sencilla de resolver un problema específico o un conjunto amplio de problemas.
En pocas palabras, los algoritmos definen diferentes procesos, conjuntos de reglas y regulaciones, o metodologías que deben seguirse en cálculos, procesamiento de datos, minería de datos, reconocimiento de patrones, razonamiento automatizado u otras operaciones de resolución de problemas. Con la creciente automatización de los servicios, cada vez más decisiones se toman mediante algoritmos. Algunos ejemplos generales son las evaluaciones de riesgos, la vigilancia preventiva y la tecnología de reconocimiento de patrones. [ 1 ]
A continuación se presenta una lista de algoritmos conocidos .
Planificación automatizada
Algoritmos combinatorios
Algoritmos combinatorios generales
- El algoritmo de Brent : encuentra un ciclo en las iteraciones del valor de la función utilizando solo dos iteradores [ 2 ]
- Algoritmo de búsqueda de ciclos de Floyd : encuentra un ciclo en iteraciones de valor de función [ 3 ]
- Algoritmo de Gale-Shapley : resuelve el problema de emparejamiento estable [ 4 ] [ 5 ] [ 6 ]
- Generadores de números pseudoaleatorios (distribuidos uniformemente; véase también la Lista de generadores de números pseudoaleatorios para otros PRNG con distintos grados de convergencia y calidad estadística):
Algoritmos de grafos
- Algoritmo Blossom : algoritmo para construir emparejamientos de cardinalidad máxima en grafos.
- Algoritmo de coloración : algoritmos para la coloración de grafos (vértices o aristas) (sujetos a restricciones, por ejemplo, coloración propia o coloración de listas ).
- Algoritmo de Hopcroft-Karp : convierte un grafo bipartito en un grafo de cardinalidad máxima.
- Algoritmo húngaro : algoritmo para encontrar una coincidencia perfecta
- Codificación de Prüfer : conversión entre un árbol etiquetado y su secuencia de Prüfer.
- Algoritmo de Tarjan para encontrar los ancestros comunes más bajos fuera de línea : calcula los ancestros comunes más bajos para pares de nodos en un árbol.
- Ordenación topológica : encuentra un orden lineal de los nodos (por ejemplo, trabajos) en función de sus dependencias.
Dibujo de gráficos
- Algoritmos de dibujo de grafos de monedas para grafos planares conexos finitos (calculando aproximadamente el empaquetamiento de círculos teórico dado por el teorema de Koebe-Andreev-Thurston). Véase también el teorema de Fáry sobre dibujos de grafos planares mediante líneas rectas.
- 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 redes
- 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
- TrustRank
- Análisis de enlaces
- Redes de flujo
- El 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 flujo máximo en un grafo.
- Algoritmo de Karger : un método de Monte Carlo para calcular el corte mínimo de un grafo conexo.
- Algoritmo de reetiquetado y reenvío : calcula el flujo máximo en un grafo.
Enrutamiento para grafos
- Algoritmo de Edmonds (también conocido como algoritmo de Chu-Liu/Edmonds): encuentra las ramificaciones máximas o mínimas.
- Árbol de expansión mínima euclidiana : algoritmos para calcular el árbol de expansión mínima de un conjunto de puntos en el plano.
- Problema del camino más largo : encontrar un camino simple de longitud máxima en un grafo dado.
- árbol de expansión mínima
- Un conmutador de extensión mínima sin bloqueo , por ejemplo, para una central telefónica.
- problema del camino más corto
- Algoritmo de Bellman-Ford : calcula los caminos más cortos en un grafo ponderado (donde algunos de los pesos de las aristas pueden ser negativos).
- Algoritmo de Dijkstra : calcula los caminos más cortos en un grafo con pesos de aristas no negativos.
- Algoritmo de Floyd-Warshall : resuelve el problema del camino más corto entre todos los pares de grafos en un grafo dirigido ponderado.
- Algoritmo de Johnson : algoritmo de ruta más corta entre todos los pares de grafos dirigidos ponderados dispersos.
- Problema de cierre transitivo : encontrar el cierre transitivo de una relación binaria dada.
- El problema del viajante
- Problema de enrutamiento de vehículos
- Algoritmo de ahorro de Clarke y Wright
- Regla de Warnsdorff : un método heurístico para resolver el problema del recorrido del caballo.
Búsqueda gráfica
- A* : caso especial de búsqueda primero el mejor que utiliza heurísticas para mejorar la velocidad.
- B* : un algoritmo de búsqueda en grafos que busca primero el mejor camino y encuentra la ruta de menor costo desde un nodo inicial dado hasta cualquier nodo objetivo (de entre uno o más objetivos posibles).
- Retroceso : abandona las soluciones parciales cuando se descubre que no satisfacen una solución completa.
- Búsqueda en haz : es un algoritmo de búsqueda heurística que optimiza la búsqueda primero el más grande y reduce sus requisitos de memoria.
- Búsqueda por apilamiento de haces : integra el retroceso con la búsqueda por haces.
- Búsqueda primero el mejor : recorre un grafo en orden de importancia probable utilizando una cola de prioridad.
- Búsqueda bidireccional : encontrar el camino más corto desde un vértice inicial hasta un vértice objetivo en un grafo dirigido.
- Búsqueda en anchura : recorre un grafo nivel por nivel.
- Búsqueda por fuerza bruta : un método de búsqueda exhaustivo y fiable, pero computacionalmente ineficiente en muchas aplicaciones.
- D* : un algoritmo de búsqueda heurística incremental
- Búsqueda en profundidad : recorre un grafo rama por rama.
- Algoritmo de Dijkstra : un caso especial de A* para el cual no se utiliza ninguna función heurística.
- Solucionador general de problemas : un algoritmo fundamental para la demostración de teoremas, diseñado para funcionar como una máquina universal de resolución de problemas.
- 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 anchura lexicográfica (también conocida como Lex-BFS): un algoritmo de tiempo lineal para ordenar los vértices de un grafo.
- SSS* : búsqueda en el espacio de estados que recorre un árbol de juego de forma primero el mejor, similar a la del algoritmo de búsqueda A*.
- Búsqueda de costo uniforme : una búsqueda en árbol que encuentra la ruta de menor costo donde los costos varían.
Subgrafos
- camarillas
- Algoritmo de Bron-Kerbosch : una técnica para encontrar camarillas máximas en un grafo no dirigido.
- Algoritmo de clique máximo de MaxCliqueDyn : encuentra un clique máximo en un grafo no dirigido.
- Componentes fuertemente conectados
- problema de isomorfismo de subgrafos
Algoritmos de secuencia
Coincidencia de secuencias aproximada
- Algoritmo Bitap : algoritmo difuso que determina si dos cadenas de caracteres son aproximadamente iguales.
- Algoritmos fonéticos
- Daitch–Mokotoff Soundex : un perfeccionamiento de Soundex que permite la coincidencia de apellidos eslavos y germánicos.
- Metaphone doble : una mejora de Metaphone
- Enfoque de calificación de coincidencia : 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 , mejora Soundex.
- Soundex : un algoritmo fonético para indexar nombres por sonido, tal como se pronuncian en inglés.
- Métricas de cadena : calcula una puntuación de similitud o disimilitud (distancia) entre dos pares de cadenas de texto.
- Distancia de Damerau-Levenshtein : calcula una medida de distancia entre dos cadenas, 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 de caracteres.
- Distancia de edición de Levenshtein : calcula una métrica para la cantidad de diferencia entre dos secuencias.
- Búsqueda de trigramas : busca texto cuando no se conoce con precisión la sintaxis o la ortografía exactas del objeto de destino.
Algoritmos de selección
Búsqueda de secuencias
- Búsqueda lineal : localiza un elemento en una secuencia no ordenada.
- Algoritmo de selección : encuentra el k -ésimo elemento más grande en una secuencia.
- Listas ordenadas
- Algoritmo de búsqueda binaria : localiza un elemento en una secuencia ordenada.
- Búsqueda binaria de Eytzinger : algoritmo de búsqueda binaria compatible con la caché [ 7 ]
- Técnica de búsqueda de Fibonacci : busca en una secuencia ordenada utilizando un algoritmo de divide y vencerás que reduce las posibles ubicaciones con la ayuda de los números de Fibonacci.
- Búsqueda por saltos (o búsqueda por bloques): 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 frente a los valores máximo y mínimo de la búsqueda. A veces se denomina búsqueda por diccionario o búsqueda interpolada.
- Búsqueda binaria uniforme : una optimización del algoritmo clásico de búsqueda binaria.
- Búsqueda ternaria : una 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.
Fusión de secuencias
- algoritmo de fusión k-vías
- Algoritmo de fusión simple
- Unión (combinación, con elementos en la salida que no se repiten)
Permutaciones de secuencias
- Barajado de Fisher-Yates (también conocido como barajado de Knuth): barajar aleatoriamente un conjunto finito
- Algoritmo de generación de permutaciones de Heap : intercambiar elementos para generar la siguiente permutación.
- 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 de Johnson-Trotter): genera permutaciones transponiendo elementos.
Combinaciones de secuencias
Alineación de secuencias
- Deformación temporal dinámica : mide la similitud entre dos secuencias que pueden variar en tiempo o velocidad.
- Algoritmo de Hirschberg : encuentra la alineación de secuencias de menor coste 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 alineación de secuencias locales
Clasificación de secuencias
- Tipos de intercambio
- Ordenación de burbuja : para cada par de índices, intercambia los elementos si están fuera de orden.
- Ordenación por agitación de cóctel o ordenación de burbuja bidireccional, una ordenación de burbuja que recorre la lista alternativamente de adelante hacia atrás y de atrás hacia adelante.
- Clasificación por peine
- Tipo gnomo
- Tipo par-impar
- Quicksort : divide la lista en dos, colocando todos los elementos de la primera lista antes que todos los de la segunda; luego ordena las dos listas. Suele ser el método preferido.
- Humorístico o ineficaz
- Bogosort : la lista se baraja aleatoriamente hasta que quede ordenada.
- Clasificación lenta
- Tipo títere
- Híbrido
- Ordenación rápida
- Introsort : comienza con quicksort y cambia a heapsort cuando la profundidad de recursión supera 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.
- Ordenación por inserción
- Ordenación cíclica : in situ con un número teóricamente óptimo de escrituras.
- Ordenación por inserción : determina dónde pertenece el elemento actual en la lista de elementos ordenados y lo inserta allí.
- Clasificación de la biblioteca
- Clasificación de la paciencia
- Ordenación Shell : un intento de mejorar la ordenación por inserción.
- Ordenación en árbol (ordenación en árbol binario): se construye un árbol binario y luego se recorre para crear una lista ordenada.
- Ordenación por fusión
- Ordenación por fusión : ordena la primera y la segunda mitad de la lista por separado y luego fusiona las listas ordenadas.
- Clasificación lenta
- Clasificación por hebras
- Clasificación sin comparación
- Clasificación de cuentas
- Clasificación por cubos
- Burstsort : construye un trie de ráfaga compacto y eficiente en caché, y luego lo recorre para crear una salida ordenada.
- Clasificación por conteo
- Clasificación por casilleros
- Ordenación del cartero : variante de la ordenación por cubetas que aprovecha la estructura jerárquica.
- Ordenación por radix : ordena las cadenas letra por letra.
- Ordenación por selección
- Heapsort : convierte la lista en un montón, elimina el elemento más grande del montón y agrégalo 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.
- Ordenación suave
- Otro
- Clase desconocida
Subsecuencias
- Problema de la subsecuencia común más larga : Encontrar la subsecuencia más larga común a todas las secuencias en un conjunto de secuencias.
- Problema de la subsecuencia creciente más larga : Encontrar la subsecuencia creciente más larga de una secuencia dada.
- Algoritmo de Ruzzo-Tompa : Encuentra todas las subsecuencias contiguas, no superpuestas y de puntuación máxima en una secuencia de números reales.
- Problema de supersecuencia común más corta : Encontrar la supersecuencia más corta que contenga dos o más secuencias como subsecuencias.
Subcadenas
- Algoritmo de Kadane : encuentra el subconjunto contiguo con la suma más grande en un arreglo de números.
- Problema de la subcadena común más larga : encontrar la cadena (o cadenas) más larga que sea una subcadena (o sean subcadenas) de dos o más cadenas.
- Comodines coincidentes
- Algoritmo de coincidencia de comodines de Krauss : un algoritmo no recursivo de código abierto.
- wildmat de Rich Salz : un algoritmo recursivo de código abierto ampliamente utilizado.
- Búsqueda de subcadenas
- Algoritmo de búsqueda de cadenas de Aho-Corasick : algoritmo basado en árboles de prefijos para encontrar todas las subcadenas que coinciden con cualquier cadena de un conjunto finito.
- Algoritmo de Boyer-Moore-Horspool : Simplificación del algoritmo de Boyer-Moore.
- Algoritmo de búsqueda de cadenas de Boyer-Moore : algoritmo lineal amortizado ( sublineal en la mayoría de los casos) para la búsqueda de subcadenas.
- Algoritmo de Knuth-Morris-Pratt : búsqueda de subcadenas que evita la reevaluación de los caracteres coincidentes.
- Algoritmo de búsqueda de cadenas de 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 de tiempo lineal para la construcción de árboles de sufijos.
Matemáticas computacionales
Álgebra abstracta
- Búsqueda de Chien : un algoritmo recursivo para determinar las raíces de polinomios definidos sobre un campo finito.
- Algoritmo de Schreier-Sims : cálculo de un conjunto base y un conjunto generador fuerte (BSGS) de un grupo de permutaciones.
- 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 a su vez términos hipergeométricos.
- Algoritmo de completación de Knuth-Bendix : para sistemas de reglas de reescritura
- Algoritmo de división multivariable : para polinomios en varias indeterminadas
- Algoritmo del 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 menor grado.
- 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 del cono : identificar puntos de la superficie
- Algoritmos de envolvente convexa : determinación de la envolvente convexa de un conjunto de puntos.
- Transformación de distancia euclidiana : calcula la distancia entre cada punto de una cuadrícula y un conjunto discreto de puntos.
- Hashing geométrico : un método para encontrar eficientemente 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 figuras convexas .
- Algoritmo de salto y caminata : 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 dos líneas se intersecan, generalmente mediante un algoritmo de barrido de línea.
- Algoritmos de caja delimitadora mínima : encontrar la caja delimitadora mínima orientada que encierra un conjunto de puntos.
- Búsqueda del vecino más cercano : encuentra 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 del espacio.
- Algoritmos de detección de puntos en polígonos : comprueba si un punto dado se encuentra dentro de un polígono determinado.
- Algoritmos de registro de conjuntos de puntos : encuentran la transformación entre dos conjuntos de puntos para alinearlos de forma óptima.
- Calibradores giratorios : determinan todos los pares antipodales de puntos y vértices en un polígono convexo o envolvente convexa .
- Algoritmo del cordón de zapato : determina el área de un polígono cuyos vértices se describen mediante pares ordenados en el plano.
- Triangulación
- Triangulación de Delaunay
- Segundo algoritmo de Chew : crear triangulaciones de Delaunay con restricciones de calidad.
- Algoritmo de Ruppert (también conocido como refinamiento de Delaunay): crea triangulaciones de Delaunay de calidad.
- Triángulos en marcha : reconstrucción de la geometría de superficies bidimensionales 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.
- Cuasitriangulación
- Diagramas de Voronoi , dual geométrico de la triangulación de Delaunay.
- Algoritmo de Bowyer-Watson : crea diagramas de Voronoi en cualquier número de dimensiones.
- Algoritmo de Fortune : crear diagrama de Voronoi
- Triangulación de Delaunay
Algoritmos de teoría de números
- Algoritmo binario para el MCD : una forma eficiente de calcular el MCD.
- El algoritmo de multiplicación de Booth
- Método de 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
- El algoritmo de Dixon
- Método de factorización de Fermat
- tamiz de campo de número general
- factorización de curvas elípticas de Lenstra
- Algoritmo p − 1 de Pollard
- El algoritmo rho de Pollard
- algoritmo de factorización prima
- Tamiz cuadrático
- El algoritmo de Shor
- tamiz de campo de número especial
- División de juicios
- Algoritmo de Lenstra-Lenstra-Lovász (también conocido como algoritmo LLL): encuentra una base reticular corta y casi ortogonal en tiempo polinomial.
- Raíz cuadrada modular : cálculo de raíces cuadradas módulo un número primo
- Algoritmos de multiplicación : multiplicación rápida de dos números
- Algoritmo de Odlyzko-Schönhage : calcula los ceros no triviales de la función zeta de Riemann.
- Pruebas de primalidad : determinar si un número dado es primo.
Algoritmos numéricos
Resolución de ecuaciones diferenciales
- Método de Euler hacia atrás
- Método de Euler
- Métodos lineales de pasos múltiples
- 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 Crank-Nicolson para ecuaciones de difusión
- Método de diferencias finitas
- Ecuaciones de Lax-Wendroff para ecuaciones de ondas
- Métodos de Runge-Kutta
- Regla trapezoidal (ecuaciones diferenciales)
- Integración de Verlet ( pronunciación en francés: [ vɛʁˈlɛ ] ): integrar las ecuaciones de movimiento de Newton.
Funciones elementales y especiales
- Cálculo de π :
- Fórmula de Bailey-Borwein-Plouffe : (fórmula BBP) un algoritmo de espiga para el cálculo del enésimo dígito binario de π.
- Algoritmo de Borwein : un algoritmo para calcular el valor de 1/π
- Algoritmo de Chudnovsky : un método rápido para calcular los dígitos de π.
- Algoritmo de Gauss-Legendre : calcula los dígitos de pi.
- Algoritmos de división : para calcular el cociente y/o el resto de dos números.
- División Goldschmidt
- División larga
- División de Newton-Raphson : utiliza el método de Newton para hallar el recíproco de D y multiplica ese recíproco por N para hallar el cociente final Q.
- División no restauradora
- Restablecer la división
- División SRT
- Exponenciación:
- Exponenciación en cadena de sumas : exponenciación mediante potencias enteras positivas que requiere un número mínimo de multiplicaciones.
- Exponenciación por elevación al cuadrado : un algoritmo utilizado para el cálculo rápido de grandes potencias enteras de un número.
- 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.
- 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 enteros para números muy grandes que posee una complejidad asintótica muy baja.
- Algoritmo de 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 de inverso multiplicativo : para calcular el inverso multiplicativo (recíproco) de un número.
- Funciones de redondeo : las formas clásicas de redondear números
- Algoritmo Spigot : una forma de calcular el valor de una constante matemática sin conocer los dígitos precedentes.
- Raíz cuadrada y raíz 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 la raíz n -ésima
- Suma:
- Descomposición binaria : una técnica de divide y vencerás 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 coma flotante.
- Algoritmo sin restricciones
Geométrico
- Retroproyección filtrada : calcula de forma eficiente la transformada de Radon bidimensional inversa .
- Método de conjunto de niveles (LSM): una técnica numérica para el seguimiento de 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 mediante polinomios de Lagrange
- Interpolación lineal : un método de ajuste de curvas mediante polinomios lineales.
- Interpolación cúbica monótona : una variante de la interpolación cúbica que preserva la monotonicidad del conjunto de datos que se está interpolando.
- 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 multivariante utilizado para calcular nuevos valores para cualquier dato muestreado digitalmente.
- Interpolación del vecino más cercano
- Interpolación tricúbica : una generalización de la interpolación cúbica a tres dimensiones.
- Interpolación de Pareto : un 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 spline : Reduce el error debido al fenómeno de Runge .
- interpolación trigonométrica
Álgebra lineal
- Algoritmos de valores propios
- Proceso de Gram-Schmidt : ortogonaliza un conjunto de vectores.
- Métodos de Krylov (para problemas con matrices dispersas de gran tamaño; la tercera clase de métodos numéricos más importante del siglo XX según la clasificación de SISC; después de la transformada rápida de Fourier y la transformada rápida de multipolos).
- 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 de Gauss-Jordan : resuelve sistemas de ecuaciones lineales.
- Método de Gauss-Seidel : resuelve sistemas de ecuaciones lineales de forma iterativa.
- eliminación gaussiana
- Recursión de Levinson : resuelve ecuaciones que involucran una matriz de Toeplitz.
- Método de Stone : también conocido como procedimiento fuertemente implícito o SIP, es un algoritmo para resolver un sistema de ecuaciones lineales dispersas.
- 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.
- Algoritmo SMAWK
- Algoritmos de matrices dispersas
- Algoritmo de 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 de Monte Carlo de cadena de Markov ponderada por hamiltoniano , a partir de una distribución de probabilidad que es difícil de muestrear directamente.
- Algoritmo de 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 de Metropolis-Hastings.
Integración numérica
- Algoritmo MISER : simulación de Monte Carlo, integración numérica
Detección 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 primeras y segundas.
- Método ITP : convergencia óptima minmax y superlineal simultáneamente.
- Método de Muller : interpolación cuadrática de 3 puntos.
- Método de Newton : encuentra los ceros de funciones con cálculo diferencial e integral.
- Método de Ridder : escalamiento exponencial de 3 puntos.
- Método de la 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.
- Un método híbrido similar a BFGS (ver más en https://doi.org/10.1016/j.cam.2024.115857 )
- Ramificar y enlazar
- Algoritmo de Bruss : véase el 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 voraz (GRASP): construcciones sucesivas de una solución aleatoria voraz y mejoras iterativas subsiguientes 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.
- Métodos de gradiente conjugado (ver más en https://doi.org/10.1016/j.jksus.2022.101923 )
- Satisfacción de restricciones
- Algoritmo AC-3: algoritmos generales para la satisfacción de restricciones.
- Algoritmo de Chaff : un algoritmo para resolver instancias del problema de satisfacibilidad booleana.
- Algoritmo de Davis-Putnam : comprobar la validez de una fórmula lógica de primer orden.
- Algoritmo de mapa de diferencias, algoritmos generales para la satisfacción de restricciones.
- Algoritmo de Davis-Putnam-Logemann-Loveland (DPLL): un algoritmo para decidir la satisfacibilidad de fórmulas de lógica proposicional en forma normal conjuntiva , es decir, para resolver el problema CNF-SAT.
- Problema exacto de la cubierta
- Algoritmo de conflictos mínimos, algoritmos generales para la satisfacción de restricciones.
- 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 multiextremal combinatoria y continua 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 génica
- Algoritmos genéticos
- Selección proporcional a la aptitud física , también conocida como selección de ruleta.
- Muestreo universal estocástico
- Selección de torneos
- Selección de truncamiento
- 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 iterativo de optimización de primer orden para la optimización convexa con restricciones.
- Búsqueda de la 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.
- Un algoritmo híbrido de gradiente conjugado HS-LS (véase https://doi.org/10.1016/j.cam.2023.115304 )
- Método del punto interior
- Búsqueda lineal
- 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 columnas retardada
- Programación lineal entera : resuelve 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 local : una metaheurística para resolver problemas de optimización computacionalmente difíciles.
- Minimax se utiliza en la programación de videojuegos.
- Búsqueda del vecino más cercano (NNS): encontrar los puntos más cercanos en un espacio métrico.
- Best Bin First : encontrar una solución aproximada al problema de búsqueda del vecino más cercano en espacios de muy alta dimensión.
- 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 simplex 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
- Tunelización estocástica
- Algoritmo de suma de subconjuntos
Ciencia computacional
Astronomía
- Algoritmo del fin del mundo : día de la semana
- Se utilizan varios algoritmos de Pascua para calcular el día de Pascua.
- La congruencia de Zeller es un algoritmo para calcular el día de la semana para cualquier fecha del calendario juliano o gregoriano.
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.
- Filtro de Bloom : estructura de datos probabilística utilizada 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 varias secuencias.
- Algoritmo de Kabsch : calcula la alineación óptima de dos conjuntos de puntos para calcular la desviación cuadrática media entre dos estructuras proteicas.
- Parsimonia máxima (filogenética) : un algoritmo para encontrar el árbol filogenético más simple que explique una matriz de caracteres dada.
- Clasificación por inversiones con signo : un algoritmo para comprender la evolución genómica.
- UPGMA : un algoritmo de construcción de árboles filogenéticos basado en la distancia.
- Velvet : un conjunto de algoritmos que manipulan grafos de De Bruijn para el ensamblaje de secuencias genómicas.
Geociencia
- Geohash : un algoritmo de dominio público que codifica un par de latitud/longitud decimal como una cadena hash.
- Fórmulas de Vincenty : un algoritmo rápido para calcular la distancia entre dos puntos de latitud/longitud en un elipsoide.
Lingüística
- Algoritmo de Lesk : desambiguación del sentido de las palabras
- Algoritmo de lematización : un método para reducir las palabras a su raíz, base o forma fundamental.
- Algoritmo de Sukhotin : un algoritmo de clasificación estadística para clasificar caracteres en un texto como vocales o consonantes.
Medicamento
- Algoritmo de la ESC para el diagnóstico de insuficiencia cardíaca
- Criterios de Manning para el síndrome del intestino irritable
- Algoritmos de diagnóstico de 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 Demon : un método de Monte Carlo para muestrear eficientemente 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 articulaciones y enlaces.
- Dinámica de Glauber : un método para simular el modelo de Ising en una computadora.
- aproximación del estado fundamental
- problemas de n cuerpos
- 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 ciclos de lluvia : Reduce un historial de esfuerzos complejo a un conteo de inversiones de esfuerzos elementales para su uso en análisis de fatiga .
- Barrido y poda : un algoritmo de fase amplia utilizado durante la detección de colisiones para limitar el número de pares de sólidos que deben comprobarse para detectar colisiones.
- Algoritmo VEGAS : un método para reducir el error en simulaciones de Monte Carlo.
Estadística
- Algoritmos para el cálculo de la varianza : evitando la inestabilidad y el desbordamiento numérico.
- Algoritmo de conteo aproximado : permite contar un gran número de eventos en un registro pequeño.
- estadística bayesiana
- Algoritmo de muestreo anidado : un enfoque computacional para el problema de comparar modelos en estadística bayesiana.
- Algoritmos de agrupamiento
- Agrupamiento por enlace promedio : un algoritmo de agrupamiento aglomerativo simple
- Algoritmo de agrupamiento de canopy : un algoritmo de preagrupamiento no supervisado relacionado con el algoritmo K-means.
- teléfono descompuesto
- Agrupamiento de enlace completo : un algoritmo de agrupamiento aglomerativo simple
- DBSCAN : un algoritmo de agrupamiento basado en densidad
- algoritmo de maximización de la esperanza
- Agrupamiento difuso : una clase de algoritmos de agrupamiento donde cada punto tiene un grado de pertenencia a clústeres.
- 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 basándose únicamente en las relaciones de vecindad entre objetos.
- medias c difusas
- Agrupamiento k-means : agrupa objetos en particiones en función de sus atributos.
- k-means++ : una variación de esto, utilizando semillas aleatorias modificadas.
- k-medoides : similar a k-medias, pero elige puntos de datos o medoides como centros.
- 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.
- Algoritmo de Linde-Buzo-Gray : un algoritmo de cuantizació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; es un algoritmo popular para la agrupación k-means.
- ÓPTICA : un algoritmo de agrupamiento basado en densidad con un método de evaluación visual.
- Agrupamiento de enlace simple : un algoritmo de agrupamiento aglomerativo sencillo
- SUBCLU : un algoritmo de agrupamiento de subespacios
- Algoritmo de agrupamiento WACA : un algoritmo de agrupamiento local con estructuras potencialmente de múltiples saltos; para redes dinámicas.
- Método de Ward : un algoritmo de agrupamiento aglomerativo, extendido a algoritmos más generales de Lance-Williams.
- Teoría de la estimación
- Algoritmo de maximización de la esperanza: Una clase de algoritmos relacionados para encontrar estimaciones de máxima verosimilitud de parámetros en modelos probabilísticos.
- Maximización de la expectativa de subconjuntos ordenados (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 de rayos X.
- Filtro de Kalman : estima el estado de un sistema dinámico lineal a partir de una serie de mediciones ruidosas.
- Algoritmo de probabilidades (algoritmo de Bruss) Búsqueda óptima en línea de un valor distinguido en una entrada aleatoria secuencial
- Algoritmo de maximización de la esperanza: Una clase de algoritmos relacionados para encontrar estimaciones de máxima verosimilitud de parámetros en modelos probabilísticos.
- El algoritmo del vecino más cercano falso (FNN) estima la dimensión fractal.
- modelo oculto de Markov
- Algoritmo de Baum-Welch : calcula las estimaciones de máxima verosimilitud y las estimaciones de moda 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 observaciones particular.
- Algoritmo de Viterbi : encuentra 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 de 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 instrucciones secuenciales que normalmente se detendrían debido a ciertas dependencias se ejecuten de forma no secuencial.
Gráficos por computadora
- Particionamiento binario del espacio
- Recorte
- Líneas de contorno e isosuperficies
- Marching cubes : extrae una malla poligonal de una isosuperficie a partir de un campo escalar tridimensional (a veces llamado vóxeles).
- Marching squares : genera líneas de contorno para un campo escalar bidimensional.
- Tetraedros en marcha : una alternativa a los cubos en marcha
- Teorema de Green discreto : un algoritmo para calcular la integral doble sobre un dominio rectangular generalizado en tiempo constante. Es una extensión natural del algoritmo de la tabla de áreas sumadas.
- Relleno por inundación : rellena una región conectada de una matriz multidimensional con un símbolo especificado.
- Algoritmos de iluminación global : Consideran la iluminación directa y la reflexión de otros objetos.
- Eliminación de superficies ocultas o determinación visual de la superficie
- Algoritmo de Newell : elimina los ciclos de polígonos en la clasificación de profundidad requerida para la eliminación de superficies ocultas.
- Algoritmo del pintor : detecta las partes visibles de un escenario tridimensional.
- Renderizado por línea de exploración : construye una imagen moviendo una línea imaginaria sobre la imagen.
- Algoritmo de Warnock
- Dibujo de líneas : 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 específicos (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íneas de Xiaolin Wu : algoritmo para el suavizado de líneas.
- Algoritmo del círculo del punto medio : un algoritmo utilizado para determinar los puntos necesarios para dibujar un círculo.
- Algoritmo de Ramer-Douglas-Peucker : Dada una "curva" compuesta por segmentos de línea, encontrar una curva que no sea demasiado 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 3D por computadora.
- Sombreado Phong : un algoritmo para interpolar vectores normales de superficie para sombreado de superficie en gráficos 3D por computadora.
- Slerp (interpolación lineal esférica): interpolación de cuaterniones para 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.
Criptografía
- Cifrado asimétrico (clave pública) :
- Firmas digitales (autenticación asimétrica):
- 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 dificultad 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 han sido vulnerados).
- Algoritmo de Yarrow
- Intercambio de claves
- Funciones de derivación de claves , utilizadas frecuentemente para el hash de contraseñas y la extensión de claves.
- Códigos de autenticación de mensajes (algoritmos de autenticación simétrica, que toman una clave como parámetro):
- Compartición de secretos , división de secretos, división de claves, algoritmos M de N
- El plan de Blakey
- Compartir secretos de Shamir
- Cifrado simétrico (clave secreta) :
- Estándar de cifrado avanzado (AES), ganador del concurso del NIST , también conocido como Rijndael
- pez globo
- ChaCha20, variante actualizada de Salsa20
- Estándar de Cifrado de Datos (DES), a veces denominado Algoritmo DE, ganador del concurso de selección del NBS, reemplazado por AES para la mayoría de los fines.
- IDEA
- RC4 (cifrado)
- Salsa20
- Tres peces
- Algoritmo de cifrado diminuto (TEA)
- Dos peces
- Criptografía postcuántica
- Algoritmos de prueba de trabajo
Lógica digital
- minimización booleana
- Minimizador de lógica heurística Espresso : un algoritmo rápido para la minimización de funciones booleanas.
- Método de Petrick : otro algoritmo para la simplificación booleana.
- Algoritmo de Quine-McCluskey : también llamado algoritmo QM, método programable para simplificar ecuaciones booleanas.
Aprendizaje automático y clasificación estadística
- Retropropagación recurrente de Almeida-Pineda : Ajustar una matriz de pesos sinápticos para generar las salidas deseadas a partir de sus entradas.
- ALOPEX : un algoritmo de aprendizaje automático basado en correlación
- Aprendizaje de reglas de asociación : descubre relaciones interesantes entre variables, utilizado en minería de datos.
- Potenciación (meta-algoritmo) : Utilizar muchos aprendices débiles para aumentar la efectividad.
- AdaBoost : potenciación adaptativa
- BrownBoost : un algoritmo de boosting que puede ser robusto ante conjuntos de datos ruidosos.
- LogitBoost : potenciación 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.
- Agrupamiento : una clase de algoritmos de aprendizaje no supervisado para agrupar y clasificar vectores de entrada relacionados.
- Visión por computadora
- Grabcut basado en cortes de grafos
- Árboles de decisión
- Algoritmo C4.5 : una extensión de ID3
- Algoritmo ID3 (Iterative Dichotomiser 3): utiliza una heurística para generar árboles de decisión pequeños.
- k-vecinos más cercanos (k-NN): un método no paramétrico para clasificar objetos basado en los ejemplos de entrenamiento más cercanos en el espacio de características.
- Algoritmo de Linde-Buzo-Gray : un algoritmo de cuantizació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.
- Clasificador Naive Bayes : una familia de clasificadores probabilísticos basados en el teorema de Bayes.
- 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 alimentación directa: un clasificador lineal .
- Redes neuronales acopladas por pulsos (PCNN): Modelos neuronales propuestos a partir de la modelización de la corteza visual de un gato y desarrollados para el procesamiento de imágenes biomiméticas de alto rendimiento .
- Red neuronal 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 muchos árboles de decisión
- Aprendizaje por refuerzo :
- Aprendizaje Q : aprende una función de valor de acción que proporciona la utilidad esperada de realizar una acción determinada en un estado dado y seguir una política fija posteriormente.
- Estado-Acción-Recompensa-Estado-Acción (SARSA): aprenda una política de proceso de decisión de Markov
- Aprendizaje por diferencia temporal
- 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 al encontrar un hiperplano divisor con el margen máximo entre los dos conjuntos.
- SVM estructurado : permite entrenar un clasificador para etiquetas de salida estructuradas generales.
- Algoritmo Winnow : relacionado con el perceptrón, pero utiliza un esquema de actualización de pesos 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 grafos ascendente que utiliza el costo/grado como su métrica de desbordamiento.
- Algoritmo de inferencia tipo Hindley-Milner
- Algoritmo Rete : un algoritmo eficiente de coincidencia de patrones para la implementación de sistemas de reglas de producción .
- Algoritmo de Sethi-Ullman : genera código óptimo para expresiones aritméticas.
Análisis sintáctico
- Algoritmo CYK : un algoritmo O(n³ ) para analizar gramáticas libres de contexto en forma normal de Chomsky.
- Analizador sintáctico de Earley : otro algoritmo O(n³ ) para analizar cualquier gramática libre de contexto.
- Analizador sintáctico GLR : un algoritmo para analizar cualquier gramática libre de contexto, creado por Masaru Tomita . Está optimizado para gramáticas deterministas, en las que realiza el análisis en tiempo casi lineal y en el peor de los casos en O(n³ ) .
- Algoritmo Inside-Outside : un algoritmo O(n³ ) para reestimar las probabilidades de producción en gramáticas probabilísticas libres de contexto.
- Análisis léxico
- Analizador LL : un algoritmo de análisis sintáctico relativamente simple de tiempo lineal para una clase limitada de gramáticas libres de contexto.
- Analizador LR : Un algoritmo de análisis sintáctico de tiempo lineal más complejo para una clase más amplia de gramáticas libres de contexto . Variantes:
- Analizador Packrat : un algoritmo de análisis sintáctico de tiempo lineal que admite algunas gramáticas libres de contexto y gramáticas de expresiones de análisis.
- Analizador Pratt
- Analizador sintáctico descendente recursivo : un analizador sintáctico descendente adecuado para gramáticas LL( k ).
- Algoritmo de maniobras : convierte una expresión matemática en notación infija a notación posfija.
Algoritmos cuánticos
- Algoritmo de Aharonov-Jones-Landau : algoritmo cuántico relacionado con la aproximación del polinomio de Jones.
- Amplificación de amplitud : generalización del algoritmo de Grover utilizada para amplificar la probabilidad de los resultados deseados.
- Algoritmo de Bernstein-Vazirani : determina una cadena de bits oculta codificada en una función de caja negra.
- Algoritmo BHT : algoritmo cuántico para el problema de colisión.
- Muestreo de bosones : problema de muestreo que utiliza bosones no interactuantes , a menudo discutido en relación con la ventaja cuántica.
- Algoritmo de Deutsch-Jozsa : determina si una función booleana de caja negra es constante o está equilibrada.
- El algoritmo de Grover : proporciona una aceleración cuadrática para problemas de búsqueda no estructurados.
- Prueba de Hadamard : técnica de circuito para estimar las partes reales o imaginarias de los valores esperados.
- Transformada de Hadamard : transformada utilizada en muchos circuitos cuánticos y algoritmos de consulta.
- Simulación hamiltoniana : simula la evolución temporal de sistemas cuánticos regidos por un hamiltoniano.
- Algoritmo HHL : algoritmo cuántico para resolver ciertos sistemas de ecuaciones lineales.
- Problema de la función lineal oculta : problema del oráculo que involucra una función lineal oculta
- Problema del desplazamiento oculto : problema de encontrar un desplazamiento que relacione dos funciones.
- Problema del subgrupo oculto : marco para algoritmos cuánticos basados en la estructura algebraica oculta
- Computación cuántica no local : tarea de información cuántica que involucra partes separadas y operaciones no locales.
- Recocido cuántico : enfoque de optimización basado en la evolución adiabática o dinámica cuántica similar al recocido.
- Vida artificial cuántica : modelo de computación cuántica inspirado en la vida artificial y los sistemas biológicos.
- Algoritmo de conteo cuántico : estima el número de elementos marcados en un espacio de búsqueda.
- Transformada cuántica de Fourier : análogo cuántico de la transformada discreta de Fourier, utilizada en varios algoritmos cuánticos.
- Algoritmos de optimización cuántica : familia de algoritmos cuánticos para problemas de optimización.
- Algoritmo de estimación de fase cuántica : estima la fase de un valor propio de un operador unitario.
- Transformación cuántica de valores singulares : marco para transformar valores singulares de matrices codificadas
- Ordenación cuántica : enfoque algorítmico cuántico para la ordenación
- Paseo cuántico : análogo cuántico de un paseo aleatorio clásico.
- Búsqueda mediante paseos cuánticos : algoritmos de búsqueda basados en paseos cuánticos
- El algoritmo de Shor proporciona una aceleración exponencial, en relación con los algoritmos no cuánticos conocidos actualmente, para la factorización de enteros y los logaritmos discretos.
- El problema de Simon : un problema de caja negra con un algoritmo cuántico que proporciona una aceleración exponencial demostrable con respecto a los algoritmos aleatorios clásicos.
- Prueba de intercambio : estima la superposición o similitud entre estados cuánticos.
- Solucionador de valores propios cuántico variacional : algoritmo híbrido cuántico-clásico para estimar energías de estado fundamental [ 8 ] [ 9 ]
Teoría de la computación y autómatas
- El algoritmo de Hopcroft , el algoritmo de Moore y el algoritmo de Brzozowski : algoritmos para minimizar el número de estados en un autómata finito determinista.
- Construcción de conjuntos potencia : algoritmo para convertir un autómata no determinista en un autómata determinista .
- Algoritmo de Tarski-Kuratowski : un algoritmo no determinista que proporciona una cota superior para la complejidad de las fórmulas en la jerarquía aritmética y 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 correctores de errores definidos en estructuras reticulares (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 añadiendo 3 bits de paridad.
- Distancia de Hamming : suma del número de posiciones que son diferentes
- Peso de Hamming (conteo de población): encuentra el número de bits 1 en una palabra binaria.
- Controles de redundancia
- Adler-32
- Verificación de redundancia cíclica
- Algoritmo de Damm
- Suma de verificación de Fletcher
- Verificación de redundancia longitudinal (LRC)
- Algoritmo de Luhn : un método para validar números de identificación.
- Algoritmo Luhn mod N : extensión del algoritmo Luhn a caracteres no numéricos.
- Paridad : técnica de detección de errores simple/rápida
- Algoritmo de Verhoeff
Algoritmos de compresión sin pérdidas
- Transformación 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 los datos secuenciales aparecen con frecuencia.
- Compresión dinámica de Markov : Compresión mediante codificación aritmética predictiva.
- Codificadores de diccionario
- Codificación de pares de bytes (BPE)
- Desinflar
- Lempel – Ziv
- LZ77 y LZ78
- Lempel-Ziv Jeff Bonwick (LZJB)
- Algoritmo de cadena de Markov Lempel-Ziv (LZMA)
- Lempel–Ziv–Oberhumer (LZO): orientado a la velocidad
- Lempel-Ziv Ross Williams (LZRW)
- Lempel–Ziv–Stac (LZS)
- Lempel–Ziv–Storer–Szymanski (LZSS)
- Lempel-Ziv-Welch (LZW)
- LZWL : variante basada en sílabas
- LZX
- Codificación de entropía : esquema de codificación que asigna códigos a los símbolos de manera que las longitudes de los códigos coincidan 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 Huffman : compresión simple sin pérdidas 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 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 [ 10 ]
- 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 entrópica óptima para alfabetos que siguen distribuciones geométricas.
- Codificación Rice : forma de codificación entrópica ó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 : codifican números enteros positivos en palabras de código binario.
- Codificación delta , gamma y omega de Elias
- Codificación exponencial-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 mediante coincidencia parcial (PPM): una técnica adaptativa de compresión de datos estadísticos 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 las 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 A-law : algoritmo de compresión estándar
- Predicción lineal excitada por código (CELP): compresión de voz de 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 de voz digital 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 imágenes
- Codificación por 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.
- Ondícula Zerotree incrustada (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 mediante 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 audio).
- Codificación por transformación : tipo de compresión de datos para datos "naturales" como señales de audio o imágenes fotográficas.
- Cuantización vectorial : técnica frecuentemente utilizada en la compresión de datos con pérdida.
- TurboQuant : algoritmo de cuantización vectorial en línea para la compresión con pérdida de vectores de alta dimensión para LLM.
- Compresión de vídeo
Procesamiento digital de señales
- Algoritmo adaptativo-aditivo (algoritmo AA): encuentra la fase de frecuencia espacial de una fuente de onda observada.
- Transformada discreta de Fourier : determina las frecuencias contenidas en un (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 temporales.
- Algoritmo de Gerchberg-Saxton : Algoritmo de recuperación de fase para planos ópticos
- Algoritmo de Goertzel : identifica un componente de frecuencia específico en una señal. Puede utilizarse para la decodificación de dígitos DTMF .
- Síntesis de cuerdas Karplus-Strong : síntesis de modelado físico para simular el sonido de una cuerda pulsada o martillada o algunos tipos de percusión.
Procesamiento de imágenes
- Ecualización adaptativa del histograma : ecualización del histograma que se adapta a los cambios locales de contraste - Mejora del contraste
- Deconvolución ciega : algoritmo para eliminar el desenfoque de imágenes cuando se desconoce la función de dispersión de puntos .
- Etiquetado de componentes conectados : encontrar y etiquetar regiones disjuntas
- Tramado y semitonos
- Algoritmo de mapa de diferencias de Elser : un algoritmo de búsqueda para problemas generales de satisfacción de restricciones. 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 las imágenes.
- Transformación de Hough generalizada
- Hough transforma
- Algoritmo de Marr-Hildreth : un algoritmo para la detección temprana de bordes.
- SIFT (Scale-invariant feature transform): 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 puede utilizarse 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, según sus autores, es más robusta frente a diferentes transformaciones de imagen que SIFT. [ 11 ] [ 12 ]
- Ecualización de histograma : utilice el histograma para mejorar el contraste de la imagen - Mejora del contraste
- Deconvolución de Richardson-Lucy : algoritmo para eliminar el desenfoque de imágenes
- Filtrado de mediana
- Recorte de costuras : algoritmo de redimensionamiento de imágenes sensible al contenido
- Segmentación : dividir una imagen digital en dos o más regiones.
- Algoritmo GrowCut : un algoritmo de segmentación interactivo
- algoritmo de caminante aleatorio
- Región en crecimiento
- Transformación de cuenca hidrográfica : una clase de algoritmos basados en la analogía de la cuenca hidrográfica.
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 solo número entero que puede servir como índice en una matriz.
- Función hash de Fowler-Noll-Vo : rápida con baja tasa de colisión.
- Hashing de Pearson : calcula solo valores de 8 bits, optimizado para ordenadores de 8 bits.
- Hashing de Zobrist : utilizado 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 usar un búfer.
Algoritmos de bases de datos
Algoritmos de sistemas distribuidos
- Sincronización de relojes
- Consenso (informática) : ponerse de acuerdo sobre un único valor o historial entre procesadores poco fiables.
- Detección de la terminación del proceso
- Ordenación de Lamport : una ordenación parcial de eventos basada en la relación "sucedió antes"
- Elección de líder : un método para seleccionar dinámicamente a un coordinador.
- Exclusión mutua
- Algoritmo de instantánea : registra un estado global consistente para un sistema asíncrono.
- Relojes vectoriales : generan un orden parcial de eventos en un sistema distribuido y detectan violaciones de causalidad.
Algoritmos de asignación y liberación de memoria
- Asignación de memoria Buddy : un algoritmo para asignar memoria con menor fragmentación.
- Recolectores de basura
- Algoritmo de Cheney : una mejora del recolector de semiespacio
- Recolector de basura generacional : recolectores de basura rápidos que segregan la memoria por edad.
- Algoritmo de marcado y compactación : una combinación del algoritmo de marcado y barrido y el algoritmo de copia de Cheney.
- Marcar y barrer
- Coleccionista de semiespacio : un antiguo coleccionista de copias
- Conteo de referencias
Redes de contactos
- El algoritmo de Karn aborda el problema de obtener estimaciones precisas del tiempo de ida y vuelta para los mensajes cuando se utiliza TCP.
- Algoritmo de Luleå : una técnica para almacenar y buscar eficientemente tablas de enrutamiento de Internet.
- Congestión de la red
- retroceso exponencial
- Algoritmo de Nagle : mejora la eficiencia de las redes TCP/IP mediante la coalescencia de paquetes.
- Retroceso exponencial binario truncado
algoritmos de sistemas operativos
- Algoritmo del banquero : algoritmo utilizado para evitar bloqueos mutuos.
- Algoritmos de reemplazo de páginas : 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 de la caché de reemplazo adaptativo.
Sincronización de procesos
Programación
- La fecha límite más temprana se programará primero.
- Programación de reparto equitativo
- Programación con el menor tiempo de holgura posible
- Programación de listas
- Cola de retroalimentación multinivel
- Programación de tasa monótona
- Programación por turnos rotativos
- El trabajo más corto a continuación
- Tiempo restante más corto
- Algoritmo de nodos superiores : gestión del calendario de recursos
Planificación de E/S
Planificación de disco
- Algoritmo de ascensor : Algoritmo de planificación de disco que funciona como un ascensor.
- Búsqueda más corta primero : Algoritmo de planificación de disco para reducir el tiempo de búsqueda .
Véase también
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" . Behavior Research Methods, Instruments, & Computers . 24 (4): 560– 564. doi : 10.3758/BF03203605 . ISSN 1532-5970 .
- ↑ "richardshin.com | Algoritmo de detección de ciclos de Floyd" . 30 de septiembre de 2013. Consultado el 26 de octubre de 2023 .
- ↑ Tesler, G. (2020). "Cap. 5.9: Algoritmo de Gale-Shapley" (PDF) . mathweb.ucsd.edu . Universidad de California en San Diego . Recuperado el 26 de abril de 2025 .
- ↑ Kleinberg, Jon; Tardos, Éva (2005). "Diseño de algoritmos: 1. Emparejamiento estable" (PDF) . cs.princeton.edu . Pearson - Addison Wesley : Universidad de Princeton . Recuperado el 26 de abril de 2025 .
- ↑ Goel, Ashish (21 de enero de 2019). Ramseyer, Geo (ed.). "CS261 Invierno 2018-2019 Conferencia 5: Algoritmo de Gale-Shapley" (PDF) . web.stanford.edu . Universidad de Stanford . Recuperado el 26 de abril de 2025 .
- ↑ "Búsqueda binaria de Eytzinger - Algorithmica" . Consultado el 9 de abril de 2023 .
- ↑ Montanaro, Ashley (2016). "Algoritmos cuánticos: una visión general" . npj Quantum Information . 2 : 15023. doi : 10.1038/npjqi.2015.23 .
- ↑ Jordan, Stephen P. "Quantum Algorithm Zoo" . Quantum Algorithm Zoo . Consultado el 31 de mayo de 2026 .
- ↑ "Shannon-Fano-Elias Coding" (PDF) . my.ece.msstate.edu . Archivado del original (PDF) el 28-02-2021 . Consultado el 11-10-2023 .
- ↑ "Copia archivada" (PDF) . vision.ee.ethz.ch . Archivado del original (PDF) el 21 de febrero de 2007 . Recuperado el 13 de enero de 2022 .
{{cite web}}: CS1 mantenimiento: copia archivada como título ( enlace ) - ↑ "Copia archivada" (PDF) . Archivado del original (PDF) el 06-10-2013 . Recuperado el 05-10-2013 .
{{cite web}}: CS1 mantenimiento: copia archivada como título ( enlace )
- Algoritmos
- Listas relacionadas con las matemáticas
- Algoritmos y métodos de optimización