IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Combinaison des variables contenues dans des clusters


Sujet :

Algorithmes et structures de données

  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 200
    Points : 75
    Points
    75
    Par défaut Combinaison des variables contenues dans des clusters
    Bonjour les calé,
    J’espère que tout marche bien comme vous.
    De mon côté pas trop, c’est pour cela que je suis là.
    J’ai une petite idée que je veux formuler en un algorithme, mais je me dis que peut être ça existe un truck déjà défini.

    Alors supposons que j’ai K clusters, dans chaque cluster il y a un nombre différent de variables !
    Je veux avoir toute les combinaison possible en prenant à chaque fois une et une seule variable de chaque cluster !

    Par exemple :
    Cluster1=(1,2,3)
    Cluster2=(4,5)
    Cluster3=(6)
    Mes combinaisons seront :
    C1=(1,4,6)
    C2=(1,5,6)
    C3=(2,4,6)
    C4=(2,5,6)
    C5=(3,4,6)
    C6=(3,5,6)
    J’espère n’avoir oublier aucune.
    Alors est ce qu’un tel algorithme existe déjà ?
    Je vous remercie d’avance.

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 051
    Points : 9 386
    Points
    9 386
    Par défaut
    Parcours d'arbre non binaire ?

    Bon, je sais, en disant ça, je parle chinois. Voici un lien qui en dit un peu plus : https://rperrot.developpez.com/artic...ctures/arbres/
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 200
    Points : 75
    Points
    75
    Par défaut
    Pourquoi du chinois? je sais parfaitement ce que c'est!
    En tous cas, ce n'est pas ça. Merci pour ta réponse

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 051
    Points : 9 386
    Points
    9 386
    Par défaut
    Ce n'est pas ça ? Pourtant tes données peuvent être représentées sous forme d'arbre, et le recensement de toutes les solutions, c'est la recherche de toutes les feuilles de l'arbre.

    Sinon, pour avancer dans ton sens, Comment envisages-tu de stocker les données initiales ?
    Dans ton premier message, tu disais cluster1=.... cluster2=... ce n'est pas exploitable, On va donc dire
    cluster[1,1] = 1 ; cluster[1,3] = 2 ; cluster[1,3] = 3 ;
    cluster[2,1] = 4 ; cluster[2,2] = 5 ;
    cluster[3,1] = 6 ;
    et
    nb_clusters = 3
    taille_cluster[1] = 3
    taille_cluster[2] = 2
    taille_cluster[3] = 1

    Ok ?
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Bonjour

    Ce que tu veux faire s'appelle un produit cartésien.
    Tout simplement.
    En clair: une multiplication.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Pour chaque élément du premier ensemble :
       Pour chaque élément du deuxième ensemble :
           Pour chaque élément du troisième ensemble :
                ...
                      Pour chaque élément du Kième ensemble :
                            Constuire un n-uplet.
    Le code est déjà quasiment écrit.


    Si tu ne veux pas faire de boucles imbriquées, il te faut garder les compteurs des dites boucles dans un while unique, et faire comme si elles l'étaient.
    Plus long. Mais possible.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  6. #6
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 200
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    Ce n'est pas ça ? Pourtant tes données peuvent être représentées sous forme d'arbre, et le recensement de toutes les solutions, c'est la recherche de toutes les feuilles de l'arbre.

    Sinon, pour avancer dans ton sens, Comment envisages-tu de stocker les données initiales ?
    Dans ton premier message, tu disais cluster1=.... cluster2=... ce n'est pas exploitable, On va donc dire
    cluster[1,1] = 1 ; cluster[1,3] = 2 ; cluster[1,3] = 3 ;
    cluster[2,1] = 4 ; cluster[2,2] = 5 ;
    cluster[3,1] = 6 ;
    et
    nb_clusters = 3
    taille_cluster[1] = 3
    taille_cluster[2] = 2
    taille_cluster[3] = 1
    s
    Ok ?
    Ok, Ok monsieur! je n'ai pas vu les choses ainsi, mais je valide J'allais stocker les variables de mes cluster dans des vecteurs différents et c'est tout.
    Je m'excuse pour la saturation de ma tête

    Citation Envoyé par Flodelarab Voir le message
    Bonjour

    Ce que tu veux faire s'appelle un produit cartésien.
    Tout simplement.
    En clair: une multiplication.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Pour chaque élément du premier ensemble :
       Pour chaque élément du deuxième ensemble :
           Pour chaque élément du troisième ensemble :
                ...
                      Pour chaque élément du Kième ensemble :
                            Constuire un n-uplet.
    Le code est déjà quasiment écrit.


    Si tu ne veux pas faire de boucles imbriquées, il te faut garder les compteurs des dites boucles dans un while unique, et faire comme si elles l'étaient.
    Plus long. Mais possible.
    Je n'ai aucun problème de faire des boucles imbriquée. Je vais essayer le produit cartésiens et je reviendrai vers toi en cas de besoin

    Ohhh Ohh dans ce cas je ne sais pas comment imbriquer mes boucles! vu que le nombre de boucle (ou de cluster) va être comme un paramétré! je ne connais donc pas le nombre exacte de boucle!! que faire??

  7. #7
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 051
    Points : 9 386
    Points
    9 386
    Par défaut
    Avec les notations précédentes, je pense qu'une procédure récursive comme celle-ci devrait être bonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    fonction traite ( cluster, i1, i2, sch )
    pour i = 1 a taille_cluster(i1)
      si i1 < i2 alors 
          call traite ( cluster, i1+1, i2, sch + "," + cluster[i1,i]
      sinon
          print ( sch)
      fin
    fin
    Et tu appelles cette fonction avec : call traite ( cluster, 1, nb_clusters , "")Je n'ai pas testé, il y a peut-être des bricoles à corriger.

    La difficulté est effectivement que le nombre de niveaux est inconnu, mais avec cette procédure, ce n'est pas un problème.
    Si tu as 500 ou 1000 niveaux, ça peut être un problème, et il faut envisager quelque chose de plus compliqué.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  8. #8
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    je ne connais donc pas le nombre exacte de boucle!!
    Bien sûr que oui tu connais : c'est K !
    Tu fais donc un tableau de K compteurs, tous mis à zéro. (probablement avec un autre tableau pour les maximum de chaque compteur.)

    1. Tu fabriques un K-uplet.
    2. Le compteur courant est le dernier.
    3. Pour passer au cas suivant, tu incrémentes le compteur courant.
    4. Si tu as passé le maximum, tu remets ce compteur à zéro et le compteur courant devient le précédent.
    5. ----S'il n'y a pas de compteur précédent. Tu as fais tous les cas possibles. (indice de compteur -1 si cet indice désigne réellement un compteur entre 0 et K-1) FIN !
    6. ----Sinon tu retournes à l'étape 3.
    7. Sinon tu retournes à l'étape 1.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  9. #9
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    C'est la que l'on voit la puissance de Prolog :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    toutes_les_combinaisons(In, Out) :-
        setof(Comb, maplist(member, Comb, In), Out).
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    ?- toutes_les_combinaisons( [[1,2,3], [4,5], [6,7,8,9]], Out), maplist(writeln, Out).
    [1,4,6]
    [1,4,7]
    [1,4,8]
    [1,4,9]
    [1,5,6]
    [1,5,7]
    [1,5,8]
    [1,5,9]
    [2,4,6]
    [2,4,7]
    [2,4,8]
    [2,4,9]
    [2,5,6]
    [2,5,7]
    [2,5,8]
    [2,5,9]
    [3,4,6]
    [3,4,7]
    [3,4,8]
    [3,4,9]
    [3,5,6]
    [3,5,7]
    [3,5,8]
    [3,5,9]
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  10. #10
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut


    Oui mais ça, ce n'est pas une réponse algorithmique. C'est une réponse de langage.

    En python : (console interactive)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> [[x,y,z] for x in [1,2,3] for y in [4,5] for z in [6,7,8,9]]
    [[1, 4, 6], [1, 4, 7], [1, 4, 8], [1, 4, 9], [1, 5, 6], [1, 5, 7], [1, 5, 8], [1, 5, 9], [2, 4, 6], [2, 4, 7], [2, 4, 8], [2, 4, 9], [2, 5, 6], [2, 5, 7], [2, 5, 8], [2, 5, 9], [3, 4, 6], [3, 4, 7], [3, 4, 8], [3, 4, 9], [3, 5, 6], [3, 5, 7], [3, 5, 8], [3, 5, 9]]
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  11. #11
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Oui, mais j'aurai préféré que tu écrives un code pour n'importe quelle configuration des clusters, ç'aurait été plus convaincant (je ne doute évidemment pas que tu puisses le faire )
    Pour l'algo tu l'as déjà expliqué !
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  12. #12
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 200
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par Flodelarab Voir le message


    Oui mais ça, ce n'est pas une réponse algorithmique. C'est une réponse de langage.

    En python : (console interactive)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> [[x,y,z] for x in [1,2,3] for y in [4,5] for z in [6,7,8,9]]
    [[1, 4, 6], [1, 4, 7], [1, 4, 8], [1, 4, 9], [1, 5, 6], [1, 5, 7], [1, 5, 8], [1, 5, 9], [2, 4, 6], [2, 4, 7], [2, 4, 8], [2, 4, 9], [2, 5, 6], [2, 5, 7], [2, 5, 8], [2, 5, 9], [3, 4, 6], [3, 4, 7], [3, 4, 8], [3, 4, 9], [3, 5, 6], [3, 5, 7], [3, 5, 8], [3, 5, 9]]
    Je ne sais tjs pas comment gerer mes K clusters

  13. #13
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 200
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par Trap D Voir le message
    C'est la que l'on voit la puissance de Prolog :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    toutes_les_combinaisons(In, Out) :-
        setof(Comb, maplist(member, Comb, In), Out).
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    ?- toutes_les_combinaisons( [[1,2,3], [4,5], [6,7,8,9]], Out), maplist(writeln, Out).
    [1,4,6]
    [1,4,7]
    [1,4,8]
    [1,4,9]
    [1,5,6]
    [1,5,7]
    [1,5,8]
    [1,5,9]
    [2,4,6]
    [2,4,7]
    [2,4,8]
    [2,4,9]
    [2,5,6]
    [2,5,7]
    [2,5,8]
    [2,5,9]
    [3,4,6]
    [3,4,7]
    [3,4,8]
    [3,4,9]
    [3,5,6]
    [3,5,7]
    [3,5,8]
    [3,5,9]
    Interessante comme fonction!

    Existe t-elle sous Matlab?

  14. #14
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Désolé, je n'en sais absolument rien
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  15. #15
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Existe t-elle sous Matlab?
    De nombreuses personnes sur ce site te répondraient :
    RTFM ! (Read The Fucking Manual !)

    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  16. #16
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 200
    Points : 75
    Points
    75
    Par défaut gratitude
    Citation Envoyé par Flodelarab Voir le message
    De nombreuses personnes sur ce site te répondraient :
    RTFM ! (Read The Fucking Manual !)

    mercii bcp bcp, pour ta compréhension et ta compassion

    je l'ai testé et ça marche vachement bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 11/05/2014, 15h19
  2. [Flex4] Charger des variables contenues dans un fichier en 1er
    Par nma dans le forum Flex
    Réponses: 3
    Dernier message: 09/04/2011, 09h09
  3. utiliser des variables contenues dans des boucles While
    Par Fbertran-pro dans le forum LabVIEW
    Réponses: 1
    Dernier message: 18/02/2011, 00h32
  4. Réponses: 8
    Dernier message: 16/01/2008, 17h49
  5. Réponses: 7
    Dernier message: 03/11/2007, 19h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo