Dénombrer les permutations vérifiant qqs =tés

kjones Messages postés 4 Statut Membre -  
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour à tous,

Le problème théorique à résoudre n'est a priori pas trop délicat. Le problème c'est que les seuls langages que je maîtrise sont ceux de ma TI-83 et de mon ATARI, c'est donc plus un problème d'implémentation.

Le cas particulier du problème est le suivant. Tester pour chaque permutation de la liste {1,2,3,...,8} une série de choses, qui se ramènent à ce qui suit,

est-ce que les soustractions internes à chaque bloc (ci-dessous) sont de même signes, i.e. L1(1)-L1(5)/ABS(L1(1)-L1(5)) = L1(2)-L1(6)/ABS(L1(2)-L1(6))=....=...L1(4)-L1(8), la même chose pour les deux suivantes, et enfin pour les trois suivantes. Si les soustractions internes à chaque bloc sont de même signes je veux comptabiliser la permutation, sinon non.

"A-->B"
"A-->C"
"B-->C"
-----------
L1(1)-L1(5)
L1(2)-L1(6)
L1(3)-L1(7)
L1(4)-L1(8)
-----------
L1(1)-L1(3)
L1(2)-L1(4)
------------
L1(5)-L1(7)
L1(6)-L1(8)
------------

(les cas ci-dessous sont des variations et ils donneront (ou alors je ne comprends plus rien) exactement les mêmes résultats. Mais je serai intéressé de voir combien en vérifie au moins 1. Et comme il peut y en avoir qui en vérifie plusieurs blocs.

Les "A-->B" etc. décrivent un graphe avec lequel la permutation doit être compatible. Idéalement j'aurais donc à la fin tel graphe est vérifié par tant de permutation et tant de permutation vérifie au moins un graphe.

Mais tout ceci part d'un problème qui peut se généraliser à de plus gros graphes. Je serai ravi de faire part du problème entier si quelqu'un est intéressé.

Comme je disais plus haut n'importe quel langage qui pourra être compilé sous windows XP fera l'affaire, comme je connais rien la contrainte est en gros que le compilateur soit en libre accès.

Merci d'avance pour votre aide

Bonne soirée

kjones

A-->B
A-->C
C-->B

-----------
L1(1)-L1(5)
L1(2)-L1(6)
L1(3)-L1(7)
L1(4)-L1(8)
-----------
L1(1)-L1(2)
L1(3)-L1(4)
------------
L1(5)-L1(6)
L1(7)-L1(8)

*****************

B-->A
B-->C
A-->C

-----------
L1(1)-L1(3)
L1(2)-L1(4)
L1(5)-L1(7)
L1(6)-L1(8)
-----------
L1(1)-L1(5)
L1(2)-L1(6)
-----------
L1(3)-L1(7)
L1(4)-L1(8)
-----------

B-->C
B-->A
C-->A

-----------
L1(1)-L1(3)
L1(2)-L1(4)
L1(5)-L1(7)
L1(6)-L1(8)
-----------
L1(1)-L1(2)
L1(5)-L1(6)
-----------
L1(3)-L1(4)
L1(7)-L1(8)

********************

C-->A
C-->B
A-->B

-----------
L1(1)-L1(2)
L1(5)-L1(6)
L1(3)-L1(4)
L1(7)-L1(8)
-----------
L1(1)-L1(5)
L1(3)-L1(7)
-----------
L1(2)-L1(6)
L1(4)-L1(8)

C-->B
C-->A
B-->A

-----------
L1(1)-L1(2)
L1(5)-L1(6)
L1(3)-L1(4)
L1(7)-L1(8)
-----------
L1(1)-L1(3)
L1(5)-L1(7)
-----------
L1(2)-L1(4)
L1(6)-L1(8)

3 réponses

lermite222 Messages postés 9042 Statut Contributeur 1 191
 
bonjour,
j'ai rien compris à tes explications....
Mais pour un éditeur/compilateur tu peu téléchargé VB express, il est en VB.net/VB2005
Mais si tu ne connait aucun language, bon amusement......
A+
louis
0
kjones Messages postés 4 Statut Membre
 
Bonjour,

L'idée est d'avoir une boucle qui me permette de tester toutes les permutations de la liste {1,2,3,4,5,6,7,8}.

Soit L1 la permutation actuelle et L1(k) le k-ème élément de la liste. J'aimerais tester si les valeurs suivantes sont positives ou négatives.

L1(1)-L1(5)
L1(2)-L1(6)
L1(3)-L1(7)
L1(4)-L1(8)

( - pour la soustraction)

Si elles sont toutes positives (ou toutes négatives) cette permutation peut m'intéresser mais elle doit encore être telle que:

-----------
L1(1)-L1(3)
L1(2)-L1(4)

ont aussi le même signe.

et telle que
------------
L1(5)-L1(7)
L1(6)-L1(8)

ont le même signe.

Si les conditions sont vérifiées je veux la compatibiliser sinon non.

C'est la base après il y a des variantes que je veux tester mais l'idée est là.

kjones
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
bonjour,
mais tu ne m'a toujour pas dit par quel moyen tu comptais faire exécuter ces calcul ?
Mais dans tout les languages les comparaisons sont les mêmes sauf pour la façon de le faire comprendre au compilateur.

si 5>4 =vrai
si 5<4 = faux
si 5=4 =faux
si 5=5 =vrai

combinés
si (5<4) et (6>2) et (4=4) c'est vrai, toutes conditions remplies
si (5<4) et (6>2) et (4<>4) c'est faux, 1 condition fausse
Je vois rien d'autre possible comme explications vu que je ne sais pas ce que tu veux en faire.
A+
louis
0