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 :

Problème de dénombrement


Sujet :

Mathématiques

  1. #1
    Membre habitué Avatar de nicolas66
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 326
    Points : 146
    Points
    146
    Par défaut Problème de dénombrement
    Bonjour,

    Je suis actuellement sur un projet où j'ai un petit problème : j'ai un tableau de données qui ressemble à cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    array(
              0 => array('article', 'pronom'),
              1 => array('nom'),
              2 => array('verbe'),
              3 => array('article', 'pronom'),
              4 => array('nom')
    )
    Comment puis-je faire pour dénombrer toutes les possibilités de ce tableau, c'est-à-dire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    article nom verbe article nom
    article nom verbe pronom nom
    pronom nom verbe article nom
    pronom nom verbe pronom nom
    Merci d'avance .
    Athlon 6000+ Dual Core & GeForce 8600 GT -- Ubuntu Gutsy

  2. #2
    Membre confirmé
    Profil pro
    Directeur Scientifique
    Inscrit en
    Avril 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur Scientifique

    Informations forums :
    Inscription : Avril 2005
    Messages : 419
    Points : 554
    Points
    554
    Par défaut
    Tu fais le produit de la taille des sous-tableaux.
    2x1x1x2x1 dans ton cas

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Une solution pour le problème de dénombrement
    Le problème énoncé n'est rien d'autre que de trouver le nombre de possibilités que nous avons d'écrire la suite de mots [1 2 verbe 3 4] où (1 2) et(3 4) appartiennent à l'ensemble{nom,prénom,article}.Tu as donc 36 possibilités au total(6 possibilités de choisir 2 des 3mots de l'ensemble en tenant compte de l'ordre des mots avant et après le mot "verbe" qui est fixé).Soit 6 possibilités avant et 6 possibilités après.le "et" se traduisant par "le symbole de multiplication" en dénombrement, tu as le résultat qui fait (6 *6) =36 possibilités.

  4. #4
    Membre habitué Avatar de nicolas66
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 326
    Points : 146
    Points
    146
    Par défaut
    Existe-t-il un algorithme simple à écrire pour réaliser ca ?
    Athlon 6000+ Dual Core & GeForce 8600 GT -- Ubuntu Gutsy

  5. #5
    Membre confirmé
    Profil pro
    Directeur Scientifique
    Inscrit en
    Avril 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur Scientifique

    Informations forums :
    Inscription : Avril 2005
    Messages : 419
    Points : 554
    Points
    554
    Par défaut
    Je continue sur mon idée (l'interprétation de ta question par Mangeur de Dieu ne me semble pas correspondre exactement). Cela donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    result=1;
    foreach(subarray in yourarray) do 
      result = result * subarray.size;
    return result;

  6. #6
    Membre habitué Avatar de nicolas66
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 326
    Points : 146
    Points
    146
    Par défaut
    En fait par dénombrement, j'entendais obtenir l'ensemble des solutions comme je l'ai fait dans mon exemple au début.
    Athlon 6000+ Dual Core & GeForce 8600 GT -- Ubuntu Gutsy

  7. #7
    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
    On dirait l'algo d'un pipotron.

    Si ton tableau n'est pas trop gros, la recursion semble une solution possible.

    (exemple en Java, j'ai pas de PHP sous la main)
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    public static void enumerate(String[][] array, int subindex, String output) {
     
    	// fin de recursion: on est a la fin de la table principale
    	if (subindex>=array.length) {
    		System.out.println(output); // affiche le résultat
    		return;
    	}
     
    	// recursion: on continue la construction
    	for(String s : array[subindex]) {
    		String newOutput = output+s+" ";
    		enumerate(array,subindex+1,newOutput);
    	}
    }
     
    public static void main(String[] args) {
     
    	String[][] array = new String[][] {
    		new String[] {"article1", "pronom1"},
    		new String[] {"nom"},
    		new String[] {"verbe"},
    		new String[] {"article2", "pronom2"},
    		new String[] {"nom"}
    	};
     
    	// construction des solutions
    	enumerate(array,0,"");
    }
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    On dirait l'algo d'un pipotron.
    vous m'epatate, tres cher....
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  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
    En Prolog, ça donne ça :
    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
    une_combi(A1, A2, A3, A4, A5, [L1, L2, L3, L4, L5]) :-
    	member(L1, A1),
    	member(L2, A2),
    	member(L3, A3),
    	member(L4, A4),
    	member(L5, A5).
     
    test :-
    	A1 = [article, pronom],
    	A2 = [nom],
    	A3 = [verbe],
    	A4 = [article, pronom],
    	A5 = [nom],
    	bagof(L, une_combi(A1, A2, A3, A4, A5, L), LL),
    	maplist(writeln, LL).
    Sortie :
    [article, nom, verbe, article, nom]
    [article, nom, verbe, pronom, nom]
    [pronom, nom, verbe, article, nom]
    [pronom, nom, verbe, pronom, nom]
    Evidemment, si les listes sont trop grosses, ça risque de planter Prolog.
    "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

Discussions similaires

  1. [2003] Problème de dénombrement de valeurs différentes
    Par mandela9857 dans le forum Microsoft Office
    Réponses: 2
    Dernier message: 02/02/2015, 13h59
  2. [XL-2002] Somme avec conditions ou problème de dénombrement
    Par Xorbane dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/05/2012, 23h51
  3. Problème de dénombrement dans un StringGrid
    Par Nyio- dans le forum Composants VCL
    Réponses: 2
    Dernier message: 25/05/2010, 16h19
  4. [TP] Problème de dénombrement
    Par gadalla dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 05/05/2007, 00h53
  5. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 15h18

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