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

Patrick87
la source
(σ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]

Dave Clarke
la source
1

Voici une réponse partielle:

je<kNPje<k

Mohammad Al-Turkistany
la source