投票为什么会循环:孔多塞悖论与单峰偏好

从议程操纵到中位选民定理的机制设计基石

机制设计
社会选择
交互课件
拆解多数决投票循环与议程操纵,展示单峰偏好如何打破孔多塞悖论并引出中位选民定理。
作者

Shawn

Gemini 3.7 Flash

发布于

2026年8月27日

本文依据 Muñoz-Garcia《Advanced Microeconomic Theory》第 11 章(社会选择理论)及配套课程讲义撰写,属于微观经济学专栏的机制设计模块开篇基础。

注记本讲核心目标
  1. 掌握孔多塞悖论(Condorcet Paradox)的产生机理:个人偏好具有传递性,但多数决加总出的社会偏好可能出现循环\(A \succ B \succ C \succ A\));
  2. 理解循环带来的制度灾难:议程操纵(Agenda Manipulation)——谁控制投票顺序,谁就能决定最终结果;
  3. 掌握单峰偏好(Single-Peaked Preferences)的定义及其对阿罗不可能定理“无限制定义域”条件的约束;
  4. 理解中位选民定理(Median Voter Theorem)的几何证明:一维政策空间下,中位选民的理想点必然是无可匹敌的孔多塞胜者(Condorcet Winner)

简单多数决的陷阱:孔多塞循环

在民主决策和集体选择中,“少数服从多数”(简单多数决)看似最自然不过。然而,法国哲学家孔多塞(Marquis de Condorcet)早在 1785 年就发现了一个惊人的悖论。

考虑 3 位选民对 3 个备选方案 \(A, B, C\) 的排序:

选民 第一偏好 第二偏好 第三偏好 偏好排序
选民 1 \(A\) \(B\) \(C\) \(A \succ B \succ C\)
选民 2 \(B\) \(C\) \(A\) \(B \succ C \succ A\)
选民 3 \(C\) \(A\) \(B\) \(C \succ A \succ B\)

每位选民内部的偏好都是完全理性的(完备且严格传递)。现在进行两两多数决对决:

  • \(A\) 对决 \(B\):选民 1 和选民 3 支持 \(A\),选民 2 支持 \(B\) \(\Longrightarrow\) \(A\) 以 2:1 击败 \(B\)(社会偏好 \(A \succ B\));
  • \(B\) 对决 \(C\):选民 1 和选民 2 支持 \(B\),选民 3 支持 \(C\) \(\Longrightarrow\) \(B\) 以 2:1 击败 \(C\)(社会偏好 \(B \succ C\));
  • \(C\) 对决 \(A\):选民 2 和选民 3 支持 \(C\),选民 1 支持 \(A\) \(\Longrightarrow\) \(C\) 以 2:1 击败 \(A\)(社会偏好 \(C \succ A\))!

三个对决连在一起,社会偏好出现了无休止的贪吃蛇循环

\[A \succ B \succ C \succ A \succ \dots\]

集体选择丧失了传递性,不存在任何一个能击败所有其他选项的绝对胜者(孔多塞胜者不存在)。

议程操纵:谁排日程,谁定胜负

循环最危险的后果不是决策僵局,而是议程操纵

假设会议主持人想让自己最偏好的选项胜出,他只需要设计两轮淘汰赛的出场顺序

  1. 主持人想要 \(C\) 胜出:安排第一轮 \(A\) vs \(B\)\(A\) 胜),第二轮 \(A\) vs \(C\) \(\Longrightarrow\) \(C\) 最终胜出
  2. 主持人想要 \(A\) 胜出:安排第一轮 \(B\) vs \(C\)\(B\) 胜),第二轮 \(B\) vs \(A\) \(\Longrightarrow\) \(A\) 最终胜出
  3. 主持人想要 \(B\) 胜出:安排第一轮 \(C\) vs \(A\)\(C\) 胜),第二轮 \(C\) vs \(B\) \(\Longrightarrow\) \(B\) 最终胜出

每个选民都在诚实投票,但投票结果完全由议程制定者的日程编排决定!阿罗不可能定理(Arrow’s Impossibility Theorem)正是在此基础上证明:任何试图满足非独裁、帕累托与不相关备选独立性(IIA)的社会福利函数,必然无法在全体无限制偏好上消除此类悖论。

破局之道:单峰偏好与中位选民定理

要消除循环,必须对偏好的多样性施加某种结构性约束。最重要、最符合现实政治与公共经济学直觉的约束就是单峰偏好(Single-Peaked Preferences)

单峰偏好的定义

设所有备选方案可以排列在一条一维轴线上(例如从左到右代表“财政支出规模从 0 到 10”)。

若每个选民在这条轴线上都有一个最偏好的理想点(Ideal Point) \(x_i\),且随着选项远离该理想点(无论向左还是向右),选民对选项的效用单调严格下降,则称该选民的偏好是单峰的。

中位选民定理(Black, 1948)

重要定理:中位选民定理(Median Voter Theorem)

若选民人数 \(I\) 为奇数,且所有选民在一维政策空间上的偏好均为单峰偏好,则:

  1. 中位选民(Median Voter)的理想点 \(x_m\) 是唯一的孔多塞胜者
  2. 在两两多数决下,\(x_m\) 能够击败任何其他替代方案 \(y \neq x_m\)
  3. 简单多数决社会偏好具备传递性,彻底消除孔多塞循环!

交互演示:拖动选民理想点,检验中位选民的统治力

在下方一维政策轴 \([0, 10]\) 上,拖动 3 位选民的理想点 \(x_1, x_2, x_3\)。下方会实时计算中位选民位置,并在任何随机选择的挑战方案 \(y\) 与中位方案 \(x_m\) 之间发起两两对决投票:

▷ 展开 / 收起代码
viewof x1_pos = Inputs.range([0, 10], {value: 2, step: 0.5, label: html`选民 1 理想点 x₁`})
viewof x2_pos = Inputs.range([0, 10], {value: 5.5, step: 0.5, label: html`选民 2 理想点 x₂`})
viewof x3_pos = Inputs.range([0, 10], {value: 8.5, step: 0.5, label: html`选民 3 理想点 x₃`})
viewof y_alt  = Inputs.range([0, 10], {value: 7.5, step: 0.5, label: html`挑战方案 y`})
▷ 展开 / 收起代码
pts = [
  { id: "选民 1", x: x1_pos },
  { id: "选民 2", x: x2_pos },
  { id: "选民 3", x: x3_pos }
].sort((a, b) => a.x - b.x)

x_median = pts[1].x
median_voter_id = pts[1].id

// 两两对决: y vs x_median
// 单峰偏好下效用 u_i = -|x - x_i|
vote_xm = pts.filter(v => Math.abs(x_median - v.x) < Math.abs(y_alt - v.x)).length
vote_y  = pts.filter(v => Math.abs(y_alt - v.x) < Math.abs(x_median - v.x)).length
tie     = pts.filter(v => Math.abs(y_alt - v.x) === Math.abs(x_median - v.x)).length

winner_str = y_alt === x_median
  ? "挑战方案与中位点完全重合"
  : vote_xm > vote_y
    ? `中位方案 xₘ 以 ${vote_xm} : ${vote_y} 战胜挑战方案 y`
    : `平局或挑战方案获胜 (${vote_y} : ${vote_xm})`
▷ 展开 / 收起代码
// ===== 状态面板 =====
html`<table class="table table-sm" style="max-width:540px">
  <tr><td>排序后理想点分布</td><td>左: ${pts[0].x} (${pts[0].id}) | <b>中位点 xₘ = ${x_median} (${median_voter_id})</b> | 右: ${pts[2].x} (${pts[2].id})</td></tr>
  <tr><td>两两对决测试(xₘ vs 挑战方案 y = ${y_alt})</td><td><b>${winner_str}</b></td></tr>
  <tr><td>机制设计结论</td><td><b>中位选民理想点 xₘ 是绝对孔多塞胜者(在单峰下一维无法被推翻)</b></td></tr>
</table>`
▷ 展开 / 收起代码
u_curve = (x_target) => d3.range(0, 10.1, 0.2).map(x => [x, 10 - Math.abs(x - x_target)])

Plot.plot({
  height: 320,
  x: { label: "一维政策空间(如公共支出规模) →", domain: [0, 10] },
  y: { label: "↑ 选民单峰效用", domain: [0, 11] },
  marks: [
    // 水平参考基准线
    Plot.ruleY([0], { stroke: "#cbd5e1" }),
    // 三位选民的单峰效用折线 (绿、紫、橙)
    Plot.line(u_curve(pts[0].x), { stroke: "#10b981", strokeWidth: 1.8 }),
    Plot.line(u_curve(pts[1].x), { stroke: "#8b5cf6", strokeWidth: 2.5 }), // 中位选民加粗高亮
    Plot.line(u_curve(pts[2].x), { stroke: "#f59e0b", strokeWidth: 1.8 }),
    // 理想点峰顶散点
    Plot.dot([[pts[0].x, 10], [pts[1].x, 10], [pts[2].x, 10]], { fill: ["#10b981", "#8b5cf6", "#f59e0b"], r: 6 }),
    Plot.text([[pts[0].x, 10.5], [pts[1].x, 10.5], [pts[2].x, 10.5]], { text: [pts[0].id, `${pts[1].id} (中位)`, pts[2].id], fontSize: 12, fontWeight: "bold" }),
    // 挑战方案 y 的竖直参考线 (红色虚线)
    Plot.ruleX([y_alt], { stroke: "#ef4444", strokeWidth: 2, strokeDasharray: "4,4" }),
    Plot.text([[y_alt, 2]], { text: [`挑战 y = ${y_alt}`], dx: 14, fill: "#ef4444", fontSize: 12, fontWeight: "bold" }),
    // 中位方案 x_m 的竖直参考线 (紫色粗虚线)
    Plot.ruleX([x_median], { stroke: "#8b5cf6", strokeWidth: 2, strokeDasharray: "2,2" })
  ],
  title: "单峰效用分布与中位选民理想点(紫色粗线为中位选民,y 永远无法击败它)"
})
提示你应该看到什么
  • 无论怎样移动挑战点 \(y\):只要 \(y \neq x_m\),对决投票永远是 \(2:1\) 中位点胜出!
  • 几何证明直觉:若 \(y > x_m\)(在右侧),那么中位选民自己(\(x_m\))以及所有理想点在中位选民左侧的人(占总人数的一半以上!),都必然认为 \(x_m\)\(y\) 离自己更近,从而投票支持 \(x_m\);反之亦然。中位选民永远能拉拢到至少半数同盟!

小结与通往机制设计的桥梁

  • 简单多数决在一般无限制定义域上容易陷入孔多塞循环,使集体选择出现非传递性,给议程操纵打开大门;
  • 阿罗不可能定理从公理化高度确立了完全无偏见加总的不可能性;
  • 单峰偏好通过对政策维度的结构约束破除了阿罗魔咒,中位选民定理给出了稳健的唯一孔多塞胜者;
  • 社会选择理论是机制设计(Mechanism Design)契约理论(Contract Theory)的基石:当个体可能隐藏偏好时,如何设计激励相容的机制引出真实信息(显示原理与拍卖理论)正是后续展开的中心议题。
None🤖 AI 助教「乐高」

注:社会选择与机制设计基础暂未单独收录入本站专属 RAG 知识库,助教乐高将基于通用高级微观经济学知识为您解答。

拖完滑块还有疑惑?可以试试向助教乐高提问:

  • 请通俗解释阿罗不可能定理中的四个公理(U, P, IIA, D)分别代表什么含义?
  • 如果政策空间从一维扩展到二维(例如同时决定税率与环保标准),中位选民定理还成立吗(Plott 定理)?
  • 什么是吉巴德-萨特斯维特定理(Gibbard-Satterthwaite Theorem)?它与阿罗定理有何内在联系?