Étant donné que j'ai m ensembles distincts non vides (étiquetés Z [1], Z [2], ..., Z [m]), je vise pour calculer la somme de tous les sous-ensembles possibles où il y a exactement un élément de chaque ensemble. La taille de chaque sous-ensemble est définie comme étant le produit de ses membres. Par exemple:Somme du produit sur toutes les combinaisons avec un élément de chaque groupe
Z[ 1 ] = {1,2,3}
Z[ 2 ] = {4,5}
Z[ 3 ] = {7,8}
devrait se traduire par:
1*4*7 + 1*4*8 + 1*5*7 + 1*5*8 + 2*4*7 + 2*4*8 + 2*5*7 + 2*5*8 + 3*4*7 + 3*4*8 + 3*5*7 + 3*5*8 = 810
Bien que ce soit facile à coder (dans toutes les langues), est-ce retraitement du fameux subset sum problem? Sinon, veuillez fournir un algorithme de temps polynomial qui calcule cette somme (pseudo-code ou python préféré!). S'il n'existe pas d'algorithme de temps polynomial, veuillez expliquer pourquoi.
Ce sont des devoirs, n'est-ce pas? –
polynôme en termes de m? Ou le nombre total d'éléments dans tous les Z? – recursive
@ Ipthnc - Ce n'est pas une question de devoirs mais un vrai problème de physique que j'ai rencontré. Supposons que vous avez de nombreux systèmes fermés non identiques (Z1, Z2, ...) tous couplés au même réservoir (à T fixe). Maintenant observez chaque système une seule fois, avec ces observations quel est le T le plus probable du réservoir? Je l'ai reformulé comme une question de calcul dans l'espoir que les majors CS ont plus de perspicacité que moi. – Hooked