Arrangement / Combinaison

Kamijee -  
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à vous,

Déjà je tenais à signaler que je ne suis ni une mathématicienne, ni une informaticienne, je ne sais donc pas programmer et je n'ai donc pas votre langage technique (c'est pourquoi je ne savais pas quoi écrire dans la recherche).
Et là vous vous dites : "Éh merde, voilà un boulet" :-p

Mais je vais tout de même vous exposer mon problème, on ne sait jamais ^^

J'aimerais soit un logiciel en ligne, soit une formule (sous Excel ou OpenCalc) pour pouvoir me trouver des combinaisons.
Comme un exemple va être plus parlant en voici un :

Je dispose de 3 chiffres (1, 2, 3) et je veux faire une combinaison de 4 chiffres, je peux donc obtenir ce genre de combinaison :
1111
1112
1121
1211
2111
1113
2211
1231
...

Cependant comme dans cette combinaison il n'y a pas de "début" et de "fin" les combinaisons suivantes sont les "même" et font donc "doublon" (quadruplon pour le coup ^^).
1112 = 1121 = 1211 = 2111

1231 = 1123 = 3112 = 2311
qui est différent de :
3121 = 1312 = 2131 = 1213
...

Il faudrait donc dans les résultats de toutes les combinaisons, garder qu'une combinaison parmi les "même".

La finalité est toujours de faire une combinaison de 4 (ou 6) chiffres mais avec plus de chiffres (1, 2, 3, 4, 5, 6, 7...)

J'espère avoir été tout de même assez claire et je vous remercie d'avance pour votre aide.

5 réponses

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
bonjour

Pour le vocabulaire, ce sont des combinaisons avec répétition que tu cherches
et le nombre de combinaisons avec répétitions de p éléments choisis parmi m est
Combin(m + p - 1, p)
un exemple
https://www.cjoint.com/?0KwhP64qNOn

bonne suite
0
Kamijee
 
Déjà merci à toi d'avoir pris du temps pour me répondre.

Peut-être que j'ai mal utilisé ton fichier Excel, mais il ne semble pas me donner toute les combinaisons.
Par exemple avec p=4 et m=3, ça me donne 15 combinaisons.
Et en regardant cette listes, je ne trouve pas, par exemple, la combinaison 1132, 1312, 2212, ou encore 3213...

En cherchant un peu, j'ai l'impression que ce que je cherche ce n'est pas une Combinaison, mais un Arrangement.

Et je souhaitais préciser que quand je dis que :
1213 = 3121 = 1312 = 2131
c'est qu'en lisant en boucle chacune de ces listes de chiffre, on lit à chaque fois la même suite. Avec des lettres ça donnerais :
abcd = dabc = cdab = bcda

Donc problème non résolue :-p
0
Kamijee
 
Je souhaitais aussi partager ce qu'on a put me répondre sur d'autre forum, si ça peut aider à m'aider ^^

Algorithme de Joe Sawada :
http://www.cis.uoguelph.ca/~sawada/papers/alph.pdf


Je ne sais pas si ça correspond à mon problème...
Ensuite je ne maitrise pas assez Excel pour traduire l'algo en VBA. Mais il ne fait qu'une dizaine de lignes, donc ca ne pose peut être pas problème à ceux qui maitrisent ce langage.
0
Kamijee
 
Un autre lien :

Formule de Burnside-Frobenius et Indicateur d'Euler
http://www.les-mathematiques.net/d/c/c/node4.php
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
re

je ne comprends pas bien ce que tu veux
pour m = 3 et p = 4, par exemple
la combinaison avec répétition 1132 figure bien parmi les 15 possibles, mais sous la forme 1123
et comme tu as précisé
Il faudrait donc dans les résultats de toutes les combinaisons, garder qu'une combinaison parmi les "même".
1132 et 1123 sont deux arrangements différents mais de la même combinaison avec répétition

RQ. dans un arrangement l'ordre est pris en compte 1123 est différent de 1213,
dans une combinaison non et 1123 = 1213

bonne suite
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
RQ2. l'utilitaire SuccesseurCombinaisonsAvecRepetition ne fait guère plus qu'une dizaine de lignes, c'est lui qui génère la suite des combinaisons avec répétition, il est dans le Module 1.
Le code qui est dans Feuil1, s'occupe principalement de l'interfaçage entre toi et l'utilitaire (entrées/sorties entre autres)
0
Kamijee
 
Sacré vocabulaire ^^
Toujours d'après recherche, je pense alors que c'est un Arrangement avec Répétition.

Je peux reformuler mon énoncer avec l'exemple d'un collier.
Ce que j'aimerais c'est de pouvoir :
- choisir de combien de perle sera composer les colliers
- choisir le nombre de couleur disponible des perles (ces couleurs étant communes à toutes les perles composant le collier)
- obtenir le nombre de collier différent ainsi que l'arrangement / le détail de tous ces colliers

Mais comme un collier c'est circulaire les arrangements suivants sont les même :

1213 = 3121 = 1312 = 2131
1234 = 4123 = 3412 = 2341

En lisant en boucle chacune de ces listes de chiffre, on lit à chaque fois la même suite.
Avec des lettres ça donnerais :

aacb = baac = cbaa = acba
abcd = dabc = cdab = bcda

J'espère avoir été plus claire ^^
0
yoda
 
Bonjour,

J'ai ecrit une petite macro en VBA Excel capable de trouver toutes les combinaisons de 4 chiffres possibles en suivant les règles de non-repetition.

Sub cmb_4()

Dim tab_cmb(2000) As String, nbr_cmb As Integer, cnt_cmb As Integer
Dim str_cmb As String, txt_cmb As String, xst_cmb As Boolean
Dim i1 As Integer, i2 As Integer, i3 As Integer, i4 As Integer
Dim MAX_CAR As Integer

MAX_CAR = 9 'indiquer le nombre de chiffres (minimum 1, maximum 9)

nbr_cmb = 0
For i1 = 1 To MAX_CAR
    For i2 = 1 To MAX_CAR
        For i3 = 1 To MAX_CAR
            For i4 = 1 To MAX_CAR
                txt_cmb = Trim(Str(i1)) + Trim(Str(i2)) + Trim(Str(i3)) + Trim(Str(i4))
                xst_cmb = False
                For cnt_cmb = 1 To nbr_cmb
                    str_cmb = tab_cmb(cnt_cmb) + tab_cmb(cnt_cmb)
                    If InStr(str_cmb, txt_cmb) > 0 Then
                        xst_cmb = True
                        Exit For
                    End If
                Next cnt_cmb
                If Not xst_cmb Then
                    nbr_cmb = nbr_cmb + 1
                    tab_cmb(nbr_cmb) = txt_cmb
                End If
            Next i4
        Next i3
    Next i2
Next i1
MsgBox ("Nombre de combinaisons : " & nbr_cmb)
If nbr_cmb > 0 Then
For cnt_cmb = 1 To nbr_cmb
    Range("A" & cnt_cmb).Value = tab_cmb(cnt_cmb)
Next cnt_cmb
Range("A" & cnt_cmb).Value = "*FIN*"
End If

End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
bonjour yoda

dans mon exemple j'avais donné les combinaisons avec répétition
mais
si j'ai bien compris, Kamijee veut des arrangements avec répétition, mais en en ne gardant qu'un exemplaire de ceux qui sont invariants par permutation circulaire.
exemple pour m = 3 et p = 4, avec 1 , 1, 2 , 3 ça donnerait
1123 et on ne garde pas 3112, 2311, 1231
1213 et on ne garde pas 3121, 1312, 2131
etc ...
c'est un problème intéressant !
0