Ordonner les éléments pour que certains éléments ne se rencontrent pas entre eux


10

Étant donné un entier et un ensemble de triplets d'entiers distincts trouver un algorithme qui trouve soit une permutation de l'ensemble telle que ou détermine correctement qu'aucune telle permutation n'existe. Moins formellement, nous voulons réorganiser les nombres de 1 à ; chaque triple dans indique que doit apparaître avant dans le nouvel ordre, mais ne doit pas apparaître entreS { ( i , j , k ) 1 i , j , k n , i j , j k , i k } , π { 1 , 2 , , n } ( i , j , k ) Sn

S{(je,j,k)1je,j,kn,jej,jk,jek},
π{1,2,,n}n ( i , j , k ) S i k j i
(je,j,k)S(π(j)<π(je)<π(k))  (π(je)<π(k)<π(j))
n(i,j,k)Sikjiet .k

Exemple 1

Supposons que et . alorsS = { ( 1 , 2 , 3 ) , ( 2 , 3 , 4 ) }n=5S={(1,2,3),(2,3,4)}

  • π=(5,4,3,2,1) n'est pas une permutation valide, car , mais .π ( 1 ) > π ( 3 )(1,2,3)Sπ(1)>π(3)

  • π=(1,2,4,5,3) n'est pas une permutation valide, car mais .π ( 1 ) < π ( 3 ) < π ( 5 )(1,2,3)Sπ(1)<π(3)<π(5)

  • (2,4,1,3,5) est une permutation valide.

Exemple 2

Si et , il n'y a pas de permutation valide. De même, il n'y a pas de permutation valide si et ( Je pense; peut-être fait une erreur ici).S = { ( 1 , 2 , 3 ) , ( 2 , 1 , 3 ) }n=5S={(1,2,3),(2,1,3)}n=5S={(1,2,3),(3,4,5),(2,5,3),(2,1,4)}

Bonus: quelles propriétés de déterminent si une solution réalisable existe?S


(σmje,σmj,σmk)S(je>jj>k)

BTW: Quelle est la motivation de ce problème?
Dave Clarke

@DaveClarke Voir ma modification. Ce problème a été extrait d'une discussion autour d'un problème de planification dont je discutais avec d'autres étudiants du laboratoire. Fondamentalement, l'idée est que vous avez beaucoup de tâches, dont certaines doivent être exécutées dans un certain ordre. Cependant, vous ne voulez pas que certains travaux soient planifiés entre des travaux dans une séquence, peut-être pour des raisons très subtiles.
Patrick87

3
Σ={1,2,,n}

σ

Réponses:


3

Voici un algorithme naïf. Il repose en fin de compte sur la force brute, mais peut parfois fonctionner correctement.

(σ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. UNEB

nXje[0,n-1]


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.