看了下网上的做法,感觉都不太看得懂或者是有些繁琐,于是想了下自己的方法:
有n个数,记其中最小的两个值为x1、x2。
step1.证在最优解中最小的这两个数一定互为兄弟:若否,将路径长度小的那一个与大的那个的兄弟交换,显然权值减小,与是最优解矛盾。
step2.证n=3时的情况最优解应为 组合最小的两个再与第三个组合:略。
step3.证已知n=k时的最优解,则n=k+1时的最优解应为 将最小的两个数替换为值为x1+x2的一个数,由此得到k个数时的最优解,再将替换的那个数所在结点延伸出两个叶子结点,值分别为x1和x2:由step1,最小的两个数一定互为兄弟结点,则最优解一定可以表示成按上述方法形成的解。设由上述k个数形成的解的权值为W,则此时最后得到的k+1个数的解权值为W+x1+x2(因为延伸出叶子结点后路径+1)。即当W有最小值时,为最优解,也就是上述方法形成的解。
step4.数学归纳法:也就是从n=3开始一直递推下去,就得到任意n个数的解,证毕。