Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def bruteForceAdvisor(subjects, maxWork):
- """
- Returns a dictionary mapping subject name to (value, work), which
- represents the globally optimal selection of subjects using a brute force
- algorithm.
- subjects: dictionary mapping subject name to (value, work)
- maxWork: int >= 0
- returns: dictionary mapping subject name to (value, work)
- """
- nameList = subjects.keys()
- tupleList = subjects.values()
- bestSubset, bestSubsetValue = \
- bruteForceAdvisorHelper(tupleList, maxWork, 0, None, None, [], 0, 0)
- outputSubjects = {}
- print bestSubset
- for i in bestSubset:
- outputSubjects[nameList[i]] = tupleList[i]
- return outputSubjects
- def bruteForceAdvisorHelper(subjects, maxWork, i, bestSubset, bestSubsetValue,
- subset, subsetValue, subsetWork):
- # Hit the end of the list.
- print "program is called with:",i, bestSubset, bestSubsetValue,subset, subsetValue, subsetWork
- if i >= len(subjects):
- if bestSubset == None or subsetValue > bestSubsetValue:
- # Found a new best.
- return subset[:], subsetValue
- else:
- # Keep the current best.
- return bestSubset, bestSubsetValue
- else:
- s = subjects[i]
- # Try including subjects[i] in the current working subset.
- if subsetWork + s[WORK] <= maxWork:
- subset.append(i)
- bestSubset, bestSubsetValue = bruteForceAdvisorHelper(subjects,
- maxWork, i+1, bestSubset, bestSubsetValue, subset,
- subsetValue + s[VALUE], subsetWork + s[WORK])
- subset.pop()
- bestSubset, bestSubsetValue = bruteForceAdvisorHelper(subjects,
- maxWork, i+1, bestSubset, bestSubsetValue, subset,
- subsetValue, subsetWork)
- return bestSubset, bestSubsetValue
Advertisement
Add Comment
Please, Sign In to add comment