¿Se puede verificar la clasificación de una lista sin comparar vecinos?


14

Una lista de norte elementos se puede verificar ordenada comparando cada elemento con su vecino. En mi aplicación, no podré comparar cada elemento con su vecino: en cambio, las comparaciones a veces serán entre elementos distantes. Dado que la lista contiene más de tres elementos y también que la comparación es la única operación admitida, ¿existe alguna vez una "red" de comparaciones que demuestre que la lista está ordenada, pero le falta al menos un vecino a vecino directo? ¿comparación?

Formalmente, para una secuencia de elementos , tengo un conjunto de pares de índices para los cuales sé si , o . Existe un par que falta en el conjunto de comparaciones. ¿Es posible, entonces, demostrar que la secuencia está ordenada?miyo(j,k)mij>mikmij=mikmij<mik(l,l+1)


1
Una nota en caso de que alguien encuentre esta página más tarde con la pregunta de si puede verificar que una lista esté ordenada sin comparar nada; Solo si puede poner algunos límites a las entradas y / o saber algo sobre la forma de las entradas; (por ejemplo, clasificación de radix).
HammerN'Songs

Sin embargo, existe la posibilidad de optimizar el número de comparaciones utilizadas en los casos en que no se ordena.
Acumulación

1
@Acumulación ¿Existe realmente esa posibilidad? Debería ser trivial tomar cualquier programa de este tipo y preparar una lista adversaria de longitud n que obligue al programa a hacer comparaciones n-1. Vea también Un Adversario asesino para QuickSort , que lleva esta idea aún más lejos para forzar la clasificación rápida en la parte mala de su análisis asintótico.
Daniel Wagner

@DanielWagner Sí, dicha optimización debe hacerse con respecto a la entrada esperada de la aplicación en particular.
Acumulación

Probablemente no sea posible. Pero por favor aclare: ¿quiso decir que solo conoce las comparaciones de la forma (j, j + 1), no general (j, k)? Por ejemplo, ¿alguna vez conoce la comparación de dos ítems de índices (j, j + 3)?
Ron

Respuestas:


34

(yo,yo+1)

1,2,...,yo-1,yo,yo+1,yo+2,...,norte1,2,...,yo-1,yo+1,yo,yo+2,...,norte

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.