简介
Schulze 方法是选举机制里比较出名的算法。假设有 n 个候选人,选民们都为它们打分进行选举,在选民打分完后就形成了该选民心中的候选人顺序。如下图所示,有 ABCDE 5 个候选人,选民对他们进行打分排序。
当然这个是已经排好序了,具体怎么打分这里不讨论。
现在的问题是怎么从上面的这个表上选一个合适的 Order of Preference 呢?难道直接选投票最多的那个么?那就太不科学了,所以就有 Schulze 方法。
抽象
为了能够抽象化这张表,我们先定义 表示 X 候选人在前,Y 候选人在后,即选民更喜欢 X。用上图举个例子 为喜欢 A 候选人的人数,那么
现在我们将每种情况都算出来,并做成下面的表格
其中绿色表示更优的,红色表示更差。比如 ,而 ,所以 要更好一些。这里可以发现它们都是对称的,一红对应一绿。
有没有发现这个表格有点像我们以前看到的邻接矩阵呀,ABCDE 每个代表一个节点,表格里的数字是连接节点边的权值,所以我们可以用下面的图里表示(注意这里只表示更优的情况)
优化选择顺序
这时候你可能发现 表示的就是以 A 为起点 B 为终点的路,而数值是这条路里最小权值的边。如 的路是 A -> D -> C -> B
最小边为 D -> C
28。而这个 28 是比 大的,所以此时 A 比 B 更优,选民更喜欢 A。
上面是一个例子,现在我们将别的都表示出来(注意这里不再是 ,而是使用了 )
这时我们的表格就要再更新一次了
通过上面的比较我们容易得出候选人的顺序 E A C B D
.
网友评论