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

Mathématiques Discussion :

Algorithme de répartition


Sujet :

Mathématiques

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Algorithme de répartition
    Bonjour,

    je voudrais trouver un algorithme de répartition qui prendrait 2 paramètres en entrée :

    - le nombre d'objets à répartir
    - le nombre de "personnes" (par exemple) entre lesquelles répartir ces objets.

    Cette algorithme renverrait en sortie un tableau à 2 dimensions avec toutes les répartitions possibles.

    Exemple
    Répartir 2 objets parmi 3 personnes (a,b,c) donnerait :

    a b c
    2 0 0
    1 1 0
    1 0 1
    0 2 0
    0 1 1
    0 0 2


    Merci de votre aide,

  2. #2
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 37
    Points : 46
    Points
    46
    Par défaut
    Soit np le nbr de personnes et no le nbr d'objet

    Tu commences pas initialiser un tableau r =( no, 0, ... , 0) de taille np.
    et i = 1

    tant que r[np]<no faire

    à toi de chercher un peu ce qu'il faut mettre ici, qques pistes :
    r[i] = r[i] -1
    r[i+1] = no - r[1] - ... - r[i]
    i=i+1
    (il manque des tests, il va falloir à un moment decrementer i...)
    A la fin de chaque itération tu as une nouvelle repartition.

    fin tant que

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci Vincent.

    Quelqu'un aurait-il une autre piste ? ou un lien vers un site intéressant ?

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    void recurse(int[] tab, int index, int value) {
    	if (index==tab.length-1) {
    		tab[index]=value;
    		System.out.println(Arrays.toString(tab));
    		return;
    	}
     
    	for(int v=0;v<=value;v++) {
    		tab[index]=v;
    		recurse(tab, index+1, value-v);
    	}
    }
     
    int NbObjet=2, NbPerson=3;
    recurse(new int[NbPerson], 0, NbObjet);
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup pseudocode.

    Je sais pas si tu avais cet algo dans tes cartons ou si tu l'as pondu comme ça, mais chapeau en tout cas !

    Je vais me servir de ce bout de code et essayer d'en faire une fonction qui renvoie un tableau à 2 dimensions, en C.

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par reveur3 Voir le message
    Merci beaucoup pseudocode.

    Je sais pas si tu avais cet algo dans tes cartons ou si tu l'as pondu comme ça, mais chapeau en tout cas !

    Je vais me servir de ce bout de code et essayer d'en faire une fonction qui renvoie un tableau à 2 dimensions, en C.
    J'ai juste écrit en récursif une imbrication de boucle for().

    Pour 4 personnes (a,b,c,d) et 2 objets, l'imbrication serait:
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(int a=0;a<=2;a++) {
    	for(int b=0;b<=2-a;b++) {
    		for(int c=0;c<=2-a-b;c++) {
    			int d=2-a-b-c;
    			System.out.println(a+","+b+","+c+","+d);
    		}
    	}
    }
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Par curiosité, tu travailles dans quoi ?
    Je suis étudiant à Montpellier.

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par reveur3 Voir le message
    Par curiosité, tu travailles dans quoi ?
    Je suis étudiant à Montpellier.
    dans un bureau.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  9. #9
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 37
    Points : 46
    Points
    46
    Par défaut
    mon algo proposé permettait de le faire en itératif... j'aime pas trop le récursif
    Mais bon c'est sur fallait un peu se creuser le tête pour le comprendre et le finaliser...

  10. #10
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par vincent69 Voir le message
    mon algo proposé permettait de le faire en itératif... j'aime pas trop le récursif
    Mais bon c'est sur fallait un peu se creuser le tête pour le comprendre et le finaliser...
    Merci pour ta remarque.

    Je veux pas être méchant mais de quel algo tu parles ?

    Si tu réfléchissais un peu, tu verrais qu'un algo itératif fixe le nombre de personne, alors que j'ai besoin qu'il soit variable.

  11. #11
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 37
    Points : 46
    Points
    46
    Par défaut
    ça peut être itératif sans pour autant fixer le nombre de personne... me semble pas avoir fixer np...

    Citation Envoyé par reveur3 Voir le message
    Si tu réfléchissais un peu, tu verrais qu'un algo itératif fixe le nombre de personne, alors que j'ai besoin qu'il soit variable.
    Avant de donner ce genre de conseil, commences par l'appliquer !

  12. #12
    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
    Ca peut se faire facilement avec des contraintes en Prolog :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    :- use_module(library(clpfd)).
     
    repartition(Np, No) :-
    	length(L, Np),
    	L ins 0..No,
    	sum(L, #=, No),
    	label(L),
    	writeln(L),
    	fail.
    Le résultat :
    2 ?- repartition(3, 2).
    [0, 0, 2]
    [0, 1, 1]
    [0, 2, 0]
    [1, 0, 1]
    [1, 1, 0]
    [2, 0, 0]
    false.
    "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

  13. #13
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse Trap D

    Je ne comprends pas une ligne à la solution que tu proposes, mais au moins tu as la mérite de m'avoir appris l'existence de prolog. Malheureusement, je n'ai pas le choix du langage de programmation à utiliser, le C m'est imposé.

  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
    Citation Envoyé par reveur3 Voir le message
    mais au moins tu as la mérite de m'avoir appris l'existence de prolog.
    quoi !!!!
    "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
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Trap D Voir le message
    quoi !!!!
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. Répartition de tâches. Quel algorithme ?
    Par haskouse dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 11/01/2012, 15h02
  2. Un algorithme de répartition
    Par Auwx0 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 08/01/2012, 16h10
  3. Algorithme de répartition
    Par molini_a dans le forum Mathématiques
    Réponses: 3
    Dernier message: 18/06/2009, 22h30
  4. Algorithme de randomisation ... ( Hasard ...? )
    Par Anonymous dans le forum Assembleur
    Réponses: 8
    Dernier message: 06/09/2002, 14h25
  5. Algorithme génétique
    Par Stephane.P_(dis Postef) dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 15/03/2002, 17h14

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