Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 12-09-2008 16:20:41

pourlefun
Membre
Inscription : 12-09-2008
Messages : 12

combinaison et arrangement [Résolu]

bonjour
j'aimerais savoir combien il y a de combinaison possible ou arrangement possible
de 6 chiffre dans une suite de chiffre de 1 a 70 et comment faire pour génerer toutes les possibilité , je ne suis pas très fort en algèbre alors expliquer avec des détail.
s'il vous plaît.
merci .

PS.
je ne suis pas certain d'être sur le bon sujet du forum pour cette question, alors s'il vous plaît, dirigé moi, merci.

Hors ligne

#2 12-09-2008 18:45:37

Golgup
Membre actif
Inscription : 09-07-2008
Messages : 574

Re : combinaison et arrangement [Résolu]

Salut,
Pour les combinaisons, il ya une formule;    [tex]\frac{N!}{n!(N-n)!}[/tex]
Ici, [tex]\frac{70!}{6!(70-6)!}=131115985[/tex]

++

Dernière modification par Golgup (12-09-2008 19:09:05)

Hors ligne

#3 12-09-2008 19:29:09

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 402

Re : combinaison et arrangement [Résolu]

Bonjour,


La notation traditionnelle, pour Combinaisons et Arrangements de p éléments parmi n, est  :
[tex]C_n^p\,=\,\frac{n!}{p!(n-p)!}[/tex]
et
[tex]A_n^p\,=\,\frac{n!}{(n-p)!}[/tex]  soit encore   [tex]A_n^p\,=\,p!\,C_n^p[/tex]

Ici [tex]A_{70}^6\,=\,94403509200[/tex]  soit  [tex]A_{70}^6\,=\,720\,\times\,C_{70}^6[/tex]

(Calcul fait avec la maxi calculatrice libre wxMaxima)

Et voici deux liens vers des pages d'un excellent site ;-) :
http://www.bibmath.net/dico/index.php3? … aison.html
et
http://www.bibmath.net/dico/index.php3? … ement.html
Tu y trouveras tous les éclaircissements nécessaires...

@+

Hors ligne

#4 12-09-2008 19:51:44

tibo
Membre expert
Inscription : 23-01-2008
Messages : 1 097

Re : combinaison et arrangement [Résolu]

Bonjour,

Yoshi, la notation [tex]C_n^p[/tex] est encore utilisée par les "anciens"(rien de péjoratif la dedans), mais la notation officielle est maintenant [tex]\begin{pmatrix} n \\ p \end{pmatrix}[/tex], assez perturante quand on a l'habitude de l'ancienne notation car le n et le p sont échangé, certe. (A Fred, une petite remarque que la notation a changée serai peut-être utile dans le site)

A pourlefun, tout est expliqué dans les liens de yoshi, mais j'ai l'impression que pour toi combinaisons et arangements sont la même chose, or ce sont deux mots différents pour deux notions différentes.

++

Dernière modification par tibo (12-09-2008 19:52:20)

Hors ligne

#5 12-09-2008 20:02:02

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 402

Re : combinaison et arrangement [Résolu]

Bonsoir,

Exact Tibo, je n'avais encore jamais fait attention : je viens de vérifier dans mon bouquin de TS...
J'en profite pour signaler que wxMaxima sait faire du "calcul formel" : factorisations, développements, dérivations  etc...
Fred, je plussoie Tibo : il va falloir penser à mettre à jour les pages de BibM@th !!!

@+

Hors ligne

#6 12-09-2008 20:07:39

pourlefun
Membre
Inscription : 12-09-2008
Messages : 12

Re : combinaison et arrangement [Résolu]

Merci tout le monde , je vais regarder ca de pres, et non Tibo je sais que combinaison et arrangement ne sont pas la meme chose , mais je ne suis pas sur de quel est quel , c'est a dire moi je cherche a savoir quel sont les possibilite de 6 chiffres dans la serie de 1 a 70 et je crois que cel s,appelle des arrangement , est-ce que je me trompe ,

par exemple  dans la serie suivante  1-2-3  je voudrais le nombre d'arrangement (ou combinaison) possible  dans l'ordre(les chiffres ne doivent pas se repeter)  de 2 chiffre  je crois que la reponse est la suivante 1-3 , 2-3,
,1-2  a trois ou quatre chiffre c,est facile a trouver , mais plus y en a plus c'est ardu de le faire manuelement  alors quel est la formule pour le trouver .
merci

Hors ligne

#7 12-09-2008 20:14:35

tibo
Membre expert
Inscription : 23-01-2008
Messages : 1 097

Re : combinaison et arrangement [Résolu]

La différence est simple:

pour la combinaison, l'ordre des chiffres ne compte pas
par exemple (1.2.3) est la même chose que (2.1.3)

alors que pour l'arrangement, l'ordre compte
exemple: (1.2.3) diférent de (2.1.3)

quant aux formules elles sont dans les liens de yoshi

Dernière modification par tibo (12-09-2008 20:15:36)

Hors ligne

#8 12-09-2008 20:20:58

pourlefun
Membre
Inscription : 12-09-2008
Messages : 12

Re : combinaison et arrangement [Résolu]

d'accord merci Tibo , donc c,est arrangement que je cherche , alors comment faire pour trouver le nombre d'arrangment  de 6 chiffre dans la serie de 1 a 70 , et surtout comment faire pour generer toute les combinaison , existe t'il un moyen , par exemple un logiciel de calcule qui pourrait le faire . Merci

Hors ligne

#9 12-09-2008 20:28:06

Golgup
Membre actif
Inscription : 09-07-2008
Messages : 574

Re : combinaison et arrangement [Résolu]

Pour le nombre d'arrengement, yoshi l'a dit dans le post 3

+

Hors ligne

#10 12-09-2008 20:30:54

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 402

Re : combinaison et arrangement [Résolu]

Bonsoir,

Pas le courage ce soir...
Mais demain, je vais tâcher d'écrire un petit bout de programme en Python (langage de programmation libre)
S'agissant de générer toutes les combinaisons et arrangements de 6 éléments parmi 70, je ne pense pas qu'un logiciel de calcul puisse le faire : calculer leur nombre, oui, c'est fait (cf les deux premières réponses celle de Golgup et la mienne) !
Pour les combinaisons, le programme doit être assez simple à faire (avec 6 boucles), pour les arrangements, il faut quelques tests supplémentaires pour éliminer toute valeur du compteur de boucle déjà utilisée..
Je verrai ça demain.

@+

Hors ligne

#11 12-09-2008 20:55:22

pourlefun
Membre
Inscription : 12-09-2008
Messages : 12

Re : combinaison et arrangement [Résolu]

D'accord merci pour votre aide , mais Yoshi excuse mon ignorance en la matiere mais dans ta formule pour les arrangement quel est la valeur du A et du C
merci

Hors ligne

#12 12-09-2008 21:08:32

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 402

Re : combinaison et arrangement [Résolu]

Bonsoir,

Dans la formule de calcul qui donne le nombre de combinaisons on utilise la lettre C (C comme combinaison)
Et on écrit (on note) donc : nombre de combinaisons de 6 éléments parmi 70, [tex]C_6^{70}[/tex] qui vaut comme Golgup te l'a écrit : 131115985


Dans la formule de calcul qui donne le nombre d'Arrangements on utilise la lettre A (A comme Arrangement)
Et, de même, on écrit (on note) donc : nombre d'Arrangements  de 6 éléments parmi 70, [tex]A_6^{70}[/tex] qui vaut ainsi que je te l'ai écrit 6 ! = 720 fois plus : 94403509200.
Les lettres A et C n'ont aucune valeur, ce sont juste des symboles. As-tu pigé ?

@+

Hors ligne

#13 12-09-2008 21:19:31

pourlefun
Membre
Inscription : 12-09-2008
Messages : 12

Re : combinaison et arrangement [Résolu]

oui merci

Hors ligne

#14 13-09-2008 08:02:43

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 402

Re : combinaison et arrangement [Résolu]

Bonjour,

S'agissant des combinaisons, voici un programme d'affichage testé pour [tex]C_6^{10}[/tex]

# -*- coding: cp1252 -*-

n=10
ni=n-4
nj=n-3
nk=n-2
nl=n-1
nn=n+1
for i in range(1,ni):
    for j in range(i+1,nj):
        for k in range(j+1,nk):
            for l in range(k+1,nl):
                for m in range(l+1,n):
                    for n in range (m+1,nn):
                        print "{",i,",",j,",",k,",",l,",",m,",",n,"}"

Quelques commentaires : ce programme affiche, par exemple
{4 , 5 , 7 , 8 , 9,  10}
{4 , 6 , 7 , 8 , 9,  10}
{5 , 6 , 7 , 8 , 9,  10}
Ce sont les 3 derniers de la liste de 210.
Pour augmenter la vitesse d'affichage, écrire simplement print i,j,k,l,m,n qui donnera :
5 6 7 8 9 10 qui est moins beau (mais temps d'exécution 3,5 s).
La seule chose à faire pour répondre à ta question est de remplacer tout en haut n=10 par n=70...
Python, dans une boucle d'affichage des nombres de 1 à 4, écrirait 1 2 3, parce qu'en fait dans ce langage toute boucle commence à 0. Pour afficher 1,2,3,4 iul faut demander une boucle de 1 à 5.Pour comprendre le mode de fonctionnement de ces boucles imbriquées, il faut savoir le reproduire "à la main".
On commence par écrire (dans l'ordre, ça facilite l'élaboration) 1 2 3 4 5 6
Puis on fait varier le 6e nombre de 7 à 10.
On arrive donc à 1 2 3 4 5 10 : il n'y a plus de 6e possible...
On avance donc le compteur du 5e de 1 (me 6e restant supérieur, sinon on va retomber sur l'un des précédents (dans le "désordre"n par ex : 1 2 3 4 6 5), et on fait varier le 6e de 7 à 10.
On va donc de 1 2 3 4 6 7  à  1 2 3 4 6 10...
Il n'y a plus de 6e possible après 1 2 3 4 6 10 : on augmente le 5e de 1 et on écrit la liste des solutions allant de
1 2 3 4 7 8   à   1 2 3 4 7 10.
Lorsqu'on arrivera à   1 2 3 4 9 10  il n'y aura plus de 5e possible, on démarrera alors à 1 2 3 5 6 7, en augmentant le 4 de 1...
Je réfléchis aux Arrangements : il va me falloir empêcher d'utiliser 2 fois le même nombre...

@+

Hors ligne

#15 13-09-2008 18:23:22

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 402

Re : combinaison et arrangement [Résolu]

Re,

Bon, j'ai souffert jusqu'à je découvre le mot-clé "continue" qui contrairement à ce qu'on pourrait croire renvoie au début de la boucle : le reste n'est donc pas exécuté.

# -*- coding: cp1252 -*-
import time

a=0
debut=time.time()
fin=11
for i in range(1,fin):
    for j in range(1,fin):
        if j==i :
            continue
        for k in range(1,fin):
            if k==i or k==j:
                continue
            for l in range(1,fin):
                if l==i or l==j or l==k:
                    continue                     
                for m in range(1,fin):
                    if m==i or m==j or m==k or m==l:
                        continue
                    for n in range(1,fin):
                        if n==i or n==j or n==k or n==l or n==m:
                           continue
                        a+=1
                        print i,j,k,l,m,n
fin = time.time()
temps = fin - debut
print temps/60.,a

Voilà, je ne crois pas qu'on puisse optimiser davantage ce code et gagner un temps significatif...
Dans chaque boucle à partir de la 2e, je teste si la variable est égale à celle(s) qui la précède(nt)  et dans ce cas je renvoie au début de la boucle...
En fin de parcours j'ai ajouté un compteur que j'incrémente de 1 pour savoir à la fin si j'en ai bien le nombre voulu et j'affiche les solutions.
Il esr possible d'ajouter un module d'enregistrement des réponses dans un fichier texte séquentiel, récupérable dans n'importe quel Traitement de Textes....
J'ai aussi initialisé au début un timer qui me permet de calculer le temps d'exécution : ici pour [tex]A_6^{10}[/tex] et 151200 réponses, 9,6 min avec un atlhon64 3200+ en se contentant de l'affichage du compteur, 48 min avec l'affichage présenté ci-dessus
Je n'ose même pas imaginer le temps pour calculer [tex]A_6^{70}[/tex]...

Commentaires ?

@+

Hors ligne

#16 14-09-2008 02:04:49

pourlefun
Membre
Inscription : 12-09-2008
Messages : 12

Re : combinaison et arrangement [Résolu]

le seul que j'ai c,est OUF!  et comme on dit par ici ....mechante Job

merci
et je reviens  mais franchement j'en suis un peu perdu .....

Hors ligne

#17 14-09-2008 09:10:47

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 402

Re : combinaison et arrangement [Résolu]

Bonjour,

Code "enjolivé"...
J'ai supprimé le compteur puisque j'ai la certitude que mon programme est juste.
J'ai ajouté deux fonctions :
- l'une qui convertit les secondes en h, min, s, pour afficher une durée "propre",
- l'autre qui calcule la factorielle, afin d'afficher le nombre d'arrangements :

# -*- coding: cp1252 -*-
import time

def duree(hr,mnt,sec,tot):
    tot=int(tot)
    hr=tot/3600
    tot=tot-hr*3600
    mnt=tot/60
    sec=tot%60
    return hr,mnt,sec,tot

def factorielle(x,fin):
    for i in range(2,fin):
        x*=i
    return x,fin

debut = time.time()
a,x,fin=0,1,7
for i in range(1,fin):
    for j in range(1,fin):
        if j==i:
            continue
        for k in range(1,fin):
            if k==i or k==j:
                continue
            for l in range(1,fin):
                if l==i or l==j or l==k:
                    continue                     
                for m in range(1,fin):
                    if m==i or m==j or m==k or m==l:
                        continue
                    for n in range(1,fin):
                        if n==i or n==j or n==k or n==l or n==m:
                           continue
                        print i,j,k,l,m,n

terme = time.time()
temps = terme - debut
hr,mnt,sec,tot=0,0,0,temps
hr,mnt,sec,temps=duree(hr,mnt,sec,temps)
print 'Temps de fonctionnement du module',hr,'h',mnt,'min',sec,'s'
x1,fin=factorielle(x,fin)
x2,fin=factorielle(x,fin-6)
a=x1/x2
print 'pour',a,'arrangements'

Python est un langage de programmation "Open Source", libre si tu préfères, ce qui signifie que tu peux demander à en voir les lignes de code, et gratuit pour Windows, Linux et MAC.
Téléchargement de Python pour Windows :
http://www.python.org/download/ et choisir :
Python 2.5.2 Windows installer
    (Windows binary -- does not include source)
Après installation, il y a une icône nommée : IDLE(Python GUI) :
double-clic dessus
- Puis File et New window
- Copier/coller le code ci-dessus en respectant bien l'indentation (le décalage) de 4 espaces : dans Python, tout est dans l'indentation, ne pas la respecter, c'est avoir un code qui ne fonctionne pas.
- Puis Run et Run Module et sauvegarder...

Autres explications (tu dis que tu es un peu perdu) ?

@+

PS : Pour [tex]A_6^{10}[/tex], sur ma machine, le défilement des 151200 possibilités prend 48 min..
En admettant qu'il y ait proportionnalité,  [tex]A_6^{70}[/tex] demanderait 20812 jours, soit un peu plus de 57 ans... Donc, ne pas se lancer là-dedans ;-)

Hors ligne

#18 14-09-2008 10:58:29

Golgup
Membre actif
Inscription : 09-07-2008
Messages : 574

Re : combinaison et arrangement [Résolu]

Salut yoshi,

Pour voir, j'ai installer Python, sa marche.Et j'ai des questions, comment fais-tu pour écrire le script?! Sinon, ou doit on faire les modifications(dans le programme) pour qu'il calcule d'autres arrangements/combinaisons que ceux demandés par pourlefun?

Merci

++

Dernière modification par Golgup (14-09-2008 11:01:42)

Hors ligne

#19 14-09-2008 12:21:45

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 402

Re : combinaison et arrangement [Résolu]

Salut Golgup,

Pour écrire ce script, tu peux te contenter comme indiqué d'un copier/coller, et je le répète, en faisant attention à l'indentation !!!
Le script précédent est prévu pour afficher [tex]A_6^{fin-1}[/tex],
où fin-1 est le nombre total d'éléments.
Pour afficher [tex]A_6^6[/tex], remplacer dans le script, la ligne a,x,fin=0,0,11 par a,x,fin=0,0,7 et  tu auras les 720 permutations...
Pour [tex]A_p^{fin-1}[/tex] avec [tex]p\,\not=\,6[/tex], plusieurs modifications s'imposent :

*-* Si p<6,
1. Supprimer des boucles, par exemple pour [tex]A_5^{10}[/tex] : le codage des boucles devient :

for i in range(1,fin):
    for j in range(1,fin):
        if j==i:
            continue
        for k in range(1,fin):
            if k==i or k==j:
                continue
            for l in range(1,fin):
                if l==i or l==j or l==k:
                    continue                     
                for m in range(1,fin):
                    if m==i or m==j or m==k or m==l:
                        continue
                    print i,j,k,l,m

2. Modifier la ligne a,x,fin=0,0,7 ainsi : a,x,fin,p=0,0,7,5, puis la ligne du 2e appel de la factorielle ainsi : x2,fin=factorielle(x,fin-p). Tu pourras ainsi, moyennant suppression du nombre de boucles voulu, effectuer tout calcul de [tex]A_p^n[/tex] pour 2<=p<=6 et pour n'importe quel n=fin-1

*-*si p>6. Cas de p=7
Il faut rajouter une boucle :

for i in range(1,fin):
    for j in range(1,fin):
        if j==i:
            continue
        for k in range(1,fin):
            if k==i or k==j:
                continue
            for l in range(1,fin):
                if l==i or l==j or l==k:
                    continue                     
                for m in range(1,fin):
                    if m==i or m==j or m==k or m==l:
                        continue
                    for n in range(1,fin):
                        if n==i or n==j or n==k or n==l or n==m:
                           continue
                        for o in range(1,fin):
                            if o==i or o==j or o==k or o==l or o==m or o==n:
                                continue
                            print i,j,k,l,m,n,o

Pour afficher tous les arrangements correspondants à [tex]A_7^8[/tex] par exemple, compte tenu des modifs du point 2. ci-dessus, modifier ainsi :
a,x,fin,p=0,0,9,7
Je pense être passé partout.
Toute modification du nombre p entraîne donc l'ajout ou la suppression d'une ou plusieurs boucles : impossible de faire autrement (en tout cas, s'il était possible de faire autrement, je n'en ai aucune idée et je pense que c'est impossible de faire sans...)

Pour les Combinaisons, c'est bien plus simple, mais il y a toujours des boucles à enlever ou ajouter. Tu sauras t'adapter ?

@+

Hors ligne

#20 14-09-2008 18:17:02

Golgup
Membre actif
Inscription : 09-07-2008
Messages : 574

Re : combinaison et arrangement [Résolu]

Bonjour,


Cela fait n heures que j'essaye de comprendre toujours mieux ce language de programmation!.. et voila qu'il tombe en panne. Piou!
J'ai quand meme compris quelques trucs et pus essayer pour d'autres valeurs de n et p, merci Yoshi!
Un truc que je pige pas c'est, dans #17, on dirait que le programme donne toutes les combinaisons pour 6, or il doit donner les arrangements?..

Bref, le mieux pour moi serait de m'en tenir à mon niveau scolaire..

ps :  Pourquoi Python ne fonctionne plus chez moi, on a le droit qua un certaine durée d'utilisation?

++

Dernière modification par Golgup (14-09-2008 18:17:38)

Hors ligne

#21 14-09-2008 18:51:17

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 402

Re : combinaison et arrangement [Résolu]

Re,

Il DOIT fonctionner : c'est libre et gratuit...
Des fois, il bloque après longue utilisation : là redémarrer windows (il tourne mieux sous Linux).
Tiens, un bouquin à télécharger au format pdf, ici http://www.cifen.ulg.ac.be/inforef/swi/python.htm
En dessous du sommaire : Téléchargements et clic droit sur la première ligne et avec IE : Enregistrer la cible...

#17 : ce sont bien des arrangements, je tiens compte de l'ordre 1,2,3 ce n'est pas le même arrangement que 2,1,3 alors que c'est la même combinaison...

Au passage, j'ai adapté le programme de combinaisons pour [tex]C_6^n[/tex], ajouté les fonctions de conversion de temps et de factorielle... Je peux te le joindre par mél, si tu veux...
Tenir compte de l'ordre, c'est augmenter considérablement le nombre de réponses...
Arrangements : #17
Combinaisons : #14

Combinaisons de {a,b,c} : 1 seule, puisque {b,a,c} c'est la même chose...
Arrangements avec {a,b,c} :
{a,b,c},{a,c,b}, {b,a,c},{b,c,a},{c,a,b},{c,b,a}: 6 parce les 3 lettres ne sont jamais simultanément dans la même position...

@+

Hors ligne

#22 15-09-2008 20:29:24

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 402

Re : combinaison et arrangement [Résolu]

Bonsoir,

Voilà qui va intéresser Golgup...
J'ai réussi à ruser avec mon programme et sans changer le nombre de boucles, à n'en utiliser que 2, 3, 4, 5 ou 6...
Je peux donc afficher [tex]A_2^n,\;A_3^n,\;A_4^n,\;A_5^n,\,\text{et}\,A_6^n[/tex], mais aussi stocker les solutions dans un fichier texte.

@+

Dernière modification par yoshi (16-09-2008 16:29:59)

Hors ligne

Pied de page des forums