docs: def getCandScoresMapBruteForce(self, profile):
          """
          Returns a dictonary that associates the integer representation of each candidate with the 
          bayesian losses that we calculate using brute force.
  
          :ivar Profile profile: A Profile object that represents an election profile.
          """
  
          wmg = profile.getWmg(True)
          m = len(wmg.keys())
          cands = range(m)
          V = self.createBinaryRelation(m)
          gains = dict()
          for cand in wmg.keys():
              gains[cand] = 0
          graphs = itertools.product(range(2), repeat=m*(m-1)/2)
          for comb in graphs:
              prob = 1
              i = 0
              for a, b in itertools.combinations(cands,2):
                  V[a][b] = comb[i]
                  V[b][a] = 1-comb[i]
                  if comb[i] > 0:
                      prob *= 1/(1+self.phi ** float(wmg[a+1][b+1]))
                  else:
                      prob *= 1/(1+self.phi ** float(wmg[b+1][a+1]))
                  i += 1
                  if i >= m*(m-1)/2:
                      break
              for cand in wmg.keys():
                  gains[cand] += self.utilityFunction.getUtility([cand], V)*prob
          return gains