用python语言实现“最小代价生成树”问题的分支限界算法

求Python的各位帮忙看看,用python语言实现“最小代价生成树”问题的分支限界算法


def mctFromLeafValues( arr):
    res = 0
    while len(arr) > 1:
        min_val = min(arr)
        idx = arr.index(min_val)
        if idx > 0 and idx < len(arr) - 1: #有左有右
            left_val, right_val = arr[idx - 1], arr[idx + 1]
        elif idx == len(arr) - 1: #有左没右
            left_val, right_val = arr[idx - 1], 16 #为什么是16?因为最大只有15
        elif idx == 0: #有右没左
            left_val, right_val = 16, arr[idx + 1]
            
        res += min(min_val * left_val, min_val * right_val)
        arr.remove(min_val) #把当前最小值删掉,已经用完了
    return res
arr = [5,1,4]
print(mctFromLeafValues(arr))

参考
https://blog.csdn.net/qq_47150350/article/details/121024975

mark