« 模糊逻辑在 AI 中的应用 | 返回首页 | 为 Lua 绑定 C/C++ 对象 »

房租分配问题

今天读到策划同学的周报中提到的一个关于合租房子的分摊房租问题。

引用周报中的一节如下:


上周在搬家,和喵、刘阳一起租房子住,遇到一个问题,就是分摊房租。中式的解决方法一般都是商量一下,但具体怎么商量,没有手段,总之就是大家估摸一下,觉得大略上说的过去就OK了。很少有拉下面子认真谈价格的,即使心里其实觉得并不认可。

在这方面,美国人还真能想一些办法,这是一个旅美的留学生在博客上写的,他和老美同学的商议方式: 两个人A,B合租一个二居的房子,比如每个月是1500美元,因为主卧和次卧有大有小,价格肯定是不均的,那么两个人分别写两个价格,也就是对主卧和次卧的心理价格。可以很极端,比如1400:100,但总额必须是1500,因为这是A,B必须接受的大条件,然后公开,除掉开价完全相当的情况,两间卧室必然各有一个出价最高的人,价高者入住,而月租则是A,B对这个卧室开价的均值。例如A出价是900:600,B出价是1000:500,那么A住次卧,价格为550,B住主卧,价格为950。两个人都得到了自己认可的房子,而价格还低于自己的预期。

这一方案还有一个优势,就是双方都无法通过恶意的叫价来损害对方,获得利益。相信很多同学会提出一个更直接的解决方案:一个人提价格方案,另一个人选择。但是这一方案也有点问题,提价格的人相对是吃亏的,对吧?

遗憾的是,这种做法,似乎无法推广到三个人的情况。


我觉得这个问题很有趣,晚上想了一下,其实是可以推广到三人甚至更多人的。

先说这个原始策略为什么让双方都感觉合理:

从经济学角度看,每个人都希望别人多分摊一些房租。你对一个房间了价值有一个评估,如果别人高于这个价格租下这个房间,对你就是有利的。原始方案正是如此,让双方都觉得最终方案对自己有利。我们基于这个基础来推广这个方案就可以了。

首先, 两个人对两间房间的分配策略,原始策略已经做的很好了。我们要做的仅仅是把三个人分三间房划简到两个人分两间房的问题。(其中不考虑竞价相同的问题。原始方案也没给出解决方案,可以重新来一次,也可以投骰子等。)

对三人策略,我的方案是: 三个人分别写下自己想要哪一间房间,并想对这个房间出多少价。

结果有三种 :

  1. 三个人对同一个房间竞价。这种情况比较好解决,我们直接让出价最少的人出局。然后出价最高的人得到这间房间,其价格是前两个价位的平均值。 接下来的问题就回到了两个人选两个房间的问题了。

  2. 有两个人对同一个房间竞价,另一个人选了别的房间。这种情况也好解决,直接让选相同房间的两人中价高者得,价格是两者平均值。

  3. 三个人各选了不同的房间。这种情况不太好处理,下面仔细分析。

假设 甲 选了 1 号房间,给出了价格 A ;乙选了 2 号房间,给出了价格 B ; 丙选了 3 号房间,给出了价格 C 。

我们先去掉 A B C 中绝对值最小值, 比如是 C 。 保留 1 号房间的 A 报价和 2 号房间的 B 报价。

其实可以这样看:甲和乙一起倾向于用 A+B 的价格租 1 2 号房间。那么他们集体对 3 号房间的估价是总价 - A - B 。

有很少的情况, 这个估价会变成负数。如果碰到了, 我认为可以简单的认为是甲和乙对 3 号房间的估价为 0 。

之后,就可以按均价原则定出 3 号房间的价格为 C 与 (总价 - A -B) 的平均值,并以这个价格租给 C 。

剩下的又变成了两个人分配两间房的问题了。 :)


补充:有同学认为,如果 A+B+C 低于总价的时候,case 3 会使得 C 最终价格超过他的预期,不太合理。

我认为这是合理的。因为大家可能都想用高价得到好的房间;也可能由于经济原因,希望尽量少分摊房租而倾向住不那么好的房间。

当 A+B+C 低于总价的情况发生时,往往是后一种情形。(否则,多数人会出高于均价的价格)

当所有人都出低价的时,出最低价的人应该承担略高的价位,这是你在出很低价格的时候要考虑的后果。也就是恶意出不合理的价格,伤害的是自己而不是别人。

Comments

问题前提:视所有住房者没有其他可能性,必须共同承租一套总价确定的房子。前面许多回复已经脱离这个前提,那就是另外一个问题了。

原解决办法可视为“竞价策略”,也就是流行的竞标或拍卖策略的变体。

第一步,既所有住房者,按照固定的总价,对每间房都分配自己的心理定价。(尤其,在一个真实的环境下,每个住房者对房间好坏标准未必一致,比如有人就喜欢住小房间,有人喜欢阳台,原解决办法的奇妙之处就是,将所有这些细节浓缩到竞价中)

第二步,所有的房间,都“价高者得之”。如果最高价有多人,则进行二次出价,直至分出高低。如果有人同时得到了多间房的最高价,则可以优先选择其中一间房,放弃对其他房间的竞价,他被放弃竞价的房间的获得者将是出价第二者,以此类推解决所有冲突,所有人都可以分配到一件房。

第三步,计算每件房的成交价格,由所有竞标价之和除以竞投人数。也即“成交价格为平均心理价格”,也即“在集体中,房价格为所有成员心理价格的平均值,从而协调了个体与集体”。

所以,原解决办法包含了“估价、竞价、平均”三种策略,奇妙的地方就在它具有适应性,无论是三个人都喜欢同一件房,还是每个人各有所好,都能解决问题。

@lovdin

房间不存在绝对价值. 房间的价值和人的判断,经济情况都有关系.

如果房间原本就有大家都认可的绝对价值, 那么就按这个价格标价就好了.

你举出的情况. 甲乙不一定是恶意的. 假设三个人经济条件都有限, 大家都只想以最低价格租到可以住的房间. 那么丙以 1550 租到其中一间就是合理的价格.

在相互不商量的情况下, "恶意" 出价是有风险的. 风险带来的收益也是合理的.

比如在你的例子中,丙如果以"合理价格"选择前两个房间,都可以得到实惠. 而甲乙并不能阻止他这么做. 所以,甲乙的这种行为都是承担风险换来的.

“三人策略”中的case 3的确有问题。假设有房间1、2、3,总价格为6000元。假设其中房间1、2各值2400元,房间3值1200元。一种出价策略如下:甲选择房间1,出价2000元;乙选择房间2,出价2100元;丙选择房间3,出价1200元。按照case 3的理论,房间3会被丙以( (6000 - 2000 - 2100) + 1200 ) / 2 = 1550的价格成交。事实上,甲、乙的行为可以理解为恶意竞价,但结果却是并未恶意竞价的C以远超房间3价值的价格租下,这显然不合理。究其原因,就在于“三人策略”中对“恶意竞价”行为的判定是不平等的。如果是三个房间,其价值相当,比如均为2000元(当然,这样一来竞价问题就没有意义了,大家平分好了,此处只为举例),恶意出价的人自然应当承担较高的价格。但事实是如果有人选择用某种策略来进行房租分配是,问题的前提往往在于房间的大小是不均等的(此处假设租金只与房间大小有关),这样一来,文中的“三人策略”显然不够完备。

我觉得原文的推广方式没有掌握到之前方法的精髓。n个人的情况其实不难吧:

1) 每人出一个总数一致的方案

2) 计算每个房间最高价以及对应的出价的人

3) 如果每个人都有一个自己的房间,成功

4) 否则会出现有人有多个价钱,有人的出价都不是最高的。一种简单的方式是,选到房子的出局;有多个房子中标的自己选一个,然后出局;出局的人的价格被抛弃,然后再选同一个房子的最高价,循环处理。应该容以证明每轮至少减少一人,所以最后肯定能让所有人出局(也就是分到房子)

5) 价格可以每个人用自己出局的出价作为比例加权平均实际的总价。大家实际支付的价钱应该都会比自己出的价要低。

这个问题应该已经有解了吧
分蛋糕问题
http://www.zhihu.com/question/20615717/answer/15646804

可以出价负数么

现在租房不容易了。

哈~俩人问题目前我和我同学是直接通过平分房租然后各住一半时间来解决的。。- -。。

看看

数学上可以这么推理,现实中有个前提是合租者对住任意一间都不会介意,但往往不是这样。如果是两室,两个人都想低价住主卧,除非次卧足够实惠。这样的话可以假设主卧两人争夺的目标,两人来对主卧报价,谁报的高谁住,这样赢的人舒服,住到了主卧,输的人更舒服,比预期还要低的价格住到了次卧。这样的话是不是更简单一点? 至于三室或者更多,同样A卧B卧C卧这样报价....

三个人各选了不同的房间。这种情况不太好处理.这个就各住各的房间么好了。

三个人各选了不同的房间。这种情况不太好处理.这个就各住各的房间么好了。

三个人各选了不同的房间。这种情况不太好处理.这个就各住各的房间么好了。

三个人各选了不同的房间。这种情况不太好处理.这个就各住各的房间么好了。

哎, 3D里的问题实在是太难了, 到最后所有的问题都会回归到5次多项式求通解, 但是5次多项式据说是"不可通解"的, 我2005年10月开始认识到这个问题, 一直做到2010年10月才完成, 基本上耗尽了我身体里最后一丝力气和精神, 现在经济状况也比较差.我很惊讶这样的研究成果居然没人感兴趣?~(我知道阿贝尔定理, 不过阿贝尔定理证明的其实只是5次多项式没有公式解, 公式解是通解的一种, 但并不是通解的唯一方案, 这是整个问题的突破口),总之是太难太难太难了呀~

其实我真没有空口说大话, 我四年前的引擎作品作为引擎主体支撑了盛大代理的<猎天ol>的开发. 现在这个demo之所以简陋, 是因为经过15年研究完成, 现在引擎在从头演进刚三个月的缘故.研究虽然完成了, 可是现在个人发展遇到了瓶颈, 加上一个人的开发太孤独, 所有有点短暂的迷茫, 真心希望业内高人能给我指点和帮助~

哈, 谢gg支持, 重用坊持续演化中, 估计再过半年应该能看最后效果了.接云风宝地宣传我自己的东西有点不厚道, 但我是实在没办法了, 等重用坊网站建设完成再来请大家去做客~

@jichong 耗时15年研究,厉害,可惜Demo中并没有显示出你的牛B之处.应该放个更惊世骇俗的演示应该就可以立即让云风给招安了:-)

这个思路比博主简洁一些:
确定整套为S元,首先从最大的房间开始,进行拍卖,底价是S/5,每一个人都可以叫价,价高者得。假设最大房间被a用A元拍下,那么除开a外另外4个人进行下一轮拍卖,拍卖第二大的房间,底价是(S-A)/4,以此类推。
http://airsen.info/index.php/archives/512

嗯, 要求年薪三十万+10%项目提成(或年薪十万+30%项目提成, 可在这个区间内浮动, 薪水涨则提成降, 反之亦然), 帮你们确保项目有序, 耗时15年, 3D和软件开发里的所有核心问题我均已研究完成, 欢迎联络, jc_programs@yahoo.com.cn, 计冲.

云风, 要不你们那收了我吧?:D~

不好意思, 我是个偏执狂, 继续来踢场, 发个技术demo:D http://jmp.lenovodata.com/UGqhXg

3人租房问题
3个人对每个房间出价 然后总和要等于房租总价
先分大房间 出价最低的被淘汰 出价最高的人获得 价格为最高的两个人的平均价
其他两个房间的分配是在没分到房的两个人出价基础上 做向下变动

因为剩下的需要出价格肯定要比两个人原来的出价总和要少

然后根据变动后的价格分配剩下的两个房子 就是一个二人分配了问题了

从两人的方案推广到三人或者更多人的情况也可以这样:

假设人数为N,让每一个人写出他对每一间房子的心理价格,必须保证价格之和为总的房租。每个人在写心理价格的时候要考虑自己入住每个房间的可能性,因为不可能免费住,所以每个价格必须大于0。

这样就得到9楼 @csp 所说的N*N 的矩阵,第i行代表第i个人对各个房子的心理价格。然后找出这个矩阵每一列最高的价格。即价高者入住,而价格为这一列的平均值。

如果有出价相同的情况可以通过投骰子的方式决定。

这不就是梅第奇吗?
http://boardgamegeek.com/boardgame/46/medici
推广到三人,嘿嘿,那就可以外交了!

另外不难证明,只要所有人的对N各房间的出价都大于或等于总房租,那么至少存在一个解决方案使得行号列号都不重复的N个的数之和大于或等于总房租。

一个人对N个房间的出价小于房租的例子iamlook已给出。我想说的是一个人对N个房间的出价大于房租也是可能的,比如(总房租1500)
房间 1 2 3
A 1300 400 0
意味着A非常希望得到1或2,而完全不考虑3,为了避免被分到3,A愿意付出溢价
当然,这是建立在A不能选择合租对象的前提下。如果A能够选择合租对象,那么出价越低对A越有利,大不了租不下来再去找其他人看看
比如(总房租还是1500)
房间 1 2 3
A 400 200 000
B...
C...
D...
E...
F...
...
只是这次A可能需要找很多人(在B-F...等人中找到两个)才能完成租房,给出的总值(这里是600)越低,越难找到合租对象,对应的其实在找到合租对象的环节增加了成本

另外如果房子也可以选择,比如不再是一定得租这套1500的房子,而是可以选其他房子,那么上面那个2维表就变成了一个3维表了

@iamlook
首先你要这么考虑,如果你和你的克隆体(既偏好需求和你一模一样),你们是否还会租这套房子。
你得例子中你对主卧的出价是1000,对次卧的出价低于100,加起来低于1100,而房租是1500。

实际在现实中,ABC三个人对3个房价的出价不一定就得等于1500,可以大于1500,也可以小于1500,只是如果找不出行号列号都不重复的N个的数之和最大值超过房租的时候,将无法把这套房子租下
比如
房间 1 2 3
A 0 200 600
B 400 500 700
C 300 400 800
所有情况都小于1500,所以无法把房子租下来

其实分摊房租就是分配消费者剩余的过程.
每个人写出对每个房子的租金,这样可以得到一个 N*N 的矩阵. 只要找行号列号都不重复的N个的数之和最大的情况,将该和减去房租就是N个人获得的消费者剩余.
以3人为例
房间 1 2 3
A 300 500 700
B 200 400 900
C 400 500 600
最大的和是1800 (A2 B3 C1)
多出来的300就是消费者剩余,可以均分即每人的出价-100,也可以按照比例分配(每人付出价的 1500/1800=83%)

实际的情况是,其实很多租房人是已经看好房间才来租的。比如我就想住主卧,我觉得最高1000合适,如果对方出1400,即便是我只需要花100就能得到次卧,可是我需要的是主卧呀,这时候我宁可放弃再找其他房子的主卧了。
该方法建立在合租人实际上对住哪个房间并不太在意的前提之上。实际操作的可能性还是不高。不过当作命题来思考确很有趣。

赞。下次租房的时候可以试试这么干了。

其实也就是一个估值和意向的筛选。

即使是2个人,如果2个人给出的数值都一样的话,说明他们的估值和意向是相等的,那么怎么分配就只能是友好商议或者天命抉择(猜拳等)了。

2人情况下清楚的表达了所有人都同意可以入住任何一间为前提。因此即使是推广到N人的情况下,也是用同样的策略(估值(均值->意向)->筛选)就可以解决了。

@teamworkpmy

他并不会得到这间房. 而是要和竞争前面那间房失败的那个人,重新走一次原始方案流程,来分配剩下的两间。

三人如果租三间房子,俩人选中一间,另一人选了一间,剩下一人选的那间不论高低都会得到这间房,这套房子总价固定的话,有人会选择赌博的方式出极端低价来博得这间房,不合理。

最好有裁判参与,否则类似于case1的情况里,剩余的两个价高者都知道了对方的出价,势必影响后面的选择

躺着也中枪= =!

直接take 下来,做二房东。哈哈,然后放租

Post a comment

非这个主题相关的留言请到:留言本