标签:
数学在生活中无处不在.最常见的就是交易.一件商品最终的价格确定后,我给商家指定价格的钱,买到这件商品.这就是一简单的次交易.排除商品质量问题,个人品味和人际问题.交易本身最核心的内容就是一次简单的加减法.当然类似这种简单的数学我不会记录的.我要记录的都是我经历到的,或者感兴趣的且有点小复杂的数学.
一.资源分配
1.静态分配
在社会这个大集体中,经常会有人合伙去进行某个交易.交易完成后,一般是按所出的钱的比重多少进行分配.用数学来描述就是:
n个人共出了s元钱,得到某商品资源(条件是这个商品够n个人分享).其中n个人给的钱分别是(n1,n2,n3....),那么这个商品应该分配给每个人的比重是:
n1/s n2/s n3/s ......; 假设每个人都出了一样的钱k,则每个人应该分得k/n.
有些商品是服务,主要是按服务的期限长短来计算费用.(比如互联网).
上述情况的第一种:
不用说出钱最多的要可以一直讲服务用到服务期限到为止.假设max 这个表示n个人中出钱最大的比重(0<max <=1).服务的期限是N天那么n个人应该享受的服务天数为:
N*n1/s*max N*n2/s*max N*n3/s*max ......如果n/s = max 相除 = 1,那么这个人将享用最大服务天数N天.
上述情况第二种:大家出的钱都一样,max = k/n,则大家都将享用N天的服务.
2.动态分配
实际生活中常常有原来的o个人共花费K元钱分享某一资源,但后来又来了n个人一起去分享这一资源.这种情况就是动态的资源分配.
(1)假设o个人并没有或者很小的使用资源.这时候来了n个人要加入它们,并假设原来的o个花费的钱的相等的(K/o元).
那么后来的n个人要分别给原来的o个补钱:K/(n+o)*o元.
(2)修改(1),o个人已经用了资源的一定比例.换算成钱,相当于已经用了K*p(0<p<=1)元钱的资源.则n个要补给原来o个人每人:p*K/(n+o)*o
比如网费原来是3个人,300元,12个月每人出100.用了半年也就是,也就是150元钱的服务天数.(p = 150/300 = 1/2)这时候加入了2个人,
按照上面的公式后来的2个人要给原来3个人,每人:1/2*300/(3+2)*2 = 150/10 = 15.这样相当于后来每个人花了30元来分享剩下150元的服务.
(3) 假设一开始o个人出的钱不均等.出的钱分别是t1,t2,t3....后来加入他们的n个人一起分享资源(假设资源还没有被使用)则:
后来的n个人应该给之前o个人的钱分别是:以K/(n+o)为基准进行分配:匀少补多(原来交钱少于K/n+o的要补给多交钱的人)
比如300元网费,原来三个人分别给的钱是{-50,-100,-150},加了两个人,则每个人应该是:-300/5 = -60.原来三人和这个基数相和{10,-40,-90},后来的两个人各出60. 简便的算法是 {10-10,-40+10,90}{60,60} {0,-30+30,-90+30+60}{60-30-30,60-60} -表示多于60的钱,+表示补给. 因为实际分配方式有多种,所以这个没有一个统一的公式.但是有一个基准那就是联合后来在内的几个人,和新的均分基数K/n+o相差得到差补数列,然后匀少补多保证每一个项都归零.{0,0,0,0,0}
(4)原来几个人出钱不等,又用了资源,后来的人入伙.这个就要用p*K/n+o进行匀少补多.实际更多是到期后再入伙.
是不是感觉很绕脑子,多思考几遍吧.把这个熟练了,生活中的算账问题,基本都不会有问题.我甚至觉得计算机中的负载均衡技术可能会用到类似上面的某个算法.
标签:
原文地址:http://www.cnblogs.com/xuezizhenchengxuyuan/p/5102501.html