公平的席位分配
问题提出:某学校有3个系一共200名学生,其中甲系100名,乙系60名,丙系40名。如果学校代表会议设置20个席位,怎样公平地分配席位?
思考:
按照传统的思维方式,按照每个系的比例进行席位的分配。在该问题中,甲乙丙三个系的人数比例为100:60:40=5:3:2。 因此按照这个比例进行席位的分配可以公平简单的实现席位分配。
但是上面的例子有些特殊,因为每个系的人数比例正好是整数,并且能够恰好分配所有的席位。
现在将问题进一步一般化。
假设甲系学生103人,乙系学生63人,丙系学生34人。此时甲乙丙学生人数所占比例分比为51.5%、31.%、17.0%。仍然分配20个席位,此时甲乙丙按比例分配的席位个数分别为:10.3、6.3、3.4
三个系进过协商同意将最后一个席位分配给比例中小数部分最大的丙系。此时甲乙丙席位分别为10、6、4
现在问题进一步复杂。
由于决策过程可能出现10:10的现象,会议决定将增加一个席位。依旧按照上述的将最后一个席位分配给小数比例最大的那个系。
见下面表格
不过现在通过表格可以看出:总席位的增加,反而导致丙系由4个席位减少至3个席位,这样的分配方法(将最后一个席位分配给小数比例最大的那个系)对丙系不公平。
因此问题出现在分配席位的方法上面。该分配席位的方法称为最大剩余法或者最大分数法
最大分数法明显的缺陷:人口悖论,某方人口增加反而导致该方席位数目减少。例如上述三系学生变为114,64,34.按照最大剩余法,21个席位的分配结果应该是:11、6、4,乙系学生人数增加席位反而比原来少1席,丙系学生数量不变席位反而多了1席。
为了寻找新的公平的席位分配方法,先讨论衡量公平的数量指标
不公平度指标
为了简单,只考虑A,B两方分配席位的情况。设两方人数分别为p1,p2,占有席位分别为n1,n2.则比例p1/n1,p2/n2为两方每个席位所代表的人数。显然只有当p1/n1=p2/n2时,分配才公平。通常当p1/n1!=p2/n2时,分配不公平,并且对比值较大的一方 不公平。
有绝对标准,但是为了更加有意义地比较,使用相对标准。设p1/n1>p2/n2,定义rA(n1,n2)=(p1/n1-p2/n2)/(p2/n2)为A的相对不公平度。定义rB(n1,n2)=(p2/n2-p1/n1)/(p1/n1)为B的相对不公平度
建立衡量标准之后,新的分配方法应当使这两个比值尽可能的小。
新的分配方法:
假设A,B两方已分别占有席位n1,n2,利用rA,rB讨论当总席位增加1席时,应该分给A还是B
可以设p1/n1>=p2/n2.若增加的一个席位分配给A,则n1变为n1+1,分配给B就有n2+1,因此考虑一下三种情况:
- P1/(n1+1)>p2/n2,说明即使A增加1席仍对A不公平,显然增加的一席应该分配给A
- P1/(n1+1)<p2/n2,说明A增加1席将对B不公平,此时对B的相对不公平度为rB(n1+1,n2)=p2(n1+1)/(p1*n2)-1 式3
- P1/n1>p2/(n2+1),说明B增加1席将对A不公平,此时对A的相对不公平度为rA(n1,n2+1)=p1(n2+1)/(p2*n1)-1 式4
在使相对不公平度尽量小的分配原则下,如果
rB(n1+1,n2)<rA(n1,n2+1) 式5
则增加的1席应分配给A,反之,则增加的1席应分配给B
根据式3、式4两式,式5等价于
P2^2/[n2*(n2+1)] < p1^2/[n1*(n1+1)] 式6
当式6成立时,增加的1席位分配给A,反之分配给B
这种方法可以推广到m方席位分配。设第i方人数为pi,已占有ni席位,i=1,2,…m,当总席位增加1系式,计算下式
Qi=pi^2/[ni*(ni+1)],i=1,2…m
增加的1席位应分配给Q值最大的一方。此方法暂时称为Q值法。
作者: 伊甸一点
出处: http://www.cnblogs.com/zpfbuaa/
本文版权归作者伊甸一点所有,欢迎转载和商用(须保留此段声明),且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
原文链接 如有问题, 可邮件(zpflyfe@163.com)咨询.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)