Dénombrer

Bonjour, sos pour ce dénombrement. Merci de votre aide.

Soient p nombres entiers: (x_1,x_2,...,x_p), déterminer card(1*x_1+2*x_2+3*x_3+...+p*x_p = p)

Encore merci de votre aide.
S_U

Réponses

  • Telle quelle, la question posée n'a pas de sens. Si on commence une phrase par "soit $(x_1, \dots, x_p)$ des entiers", ceux-ci sont fixés, et je ne vois pas ce que peut désigner "$\text{card}(x_1 + 2x_2 + \dots + px_p=p)$".
  • Est-ce que le vrai énoncé serait :
    Déterminer le cardinal de l'ensemble des $(x_1,\ldots,x_p)\in \mathbb N^p$ tels que $\sum_{i=1}^p ix_i=p$ ?

    PS. Si l'énoncé est bien celui-ci, je ne vois pas la pertinence de la référence aux partitions d'un entier.
  • @GMZM: effectivement, je n'avais pas compris la question comme ça.
  • re bonjour je n'ai pas été clair; derterminer le cardinal de, sachant qu e les x_i sont des entiers naturels merci
  • C'est la question telle que je l'ai formulée ?
    J'ai effacé une indication qui était erronée. Et finalement, la référence aux partitions d'un entier faite par alea est bien pertinente !!
  • Salut.

    Est ce que tu peux calculer le cardinal de l'ensemble des $(x_1, x_2,\cdots, x_{p-1})\in \mathbb{N^{p-1}}$ tels que $\sum_{i=1}^{p-1}ix_i = p$ ?
  • Aussi bien que l'on sait calculer le nombre de partitions d'un entier.
  • Effectivement :
    https://oeis.org/A000041

    Et un peu de Python :
    def liste(p):
        """Renvoie une liste des solutions {1: x1, ... , p: xp} telles que
        1*x1 + ... + p*xp = p avec (x1, ... , xp) entiers naturels"""
        
        toutes_les_solutions = []
        
        def trouve_solution(indice_a_remplir, liste_actuelle):
            """Trouve une solution à partir d'une solution partielle en explorant
            toutes les possibilités pour xi lorsque x(i+1), ..., xp sont fixés"""
            
            reste = p - sum(i*a for i,a in liste_actuelle.items())
            
            if indice_a_remplir == 1:
                liste_actuelle[1] = reste
                toutes_les_solutions.append(liste_actuelle)
            else:
                for var in range(0, reste // indice_a_remplir + 1):
                    nouvelle_liste = dict(liste_actuelle)
                    nouvelle_liste[indice_a_remplir] = var
                    trouve_solution(indice_a_remplir-1, nouvelle_liste)
        
        trouve_solution(p, {})
        
        return toutes_les_solutions
    
  • bonjour

    merci de votre travail, je suis débutant en python, je vais appliquer votre programme merci bonne journée S_U
  • merci à tous bonne journée
  • Le récent sujet HEC ECE 2018 aborde justement partiellement cette question et fournit une récurrence double susceptible d'avoir un calcul pas trop interminable : HEC ECE 2018
  • merci pour cet envoi , je vais regarder ce pb

    bonne soirée
Connectez-vous ou Inscrivez-vous pour répondre.