债务简化是怎么回事:为什么你们群里要付的笔数比想象中少
债务简化如何把一团互相欠款变成每人一个净余额,为什么五个朋友三笔转账就能结清,以及为什么你可能要还钱给一个从没替你垫过钱的人。
周末出游回来,你打开群组,点了结算,应用却告诉你要付给安琪 1,500 元。你从没跟安琪买过任何东西。油费是你付的,买菜是阿斌付的,可不知怎么,建议就变成了一笔转账,付给订民宿的那个人。感觉就像应用背着你把债务重新排了一遍。
某种意义上它确实这么做了,而一旦你看明白它是怎么做的,以后就再也不会为此争论了:简化债务改变的是谁付钱给谁,而不是最后每个人多出或少出多少。
描述同一个周末的两种方式
一趟旅行之后,群里谁欠谁多少,有两种都说得通的记法。
第一种是两两之间的欠款:每一笔支出,都会从每个分摊的人到付钱的人之间生成一笔小小的债务。五个朋友住在安琪付钱的民宿里,另外四个人就各欠安琪五分之一;阿斌去买了菜,安琪和另外三个人就各欠阿斌五分之一。十几笔支出下来,群里纵横交错几十个箭头,其中很多还是同一对人之间方向相反的两个箭头——手工记清谁欠我钱最后总会变成这样。
第二种是净余额:每人一个数——他替群组付了多少,减去他在群组全部花费里应出的那一份。正数表示群组欠他;负数表示他欠群组。
两种记法包含的信息完全相同。两两记法记住的是过程;净余额记住的是结果。而结账,要的就是结果。
唯一重要的数:你的净余额
你的净余额是唯一决定有多少钱从你口袋出去或回到你口袋的数字。它不关心你欠谁、谁欠你,只看总数。如果你欠安琪 1,200 元,安琪欠你 400 元,没人会指望付两次;你付安琪 800 元,事情就了了。债务简化就是把这个直觉一次性用在整个群组上,而不是一对一对地算。也正因为如此,一张分摊开支的表格每人只需要付了和应出两列:净余额就是两者之差。
为什么净余额加起来永远是零
任何人付的每一块钱,都是某个人应出的一份。安琪付的 6,000 元民宿,就是五个人每人 1,200 元的份额,安琪自己也算在内。把每个人付的钱加起来,得到群组总花费;把每个人应出的份额加起来,得到同一个数。所以正负净余额合在一起,总和永远恰好是零——多出的人应收的,恰好等于少出的人应付的。结清群组所需的钱,本来就在群组内部。
从净余额到转账
净余额把群组分成债权人(正数,别人欠他钱)和债务人(负数,他欠别人钱)。一笔转账把钱从一个债务人挪到一个债权人,让两个数字同时向零靠近。标准做法,也就是你自己在餐巾纸上也会想出来的那种:
- 找出欠得最多的人和被欠得最多的人。
- 债务人付给债权人两个金额中较小的那个。现在两人中至少有一个归零,退出。
- 对剩下的人重复,直到每个人的净余额都为零。
每笔转账至少让一个人退出,所以 n 个人的群组最多需要 n − 1 笔转账,通常要少得多,因为往往好几个债务人都和同一个债权人对冲掉了。没有任何东西被重新分配;转账只是从净余额走到零的一条捷径。
一个完整的例子:五个朋友,一间民宿
安琪、阿斌、小晨、丹妮和小乐一起去崇礼过滑雪周末,所有开销平均分摊。
| 支出 | 付款人 | 金额 | 每人应出 |
|---|---|---|---|
| 民宿 | 安琪 | 6,000 元 | 1,200 元 |
| 采购 | 阿斌 | 2,000 元 | 400 元 |
| 外出晚餐 | 小晨 | 1,500 元 | 300 元 |
| 油费 | 丹妮 | 500 元 | 100 元 |
| — | 小乐 | 0 元 | — |
| 合计 | 10,000 元 | 2,000 元 |
按两两欠款算,每一笔支出都会给付款人生成四笔欠款:四个人各欠安琪 1,200 元民宿费,四个人各欠阿斌 400 元采购费,四个人各欠小晨 300 元,四个人各欠丹妮 100 元。十六笔欠款。就算把每一对人之间方向相反的箭头相互抵消,十对人里每一对仍然有钱要付——阿斌欠安琪 800 元,小晨欠安琪 900 元,丹妮欠安琪 1,100 元,小乐欠安琪 1,200 元,小晨欠阿斌 100 元,如此等等。十笔付款。
净余额就简单多了。10,000 元里每人应出 2,000 元:
| 成员 | 付了 | 应出 | 净余额 |
|---|---|---|---|
| 安琪 | 6,000 元 | 2,000 元 | +4,000 元 |
| 阿斌 | 2,000 元 | 2,000 元 | 0 元 |
| 小晨 | 1,500 元 | 2,000 元 | −500 元 |
| 丹妮 | 500 元 | 2,000 元 | −1,500 元 |
| 小乐 | 0 元 | 2,000 元 | −2,000 元 |
验算:4,000 − 500 − 1,500 − 2,000 = 0。群组欠安琪的,恰好等于小晨、丹妮和小乐欠群组的。
简化之后,配对只需三步:小乐(欠得最多)付给安琪(被欠最多)2,000 元;丹妮付给安琪 1,500 元;小晨付给安琪 500 元。安琪收回了她的 4,000 元,每个净余额都归零,群组结清。三笔转账,而不是十笔。
看看阿斌。账面上他欠安琪 1,200 元民宿费,又有四个人各欠他 400 元采购费。他欠 1,600 元,别人也欠他 1,600 元,所以他的净余额是零,方案干脆把他整个跳过。他一分不付,也一分不收,这是对的:他做的任何事都没有改变他的位置。
为什么你最后会付钱给一个从没替你买过东西的人
拿这种情形最小的版本来看。安琪替阿斌垫了 300 元;后来阿斌替小晨垫了 300 元。按两两算:阿斌欠安琪,小晨欠阿斌——两笔付款,阿斌从小晨那里收 300 元,再把 300 元交给安琪。净余额:安琪 +300,阿斌 0,小晨 −300。简化后:小晨付给安琪 300 元,阿斌完全不用动。
两种版本里小晨都是周末结束时少了 300 元;安琪都是多了 300 元。简化去掉的只是阿斌这个中转角色。小晨”欠安琪”,不是因为安琪替他买过什么,而是因为安琪就是他欠群组的钱应该到达的地方。路径更短了;公平分毫不差。
代价,以及不用它的选择
简化的代价是社交上的,不是数学上的。在一次大型出游里,你可能被告知要付 400 元给一个只聊过两句的朋友的朋友,而不是真正替你买了雪票的那个人。有人不喜欢这样,这完全可以。
如果你们群更愿意把钱还给当初替自己垫付的人,那就这么做:把每一笔直接归还记下来,余额照样会归零,只是步骤多一些。简化是关于最少转账笔数的建议,不是关于谁该对谁负责的规定。不管哪种方式,让一个群保持平和的,是按节奏而不是凭感觉去结算,别让余额挂得太久,久到成了一个故事。
而且因为一切都建立在净余额上,份额是怎么算出来的并不重要:均分、按金额、按百分比或逐项分摊,最后都落到每人一个净余额——包括那种有些开销只由群里一部分人分摊的旅行。
Donget 在这里扮演什么角色
在 Donget 群组里,余额标签页显示每位成员的余额:每位成员一个净余额,正或负,随着支出的添加实时更新并同步给所有人。点击结算,应用就会建议让每个净余额归零所需的最少几笔转账。
记录一笔付款就是一笔转账;每一笔都让两个余额向零靠近,直到群组结清。如果你们群更愿意两两直接还,那就记录那些转账——余额在两种情况下都保持正确。从别的应用搬过来、还有余额没结清?把它作为一笔期初支出带过来,净余额就从停下的地方接着算。
常见问题
简化债务会改变我欠的金额吗?
不会。它只改变你付给谁,从不改变付多少。你的净余额——你付出的钱减去你在群组总支出中应出的那一份——简化前后完全一样,其他每个人的也一样。
为什么我要还钱给一个从没替我买过东西的人?
因为你欠一个人的,和他欠第三个人的,会在中间相互抵消。如果安琪替阿斌垫了 300 元,阿斌又替小晨垫了 300 元,阿斌刚好持平,于是小晨直接付给安琪;两种算法下小晨都是少了 300 元,安琪都是多了 300 元。
简化后的结果一定是最少的付款笔数吗?
它最多比群组人数少一笔,通常还要少得多。要在所有情况下都找到绝对最少值是一个更难的问题,但对一群朋友来说,差距很少超过一笔。
我们能不能就直接互相还钱?
可以。简化是一个建议,不是规定。如果你们群更愿意每个人把钱还给替自己垫付的那个人,那就记录那些付款;两种方式余额都会归零,只是步骤更多。
如果几乎所有钱都是一个人付的呢?
那方案就短到不能再短:所有欠着的人都付给那一个人,其他人不用动钱——滑雪周末的情形,五个人三笔转账,全都汇到订民宿的那个人手里。
我们结清之后有人又加了一笔支出,会怎样?
它会从零开始生成新的净余额,下一次结算建议就基于这些新余额。你之前记录的付款仍然保留;什么都不需要撤销。
一句话总结
债务简化不是什么把戏。它放下谁替谁垫过钱的历史,只保留每人一个、真正决定钱怎么走的数字,再从这些数字找一条通往零的短路。五个朋友、十笔两两欠款,三笔转账就结清,而每个人最后多出或少出的,和之前分毫不差。
免费下载 Donget,下次一群人出门,让结算替你们找出最少的那几笔转账。