Ordenamiento entero
La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la
versión revisada el 22 de enero de 2021; las comprobaciones requieren
2 ediciones .
La clasificación de enteros es la tarea de clasificar un conjunto de valores utilizando claves enteras . Los algoritmos de clasificación de enteros también se pueden usar para problemas en los que las claves son números de coma flotante o cadenas de texto [1] . La capacidad de realizar operaciones aritméticas de enteros en claves permite que los algoritmos de clasificación de enteros sean más rápidos en muchos casos que los algoritmos de clasificación similares que utilizan comparaciones, según las operaciones permitidas en el modelo de cálculo y el tamaño de los números clave.
Los algoritmos habituales de clasificación de enteros: cesta de clasificación , clasificación de raíz, clasificación de conteo son ampliamente utilizados y eficientes [2] [3] . La investigación adicional sobre los algoritmos de clasificación de enteros se ha centrado en las mejoras teóricas del peor de los casos, y los algoritmos que se han obtenido no se consideran eficientes en las computadoras modernas de 64 bits, aunque los experimentos han demostrado que algunos de estos métodos pueden ser mejores que la clasificación de datos bit a bit. con 128 o más bits en la clave [4] . Además, para grandes conjuntos de datos, la naturaleza de acceso a la memoria casi aleatoria de los algoritmos de clasificación de enteros es una limitación, especialmente cuando se compara con otros algoritmos de clasificación que han sido diseñados con una estructura de memoria jerárquica en mente .
La ordenación de enteros se utiliza en uno de los seis puntos de referencia de la suite de Matemáticas discretas de los sistemas informáticos de alta productividad de DARPA y en uno de los once criterios de la suite NAS Parallel Benchmarks [5] .
Modelos de computación
Las restricciones de tiempo de los algoritmos de clasificación de enteros generalmente dependen de tres parámetros: - la cantidad de valores de datos que se clasificarán, - el orden de magnitud de la clave más grande posible, y - la cantidad de bits en la palabra de máquina de la computadora en que se ejecutará el algoritmo. En general, se supone que , es decir, las palabras de máquina son lo suficientemente grandes para representar tanto el índice en la secuencia de entrada como la clave [6] .
Los algoritmos de clasificación de enteros generalmente están diseñados para funcionar para la máquina de puntero, o para una máquina con acceso aleatorio a la memoria . La principal diferencia entre estos modelos es que las máquinas de acceso aleatorio le permiten usar un valor arbitrario en un registro como dirección de memoria en operaciones de lectura y escritura con un valor de unidad de tiempo, y organizar manipulaciones de datos complejas usando una tabla de búsqueda . El modelo de máquina de punteros permite el acceso a la memoria solo a través de punteros, que no pueden manipularse mediante operaciones aritméticas. En ambos modelos , las operaciones bit a bit se pueden realizar, por regla general, en un segmento de tiempo . Diferentes algoritmos de clasificación de enteros hacen diferentes suposiciones sobre si la multiplicación de enteros se puede realizar en un intervalo de tiempo [6] [7] . También se pueden considerar modelos de computación más especializados, como máquinas paralelas de acceso aleatorio [8] [9] [10] [11] [12] .
En 1999 se demostró que, en algunos casos, la multiplicación o la búsqueda en tablas requeridas para algunos algoritmos de clasificación de enteros pueden reemplazarse por operaciones especializadas que pueden implementarse fácilmente en hardware pero que normalmente no están disponibles en computadoras de propósito general [7] .
Notas
- ↑ Han, Thorup, 2002 .
- ↑ McIlroy, Bostic, McIlroy, 1993 .
- ↑ Andersson, Nilsson, 1998 .
- ↑ Rahman, Raman, 1998 .
- ↑ DARPA HPCS Discrete Mathematics Benchmarks Archivado el 10 de marzo de 2016 en Wayback Machine , Duncan A. Buell, Universidad de Carolina del Sur, consultado el 20 de abril de 2011.
- ↑ 1 2 Fredman, Willard, 1993 .
- ↑ 1 2 Andersson, Miltersen, Thorup, 1999 .
- ↑ Reif, 1985 .
- ↑ Cole, Vishkin, 1986 , Comentario.
- ↑ Hagerup, 1987 .
- ↑ Bhatt et al., 1991 .
- ↑ Albers, Hagerup, 1997 .
Literatura
- Ajtai, M., Fredman, M., Komlós, J. Funciones hash para colas prioritarias // Información y Control. - 1984. - vol. 63 , núm. 3 . — pág. 217–225 . - doi : 10.1016/S0019-9958(84)80015-7 .
- Albers, Susanne, Hagerup, Torben. Ordenación mejorada de enteros paralelos sin escritura concurrente // Información y Cómputo. - 1997. - vol. 136 , núm. 1 . — págs. 25–51 . -doi : 10.1006/ inco.1997.2632 .
- Andersson, Arne, Hagerup, Torben, Nilsson, Stefan, Raman, Rajeev. ¿Ordenar en tiempo lineal? (Inglés) // Revista de Ciencias de la Computación y Sistemas. - 1998. - vol. 57 , núm. 1 . — págs. 74–93 . -doi : 10.1006/ jcss.1998.1580 .
- Andersson, Arne, Nilsson, Stefan. Implementando radixsort // The ACM Journal of Experimental Algorithmics. - 1998. - vol. 3 . -doi : 10.1145/ 297096.297136 .
- Andersson, Arne, Miltersen, Peter Bro, Thorup, Mikkel. Los árboles de fusión se pueden implementar solo con instrucciones AC 0 (inglés) // Ciencias de la computación teórica. - 1999. - vol. 215 , núm. 1-2 . — pág. 337–344 . - doi : 10.1016/S0304-3975(98)00172-8 .
- Bhatt, PCP, Diks, K., Hagerup, T., Prasad, VC, Radzik, T., Saxena, S. Clasificación de enteros paralela determinista mejorada // Información y computación. - 1991. - vol. 94 , núm. 1 . — págs. 29–47 . -doi : 10.1016 / 0890-5401(91)90031-V .
- Cole, R., Vishkin, u. Lanzamiento de monedas determinista con aplicaciones a la clasificación óptima de listas paralelas // Información y Control. - 1986. - vol. 70 , núm. 1 . — págs. 32–53 . - doi : 10.1016/S0019-9958(86)80023-7 .
- Comrie, LJ Las máquinas tabuladoras de Hollerith y Powers // Trans . maquina de oficina Asociación de Usuarios, Ltd. — 1929-1930. — págs. 25–37 .
- Cormen, Thomas H., Leiserson, Charles E., Rivest, Ronald L., Stein, Clifford. Introducción a los Algoritmos . — MIT Press y McGraw-Hill, 2001.
- Fredman, Michael L., Willard, Dan E. Superando el límite teórico de la información con árboles de fusión (inglés) // Journal of Computer and System Sciences. - 1993. - vol. 47 , núm. 3 . — págs. 424–436 . - doi : 10.1016/0022-0000(93)90040-4 .
- Fredman, Michael L., Willard, Dan E. Algoritmos transdicotómicos para árboles de expansión mínimos y caminos más cortos // Journal of Computer and System Sciences. - 1994. - vol. 48 , núm. 3 . - Pág. 533-551 . - doi : 10.1016/S0022-0000(05)80064-9 .
- Goodrich, Michael T., Tamassia, Roberto. Diseño de algoritmos : fundamentos, análisis y ejemplos de Internet . — John Wiley & Sons, 2002. — P. 241–243 .
- Hagerup, Torben. Hacia una clasificación óptima de cubos paralelos // Información y Computación. - 1987. - vol. 75 , núm. 1 . — págs. 39–51 . - doi : 10.1016/0890-5401(87)90062-9 .
- Han, Yijie. Clasificación determinista en tiempo O ( n log log n ) y espacio lineal // Journal of Algorithms. Cognición, Informática y Lógica. - 2004. - vol. 50 , núm. 1 . — págs. 96–105 . -doi : 10.1016/ j.jalgor.2003.09.001 .
- Han, Yijie, Thorup, M. Simposio sobre fundamentos de la informática . - 2002. - P. 135-144 . -doi : 10.1109/ SFCS.2002.1181890 .
- Kirkpatrick, David, Reichch, Stefan. Límites superiores para clasificar enteros en máquinas de acceso aleatorio // Ciencias de la computación teórica. - 1984. - vol. 28 , núm. 3 . — pág. 263–276 . - doi : 10.1016/0304-3975(83)90023-3 .
- McIlroy, Peter M., Bostic, Keith, McIlroy, M. Douglas. Ingeniería Radix Sort (Inglés) // Sistemas de Computación. - 1993. - vol. 6 , núm. 1 . — pág. 5–27 .
- Pedersen, Morten Nicolay. Un estudio de la importancia práctica de los algoritmos de RAM de palabras para la ordenación interna de enteros . — Departamento de Ciencias de la Computación, Universidad de Copenhague, Dinamarca, 1999. Archivado desde el original el 16 de marzo de 2012.
- Rahman, Naila, Raman, Rajeev. Ingeniería de algoritmos, segundo taller internacional, WAE '92, Saarbrücken, Alemania, 20 al 22 de agosto de 1998, Actas . — Instituto Max Planck de Ciencias de la Computación, 1998. — P. 193–203 .
- Reif, John H. Simposio sobre fundamentos de la informática . - 1985. - Págs. 496-504 . -doi : 10.1109/ SFCS.1985.9 .
- Thorup, Mikkel. Clasificación aleatoria en tiempo O ( n log log n ) y espacio lineal mediante operaciones booleanas de suma, desplazamiento y bit a bit // Journal of Algorithms. - 2002. - vol. 42 , núm. 2 . — pág. 205–230 . -doi : 10.1006/ jagm.2002.1211 .
- Thorup, Mikkel. Actas del decimocuarto simposio anual ACM-SIAM sobre algoritmos discretos (Baltimore, MD, 2003 ) . - ACM, 2003. - Pág. 699-707 .
- Thorup, Mikkel. Equivalencia entre colas de prioridad y clasificación (inglés) // Diario de la ACM. - 2007. - vol. 54 , núm. 6 _ -doi : 10.1145/ 1314690.1314692 .
- Willard, Dan E. Las consultas de rango logarítmicas logarítmicas en el peor de los casos son posibles en el espacio Θ ( N ) // Cartas de procesamiento de información . - 1983. - vol. 17 , núm. 2 . — págs. 81–84 . - doi : 10.1016/0020-0190(83)90075-3 .