“买卖问题”是经典的优化问题。可以用以下方式描述:
有$ n $个城市。对于每个城市,都会给出该城市产品的价格(正数)。现在,一个人将一个一个地从城市1移到城市$ n $。到达某个城市时,他可以在该城市以该价格购买一种产品,或者如果他现在至少拥有一种产品,则可以出售一种产品。他也无能为力,然后去了下一个城市。问题在于如何制定策略以使他能够赚到最大的钱。
这个问题有一个正确的贪心算法。到达城市$ i $时,请考虑$ 1 ... i-1 $中的所有$ j $,并找到价格最低的$ j $,以便他不在城市$ j $中购买产品(他本可以出售市$ j $中的产品)。然后,他在城市$ j $购买产品,然后在城市$ i $出售产品。该算法以升序运行所有$ i $,最后给出最佳策略。
解决方案非常周到,但是如何证明其正确性呢?