假设有三个人为旅行费用做出了贡献:Adam支付了150美元的酒店费用,Bob支付了60美元的费用,而Charlie提供的食品费用为120美元。旅行结束后,他们想要平衡费用。
简单的解决方案是每个费用在三个人之间分配,并由其他参与者单独支付给购买商品的人。
当然,如果亚当欠鲍勃20美元,鲍勃欠亚当50美元,这相当于鲍勃欠亚当30美元。继续这个逻辑,鲍勃欠亚当30美元和查理20美元,查理欠亚当10美元。
以下是捕获:此解决方案不是最佳。交易数量可以减少。从鲍勃到查理然后从查理到亚当首先支付10美元。相反,鲍勃可以将10美元加到他已经向亚当支付的金额上。
最后,鲍勃向查理支付10美元,向亚当支付40美元。现在每个人都已支付相同数额的110美元。
我的问题是:
当目标是找到费用与绝对最小交易量平衡的方式时, n 演员的这个问题的一般解决方案是什么?由于欠款最多,遍历路径可能会变得非常昂贵,因此它并非无足轻重。
NP完全问题可以解决这个问题吗?
这个问题是否有一个众所周知的名称?
答案 0 :(得分:1)
说c
人支付的费用超过了他们的份额(债权人),而d
人的支付额低于他们的份额(债务人)。根据您的定义,如果解决方案意味着最小数量的交易,则解决方案是最优的,理想情况是每个债务人只需要进行一次转移(他们显然必须至少生成一次)。那么问题是,欠债权人1的欠款X1
可以通过欠款的确切金额获得吗? X2
可以通过剩余金额的确切总和获得吗?等等Xc
。在这个意义上,问题与子集和问题有关,如n.m所述(有点简洁)。
答案 1 :(得分:0)
是的,它是subset sum problem。