L'ordinamento di un elenco può essere verificato senza confrontare i vicini?


14

Un elenco -item può essere verificato come ordinato confrontando ogni articolo con il suo vicino. Nella mia applicazione, non sarò in grado di confrontare ogni elemento con il suo vicino: invece, i confronti a volte saranno tra elementi distanti. Dato che l'elenco contiene più di tre elementi e anche che il confronto è l'unica operazione supportata, esiste mai una "rete" di confronti che dimostrerà che l'elenco è ordinato, ma manca almeno un vicino vicino al vicino confronto?n

Formalmente, per una sequenza di elementi , ho un insieme di coppie di indici per le quali so se , o . Esiste una coppia che manca dall'insieme di confronti. È mai possibile, quindi, provare che la sequenza è ordinata?eio(j,K)ej>eKej=eKej<eK(l,l+1)


1
Una nota nel caso in cui qualcuno trovi successivamente questa pagina con la domanda se è possibile verificare che un elenco sia ordinato senza confrontare nulla; Solo se puoi mettere dei limiti sugli input e / o sapere qualcosa sulla forma degli input; (ad es. ordinamento radix).
HammerN'Songs

Vi è, tuttavia, la possibilità di ottimizzare il numero di confronti utilizzati nei casi in cui non è ordinato.
Accumulo

1
@Acccumulation Esiste davvero una tale possibilità? Dovrebbe essere banale prendere qualsiasi programma del genere e preparare un elenco contraddittorio di lunghezza n che costringe il programma a fare confronti n-1. Vedi anche A Killer Adversary per QuickSort , che porta ulteriormente questa idea a forzare quicksort nella parte cattiva della sua analisi asintotica.
Daniel Wagner,

@DanielWagner Sì, tale ottimizzazione deve essere effettuata rispetto all'input previsto della particolare applicazione.
Accumulo

Probabilmente impossibile. Ma per favore chiarisci: intendevi dire che conosci solo i confronti del modulo (j, j + 1), non generale (j, k)? Ad esempio, conosci mai il confronto tra due elementi di indici (j, j + 3)?
Ron,

Risposte:


34

(io,io+1)

1,2,...,io-1,io,io+1,io+2,...,n1,2,...,io-1,io+1,io,io+2,...,n

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.