Arrangement / Combinaison

Kamijee -  
ccm81 Messages postés 11033 Statut Membre -
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

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. 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
  2. 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
    1. Kamijee
       
      Un autre lien :

      Formule de Burnside-Frobenius et Indicateur d'Euler
      http://www.les-mathematiques.net/d/c/c/node4.php
      0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. ccm81 Messages postés 11033 Statut Membre 2 434
       
      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
    2. 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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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