在网上法官上发布有关问题的问题,请不要误解我。我只想知道如何证明解决方案的正确性。以下是问题Wine trading problem。它说单位距离有连续房屋,每个房子要么出售或购买葡萄酒。总需求=总供应量。在交易中完成的工作是涉及距离的葡萄酒量。问题是在最低限度的工作中满足所有房屋的需求。建议的解决方案是第一个卖方(比如从行的右侧开始)卖给第一个买方(金额=最小(卖方,买方))(这是贪婪的选择),然后解决剩余的问题。如何正式证明这是正确的?
答案 0 :(得分:2)
不确定它是否像你想要的那样正式,但这是对证据的直觉。
为了简化,我会将供应商记录为' +'而其他人则是' - '。
WLOG,我将从左侧的供应商开始。所以你可以选择买家。
+ - -
假设你没有选择第一个。
+ - -
<==============>
然后你必须由另一个供应商喂养第一个,而你可以选择他的唯一原因是他更接近第一个买主。他可以在第一个买家的左边或右边。
LEFT
+ + - -
<==============>
<==>
嗯,距离与贪婪的解决方案完全相同。
+ + - -
<=========>
<=======>
RIGHT
+ - + -
<==============>
<=>
嗯,贪婪的解决方案会更好(因为它避免重叠)。
+ - + -
<=========>
<==>
换句话说,贪婪只在必要时重叠,如果没有,它会从重叠距离的2倍中受益。