天天看点

python算法:遍历组合的组合寻找最优值

目的

从一系列事物中选择一种,对其进行处理、判断,然后接着再次从那些剩下的事物中选一种,对其进行处理、判断,处理时计算一个目标值,假设一些列事物有n个,则会进行n!次运算,共n!种组合,每种组合的尽头计算最优值。

def findBest(argsOut):
    # 每次遍历一遍,外部传参决定遍历事物内容多少
    for i in things:
        # 计算目标函数及其他操作
        deal
        # 计算当前组合下的下层的各种组合,使用得到的最优值
        findBest(argsNow)
        # 得到下层所有组合的最优值后处理计算
        deal
        # 根据结果更新最优值
        update
        # 返回本层找到的最优组合的最优值
        return best