¿La complejidad de los algoritmos de clasificación está relacionada con la cantidad de suposiciones que hago? ¿Por qué?

Sí, la complejidad de la clasificación depende de lo que esté clasificando y de cómo compare los elementos. Como se relacionó anteriormente, la mejor complejidad posible de un algoritmo de clasificación basado en la comparación es la comparación [matemática] O (n log n) [/ matemática].

Pero para ordenar enteros, puede usar algoritmos especializados, con tiempo de ejecución dependiendo de qué tan grandes sean sus enteros (es decir, el tamaño de la palabra). Si está ordenando números enteros en un rango pequeño, digamos 0 a [matemática] m [/ matemática], puede usar la ordenación de cubetas para ordenar en [matemática] O (m + n) [/ matemática]. Ver Clasificación de enteros – Wikipedia para más detalles: estos algoritmos se vuelven mucho más complejos.

Por supuesto, aparte de la clasificación de cubetas, estos algoritmos de clasificación de enteros se enumeran en “teóricos” por una razón: están optimizando la complejidad algorítmica, no el tiempo de ejecución real. Agregan capas de abstracción e indirección que agregan varios multiplicadores al tiempo de ejecución verdadero y son mucho más difíciles de implementar que los algoritmos de clasificación convencionales.

Como otro ejemplo, comparar cadenas con longitud variable agrega otra capa de complejidad, ya que comparar cadenas puede requerir varias operaciones. Un algoritmo para esto es la selección rápida de teclas múltiples.

Si cambia el problema agregando más suposiciones, entonces está estudiando fundamentalmente un problema diferente (o posiblemente un caso especial). La complejidad de un algoritmo puede cambiar cuando haces esto, pero la complejidad del algoritmo en sí para el problema más general sin esas suposiciones no lo hace. Discutimos algoritmos con respecto a problemas típicamente, no al revés.

Entonces, si agrega suposiciones sobre el problema de clasificación, entonces puede diseñar algoritmos más eficientes para hacer el trabajo, pero cuando hace esto, no está estudiando el mismo problema del que la gente habla llamado problema de clasificación. Es por eso que ser preciso es muy importante. Te sorprendería cuán fundamentalmente diferentes problemas pueden llegar a ser a veces si incluso agregas uno o dos supuestos. Al restringir las instancias de un problema más general que considere, cuanto más especializado se vuelva el problema (y menos aplicable puede ser al problema general, a menos que demuestre un teorema que diga lo contrario para ese problema).

Tenga en cuenta que esto es cierto para la mayoría de las áreas de estudio en Algoritmos, no solo para la clasificación. No sé si podría decir que hay una relación directa ya que sus “suposiciones” requerirían más estructura (matemática) para precisar una relación.

La técnica de representación de complejidad tiene la provisión de especificación de casos de eficiencia de algoritmos como Peor, Mejor, Promedio.

Estos casos no son más que lo que estás mencionando como suposiciones aquí y así es como tiene sentido para mí.

Sin embargo, su pregunta parece estar hablando más sobre los casos de la naturaleza de los datos de entrada y / o la especialización de la declaración del problema en lugar de los casos de rendimiento del algoritmo.

More Interesting

¿Cuál es la mejor manera de analizar un currículum en los campos de la base de datos? ¿Qué hacer si tiene muchos currículums y necesita que los datos se extraigan en elementos individuales que se pueden colocar en una base de datos?

¿Cómo recomienda Foursquare las sugerencias de mis amigos de Facebook?

¿Cuál es una explicación intuitiva para el algoritmo de maximización condicional de expectativa (ECM)?

¿Cómo podrías escribir un programa que ingrese un número entero positivo N y genere el número de Fibonacci F2N?

¿Cuáles son algunas diferencias entre los campos de la investigación algorítmica y la investigación de operaciones?

¿Cuál es un buen algoritmo para el problema de la mochila 0-1 cuando los pesos están positivamente relacionados con los valores?

¿Hay sitios web dedicados al aprendizaje de algoritmos y la teoría de los autómatas?

En la tercera edición de 'Introducción a los algoritmos', ¿por qué comprar acciones es un problema de subarrays máximos?

Cómo crear un algoritmo con una hoja de cálculo

¿Cuál es un ejemplo de un árbol binario roscado?

¿Por qué el orden de selección no se denomina orden de intercambio?

¿Qué es un algoritmo para programar un torneo para que termine en el menor tiempo posible, dado un torneo round robin (donde cada jugador juega entre sí) entre n jugadores (n es par) que puede representarse con un gráfico completo?

¿Cuál es el mejor algoritmo para elegir para la tarea de aprendizaje automático de agrupar una base de datos de listados de casas con sus propiedades (algunos de los cuales son binarios y otros son numéricos y preferiblemente con la primera imagen)?

¿Cuáles son algunas preguntas asombrosas de CodeChef con soluciones comprensibles que me ayudarán a aprender nuevos métodos y conceptos?

¿Existe tal cosa como un 'Algoritmo Maestro'?