Ordinazione di elementi in modo che alcuni elementi non si incastrino tra gli altri


10

Dato un intero e un insieme di terzine di interi distinti trova un algoritmo che trova una permutazione dell'insieme tale che o determina correttamente che non esiste tale permutazione. Meno formalmente, vogliamo riordinare i numeri da 1 a ; ciascun triplo in indica che deve apparire prima nel nuovo ordine, ma non deve apparire traS { ( i , j , k ) 1 i , j , k n , i j , j k , i k } , π { 1 , 2 , , n } ( i , j , k ) Sn

S{(i,j,k)1i,j,kn,ij,jk,ik},
π{1,2,,n}n ( i , j , k ) S i k j i k
(i,j,k)S(π(j)<π(i)<π(k))  (π(i)<π(k)<π(j))
n(i,j,k)Sikjie .k

Esempio 1

Supponiamo che e . PoiS = { ( 1 , 2 , 3 ) , ( 2 , 3 , 4 ) }n=5S={(1,2,3),(2,3,4)}

  • ( 1 , 2 , 3 ) S π ( 1 ) > π ( 3 )π=(5,4,3,2,1) non è una permutazione valida, perché , ma .(1,2,3)Sπ(1)>π(3)

  • ( 1 , 2 , 3 ) S π ( 1 ) < π ( 3 ) < π ( 5 )π=(1,2,4,5,3) non è una permutazione valida, perché ma .(1,2,3)Sπ(1)<π(3)<π(5)

  • (2,4,1,3,5) è una permutazione valida.

Esempio 2

Se e , non vi è alcuna permutazione valida. Allo stesso modo, non esiste alcuna permutazione valida se e ( Penso; potrebbe aver fatto un errore qui).S = { ( 1 , 2 , 3 ) , ( 2 , 1 , 3 ) } n = 5 S = { ( 1 , 2 , 3 ) , ( 3 , 4 , 5 ) , ( 2 , 5 , 3 ) , ( 2 , 1 , 4 ) }n=5S={(1,2,3),(2,1,3)}n=5S={(1,2,3),(3,4,5),(2,5,3),(2,1,4)}

Bonus: quali proprietà di determinano l'esistenza di una soluzione fattibile?S


Perché non riformulare la seconda condizione come ? Quindi hai un problema semplice, più o meno, di soddisfazione del vincolo. (Nota che ho semplificato la condizione in base alle altre ipotesi.)(σmi,σmj,σmk)S(i>jj>k)
Dave Clarke,

A proposito: qual è la motivazione per questo problema?
Dave Clarke,

@DaveClarke Vedi la mia modifica. Questo problema è stato sottratto a una discussione riguardante un problema di programmazione di cui stavo discutendo con alcuni altri studenti in laboratorio. Fondamentalmente, l'idea è che tu abbia molti lavori, alcuni dei quali devono essere eseguiti in un certo ordine. Tuttavia, non si desidera pianificare alcuni lavori tra lavori in sequenza, probabilmente per ragioni molto sottili.
Patrick87,

3
Σ={1,2,,n}

σ

Risposte:


3

Ecco un algoritmo ingenuo. Alla fine si basa sulla forza bruta, ma a volte può andare bene.

(σmi,σmj,σmk)Si<k¬(i<j<k)Ai<kB¬(i<j<k)Bi>jj>kij,jk

  1. AΘO(|S|)
  2. BΘΘBΘO(|S|2)
  3. BΘ|S|
    B
  4. AB

nxi[0,n1]


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.