Número mínimo de comparaciones necesarias para ordenar (ordenar) 5 elementos

22

Encuentre la menor cantidad de comparaciones necesarias para ordenar (ordenar) cinco elementos e idee un algoritmo que clasifique estos elementos usando esta cantidad de comparaciones.

Solución : ¡ Hay 5! = 120 resultados posibles. Por lo tanto, un árbol binario para el procedimiento de clasificación tendrá al menos 7 niveles. De hecho, ≥ 120 implica h ≥ 7. Pero 7 comparaciones no son suficientes. El menor número de comparaciones necesarias para ordenar (ordenar) cinco elementos es 8.2hh

Aquí está mi pregunta real: encontré un algoritmo que lo hace en 8 comparaciones, pero ¿cómo puedo demostrar que no se puede hacer en 7 comparaciones?

Por favor ayuda
fuente

Respuestas:

27

La solución está mal. Demuth [1; a través de 2, sec. 5.3.1] muestra que se pueden ordenar cinco valores utilizando solo siete comparaciones, es decir, que el límite inferior "teórico de la información" es estricto en este caso.

La respuesta es un método adaptado a , no un algoritmo general. Tampoco es muy agradable. Este es el esquema:norte=5 5

  1. Ordena los dos primeros pares.

  2. Ordene los pares con su respectivo elemento más grande.

    [una,si,do,re,mi]una<si<redo<re

  3. mi[una,si,re]

  4. do

do<redo

Como no veo cómo escribir un pseudocódigo "agradable" de esto, vea aquí una implementación probada (y con suerte legible).


  1. Doctor en Filosofía. tesis (Universidad de Stanford) por HB Demuth (1956)

    Ver también Clasificación electrónica de datos por HB Demuth (1985)

  2. Ordenar y buscar por Donald E. Knuth; El arte de la programación de computadoras vol. 3 (2a ed., 1998)
Rafael
fuente
55
La prueba da cinco puntos por demostrar que es imposible. Me pregunto cuántos puntos obtendría por su respuesta :-) (Probablemente cero ya que la prueba no puede estar equivocada).
gnasher729
0

Iniciar sesión(norte!)norte<>norte!Iniciar sesión(5 5!)6,91

5 5!=12027 7=128

No es un código bonito o corto, y probablemente debería usar métodos de generación de código para crear el árbol de decisión y los intercambios en lugar de codificarlo a mano, pero funciona; y probablemente funciona para cualquier posible permutación de 5 elementos, lo que demuestra que puede clasificar 5 elementos en no más de 7 comparaciones.

Ron Peacetree
fuente
Ω(norteIniciar sesiónnorte)
El límite inferior teórico para el peor de los casos es ceil (log2 (n!)), Porque hay exactamente n! permutaciones, y si hay k comparaciones necesita 2 ^ k ≥ n !. No es solo un factor constante 1, es exacto.
gnasher729
-1

Estaba pensando en la clasificación rápida. selecciona como pivote el elemento que resulta ser el elemento del medio. compare el pivote con los 4 elementos restantes, lo que da como resultado dos pilas para ordenar. cada una de esas pilas se pueden clasificar en 1 comparación. a menos que haya cometido un error terrible, los 5 elementos se clasificaron por completo en solo 6 comparaciones y creo que esa es la menor cantidad de comparaciones necesarias para hacer el trabajo. La pregunta original era encontrar el menor número de comparaciones para ordenar 5 elementos.

scottyc
fuente
1
¿Cómo se puede clasificar una pila de 3 elementos en 1 comparación?
xskxzr
¿De qué pila de 3 elementos estás hablando? Lo que describí anteriormente produce 2 pilas de 2 elementos después de la primera pasada.
scottyc
Pensé que usabas un elemento aleatorio como pivote. ¿Cómo puede seleccionar el elemento central como pivote en 4 comparaciones?
xskxzr
Eso no es lo que estoy diciendo. desde arriba "¡Desde 5! = 120 .... usando un árbol de decisión binario puede ordenar 5 elementos en 7 comparaciones". el número de permutaciones de los elementos es 120, pero debe haber una rama que solo tenga 6 comparaciones porque una muestra aleatoria de Quicksort tomó solo 6 para hacer el trabajo. Una de las 120 permutaciones es para la lista ordenada. esa rama podría contener tan solo 4 comparaciones.
scottyc
-2

Si puede probar el algoritmo, pruébelo en todas las combinaciones de números. Si tienes muchos números, prueba en muchas combinaciones aleatorias. No es preciso, pero es más rápido que todas las combinaciones.

Mínimo
a <b <c = 2
a <b <c <d = 3
a <b <c <d <e = 4

Máximo
3 ^ 3
4 ^ 4
5 ^ 5

Inserte en el medio use 3-6 para 4 números.
Combinación de uso 4-5 para 4 números.
La comparación mínima por wiki es 5 para 4 números :) Para 5 es 7. Usas 8, aún así.
https://en.wikipedia.org/wiki/Comparison_sort#Number_of_comparisons_required_to_sort_a_list
Si sabe todo antes de las comparaciones, puede ir abajo con las comparaciones. Mi promedio para 4 números es 3.96 / 1024 todas las combinaciones.

Peter Mlich
fuente
2
Esto no responde la pregunta. La pregunta pregunta cómo demostrar que no hay forma de ordenar usando solo 7 comparaciones. Para usar su enfoque, tendríamos que enumerar todos los algoritmos que usan como máximo 7 comparaciones. Creo que hay demasiados algoritmos para enumerar en un período de tiempo razonable. En cualquier caso, no veo lo que esto agrega sobre la respuesta existente, que ya dio una respuesta completa a la pregunta. Preferiríamos que se concentre en responder preguntas donde pueda agregar algo nuevo.
DW
Agregar es un gráfico y un consejo para alg. para predecir el valor de cmp antes de cmp. Y su mínimo es 7, otras fuentes 8, verdadero mínimo. es 4 !!! 4 es trabajo solo para orden asc / desc. Ex1: 00000 01234 43210 10000 ... Ex2: Insertar en el medio: 43210, comenzar 4, obtener 3, cp 4> 3, obtener 2, cp 4> 2, cp 3> 3, obtener 1, cp (medio) 3> 1, cp 2> 1, obtener 0, cp (medio) 3> 0, cp 2> 0, cp 1> 0 ... 8 cmp. 7 puede ser posible para pedidos concretos o alg. Puede buscar en mi página 4 números mlich.zam.slu.cz/js-sort/x-sort-x2.htm , promedio 3.96. min-max 3-6. Puede cambiar por 5 y probar su alg.
Peter Mlich