天天看點

python算法:周遊組合的組合尋找最優值

目的

從一系列事物中選擇一種,對其進行處理、判斷,然後接着再次從那些剩下的事物中選一種,對其進行處理、判斷,處理時計算一個目标值,假設一些列事物有n個,則會進行n!次運算,共n!種組合,每種組合的盡頭計算最優值。

def findBest(argsOut):
    # 每次周遊一遍,外部傳參決定周遊事物内容多少
    for i in things:
        # 計算目标函數及其他操作
        deal
        # 計算目前組合下的下層的各種組合,使用得到的最優值
        findBest(argsNow)
        # 得到下層所有組合的最優值後處理計算
        deal
        # 根據結果更新最優值
        update
        # 傳回本層找到的最優組合的最優值
        return best