Guest User

Untitled

a guest
Mar 1st, 2012
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.87 KB | None | 0 0
  1. def bruteForceAdvisor(subjects, maxWork):
  2.     """
  3.    Returns a dictionary mapping subject name to (value, work), which
  4.    represents the globally optimal selection of subjects using a brute force
  5.    algorithm.
  6.  
  7.    subjects: dictionary mapping subject name to (value, work)
  8.    maxWork: int >= 0
  9.    returns: dictionary mapping subject name to (value, work)
  10.    """
  11.     nameList = subjects.keys()
  12.     tupleList = subjects.values()
  13.     bestSubset, bestSubsetValue = \
  14.             bruteForceAdvisorHelper(tupleList, maxWork, 0, None, None, [], 0, 0)
  15.     outputSubjects = {}
  16.     print bestSubset
  17.     for i in bestSubset:
  18.         outputSubjects[nameList[i]] = tupleList[i]
  19.     return outputSubjects
  20.  
  21. def bruteForceAdvisorHelper(subjects, maxWork, i, bestSubset, bestSubsetValue,
  22.                             subset, subsetValue, subsetWork):
  23.     # Hit the end of the list.
  24.     print "program is called with:",i, bestSubset, bestSubsetValue,subset, subsetValue, subsetWork
  25.     if i >= len(subjects):
  26.         if bestSubset == None or subsetValue > bestSubsetValue:
  27.             # Found a new best.
  28.             return subset[:], subsetValue
  29.         else:
  30.             # Keep the current best.
  31.             return bestSubset, bestSubsetValue
  32.     else:
  33.         s = subjects[i]
  34.         # Try including subjects[i] in the current working subset.
  35.         if subsetWork + s[WORK] <= maxWork:
  36.             subset.append(i)
  37.             bestSubset, bestSubsetValue = bruteForceAdvisorHelper(subjects,
  38.                     maxWork, i+1, bestSubset, bestSubsetValue, subset,
  39.                     subsetValue + s[VALUE], subsetWork + s[WORK])
  40.             subset.pop()
  41.         bestSubset, bestSubsetValue = bruteForceAdvisorHelper(subjects,
  42.                 maxWork, i+1, bestSubset, bestSubsetValue, subset,
  43.                 subsetValue, subsetWork)
  44.         return bestSubset, bestSubsetValue
Advertisement
Add Comment
Please, Sign In to add comment