É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 ) ∈ S
Exemple 1
Supposons que et . alorsS = { ( 1 , 2 , 3 ) , ( 2 , 3 , 4 ) }
n'est pas une permutation valide, car , mais .π ( 1 ) > π ( 3 )
n'est pas une permutation valide, car mais .π ( 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 ) }
Bonus: quelles propriétés de déterminent si une solution réalisable existe?
la source
Réponses:
Voici un algorithme naïf. Il repose en fin de compte sur la force brute, mais peut parfois fonctionner correctement.
la source
Voici une réponse partielle:
la source