你的公司自动分裂成两派,不是人心坏了,是数学
先验直觉:公司里的派系斗争是"人心不古"、是"个别野心家搞事"、是小圈子文化。但数学告诉我们,即使每个人都认为自己中立、理性、不搞小团体,公司的组织结构本身就会自动催生派系。甚至——派系是民主制度的数学必然,不是例外。
2026年5月20日 · 预计阅读 20 分钟
关键词:结构平衡理论,谢林隔离模型,囚徒困境,沙普利值,社会网络分析,博弈论
01 引言:一家信贷公司的"两派"困局
让我们想象一家金融信贷公司——
风控部的职责是降低坏账率,他们希望收紧放贷标准、严查客户资料、即使损失一部分业务量也在所不惜。
业务部的职责是扩大市场份额,他们希望放宽审批流程、提高放贷速度、先跑量再谈风控。
两个部门的KPI天然矛盾。CEO希望在中间找到平衡点。
你可能会想:这不就是正常的管理矛盾吗?大家坐下来谈,按数据决策不就好了?
数学告诉你:没那么简单。
当一个组织中存在两种对立的利益偏好时,即使每个个体都理性、中立、不搞派系,系统的动力学也会自动将组织分裂成两个对立的阵营。而且——一旦分裂完成,就很难回头。
本文用四个数学工具,从四个维度拆解这个"办公室政治"的数学本质。
02 结构平衡理论:派系形成的"三角条件"
2.1 从Heider的社交直觉到数学定理
社会心理学家弗里茨·海德(Fritz Heider,1946)提出:在一个三人小团体中,关系的"平衡"取决于三个关系的乘积。
定义每个关系为有符号边:
= 友好(盟友、支持、合作) = 敌对(对立、对抗、不合作)
海德的平衡条件:一个三角形中,三个关系符号的乘积为
不平衡的三角会产生张力,促使关系变化——直到达到平衡。
2.2 数学推导
给定三人
三角平衡条件:
等价于:负号的数量必须为偶数(0或2)。
四种平衡状态:
| 乘积 | 状态 | 社会意义 | |||
|---|---|---|---|---|---|
| +1 | +1 | +1 | +1 | 平衡 | 三人同盟 |
| +1 | -1 | -1 | +1 | 平衡 | A是B、C的共同敌人 |
| -1 | +1 | -1 | +1 | 平衡 | B是共同目标 |
| -1 | -1 | +1 | +1 | 平衡 | C调节,A和B敌对但C和双方都好 |
两个不平衡状态(乘积为-1):两正一负——"朋友的朋友是敌人"的荒谬关系,必然触发关系调整。
2.3 信贷公司的三角:风控—业务—CEO
python
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
fm.fontManager.addfont('/home/wq/.fonts/msyh.ttc')
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
import networkx as nx
# 模拟一家信贷公司的高管关系
# 5位高管:CEO, 风控总监, 业务总监, 运营总监, 财务总监
people = ['CEO', '风控总监', '业务总监', '运营总监', '财务总监']
# 派系形成前的"潜在关系"矩阵
# +1=同盟, -1=对立, 0=无直接关系
# 初始状态:风控总监 vs 业务总监有矛盾,其他人保持中立
relations_before = {
('CEO', '风控总监'): 1,
('CEO', '业务总监'): 1,
('CEO', '运营总监'): 1,
('CEO', '财务总监'): 1,
('风控总监', '业务总监'): -1,
('风控总监', '运营总监'): 1,
('业务总监', '运营总监'): -1,
}
G_before = nx.Graph()
for p in people:
G_before.add_node(p)
for (a, b), s in relations_before.items():
G_before.add_edge(a, b, sign=s)
# 三角平衡检测
def check_balance(G):
triangles = []
for a in G.nodes():
for b in G.neighbors(a):
for c in G.neighbors(b):
if c != a and G.has_edge(a, c):
sab = G[a][b]['sign']
sbc = G[b][c]['sign']
sca = G[a][c]['sign']
product = sab * sbc * sca
triangles.append((a, b, c, '平衡' if product > 0 else '不平衡'))
return triangles
tri_before = check_balance(G_before)
print("=== 三角平衡检测(初始状态)===")
for a, b, c, status in tri_before:
sab = G_before[a][b]['sign']
sbc = G_before[b][c]['sign']
sca = G_before[a][c]['sign']
print(f" {a}-{b}({'友好' if sab>0 else '敌对'}) "
f"{b}-{c}({'友好' if sbc>0 else '敌对'}) "
f"{c}-{a}({'友好' if sca>0 else '敌对'}) → {status}")
# 派系形成后的关系
relations_after = {
('CEO', '风控总监'): 1,
('CEO', '业务总监'): -1, # CEO被迫站队风控派
('CEO', '运营总监'): 1,
('CEO', '财务总监'): -1, # 财务和业务同盟
('风控总监', '业务总监'): -1,
('风控总监', '运营总监'): 1,
('风控总监', '财务总监'): -1,
('业务总监', '运营总监'): -1,
('业务总监', '财务总监'): 1,
('运营总监', '财务总监'): -1,
}
G_after = nx.Graph()
for p in people:
G_after.add_node(p)
for (a, b), s in relations_after.items():
G_after.add_edge(a, b, sign=s)
print("\n=== 三角平衡检测(派系形成后)===")
tri_after = check_balance(G_after)
for a, b, c, status in tri_after:
sab = G_after[a][b]['sign']
sbc = G_after[b][c]['sign']
sca = G_after[a][c]['sign']
print(f" {a}-{b}({'友好' if sab>0 else '敌对'}) "
f"{b}-{c}({'友好' if sbc>0 else '敌对'}) "
f"{c}-{a}({'友好' if sca>0 else '敌对'}) → {status}")预期输出:
=== 三角平衡检测(初始状态)===
CEO-风控总监(友好) 风控总监-业务总监(敌对) 业务总监-CEO(友好) → 不平衡
CEO-业务总监(友好) 业务总监-运营总监(敌对) 运营总监-CEO(友好) → 不平衡
风控总监-运营总监(友好) 运营总监-业务总监(敌对) 业务总监-风控总监(敌对) → 平衡
...
=== 三角平衡检测(派系形成后)===
CEO-风控总监(友好) 风控总监-业务总监(敌对) 业务总监-CEO(敌对) → 平衡 ✓
CEO-风控总监(友好) 风控总监-财务总监(敌对) 财务总监-CEO(敌对) → 平衡 ✓
CEO-业务总监(敌对) 业务总监-财务总监(友好) 财务总监-CEO(敌对) → 平衡 ✓
...全部平衡2.4 结论:派系不是"搞出来的",是被三角逼出来的
初始状态中,CEO和风控、业务双方都好——但风控和业务敌对。这形成了不平衡三角:CEO的朋友是敌人。
按照海德理论,不平衡会产生"社会张力"。解法只有两种:
- CEO选边站(和一方为敌)→ 形成平衡三角,但也形成了派系
- 风控和业务和解(变为友好)→ 回到全平衡
第2种在KPI对立的情况下几乎不可能。所以派系是数学必然。

图释:左图为初始不平衡状态(CEO夹在敌对的两派之间),右图为派系形成后的平衡状态(CEO必须选边站)。红色实线=友好,蓝色虚线=敌对。
03 谢林隔离模型:轻微偏好如何自动分裂公司
3.1 从社区隔离到组织隔离
1971年,经济学家托马斯·谢林(Thomas Schelling,2005年诺贝尔经济学奖得主)提出了一个反直觉模型:
即使每个人只有轻微的"同类偏好",最终也会自动形成完全隔离的阵营。
谢林模型原本解释美国城市种族隔离——他发现即使大部分白人声称"不介意和黑人做邻居",只是"不想成为少数派",最终城市也会自动形成黑白隔离社区。
同样的逻辑适用于公司内部。
3.2 模型设定
在信贷公司的招聘场景中:
- 风控派倾向招"保守型"员工(看重规则、流程、风险评估)
- 业务派倾向招"激进型"员工(看重速度、弹性、市场机会)
- 每个经理有一个"容忍阈值":当团队中"另类"超过该阈值时,他会"离职/调岗"
3.3 Python模拟
python
import numpy as np
np.random.seed(42)
def schelling_simulation(grid_size=20, threshold=0.3, max_iter=50):
"""
谢林隔离模型模拟
grid: 1=风控派, -1=业务派, 0=空位
threshold: 容忍阈值——当周围异己比例超过此值,个体搬走
"""
n_agents = int(grid_size ** 2 * 0.9)
n_type1 = n_agents // 2
n_type2 = n_agents - n_type1
grid = np.zeros((grid_size, grid_size))
types = np.array([1] * n_type1 + [-1] * n_type2)
np.random.shuffle(types)
positions = [(r, c) for r in range(grid_size) for c in range(grid_size)]
selected = positions[:n_agents]
for idx, (r, c) in enumerate(selected):
grid[r, c] = types[idx]
empty_positions = list(set(positions) - set(selected))
def get_neighbors(r, c):
count = 0
similar = 0
for dr in [-1, 0, 1]:
for dc in [-1, 0, 1]:
if dr == 0 and dc == 0:
continue
nr, nc = r + dr, c + dc
if 0 <= nr < grid_size and 0 <= nc < grid_size:
if grid[nr, nc] != 0:
count += 1
if grid[nr, nc] == grid[r, c]:
similar += 1
return similar, count
segregation_history = []
for iteration in range(max_iter):
moves = 0
happy_types = {1: 0, -1: 0}
total_types = {1: 0, -1: 0}
for r in range(grid_size):
for c in range(grid_size):
if grid[r, c] == 0:
continue
total_types[grid[r, c]] += 1
similar, count = get_neighbors(r, c)
if count == 0:
happy_types[grid[r, c]] += 1
continue
dissimilar_ratio = 1 - similar / count
if dissimilar_ratio > threshold:
# 搬走
if empty_positions:
new_pos = empty_positions.pop()
empty_positions.insert(0, (r, c))
nr, nc = new_pos
grid[nr, nc] = grid[r, c]
grid[r, c] = 0
moves += 1
else:
happy_types[grid[r, c]] += 1
# 计算隔离指数
total_similar = 0
total_neighbors = 0
for r in range(grid_size):
for c in range(grid_size):
if grid[r, c] == 0:
continue
similar, count = get_neighbors(r, c)
total_similar += similar
total_neighbors += count
segregation_index = total_similar / total_neighbors if total_neighbors > 0 else 1
segregation_history.append(segregation_index)
unhappy_ratio = 1 - (happy_types[1] + happy_types[-1]) / n_agents
if moves == 0:
print(f"\n在第{iteration+1}轮收敛——无人再搬走")
break
return grid, segregation_history
np.random.seed(42)
grid_before, _ = schelling_simulation(threshold=0.5, max_iter=1)
grid_after, history = schelling_simulation(threshold=0.3, max_iter=50)
print("=== 谢林模型模拟结果 ===")
print(f"初始隔离指数: {history[0]:.3f}")
print(f"最终隔离指数: {history[-1]:.3f}")
print(f"隔离指数变化: {history[-1] - history[0]:.3f}")
print(f"阈值=0.3时,经过{len(history)}轮迭代,组织自动分裂")预期输出:
在第20轮收敛——无人再搬走
=== 谢林模型模拟结果 ===
初始隔离指数: 0.544
最终隔离指数: 0.994
隔离指数变化: 0.451
阈值=0.3时,经过20轮迭代,组织自动分裂3.4 结果解读
关键反直觉结论:即使每个人只有30%的"不希望和另类在一起"的倾向,最终组织的隔离指数会达到近99%。
映射到信贷公司:
- 风控总监的招聘偏好(倾向于招保守型员工)
- 业务总监的招聘偏好(倾向于招激进型员工)
- 每个人"和同类在一起更舒服"的微小倾向
结果:即使没人主动搞派系,组织自然分裂成两个独立阵营。

图释:左图为初始随机分布(风控派=蓝色,业务派=绿色,白色=空位),右图为经过20轮迭代后的自动隔离状态。即使每人只有30%的异己容忍度,最终也形成完全对立的阵营。
04 囚徒困境:为什么斗而不破
4.1 博弈的基本设定
风控部和业务部每天做决策:
- 合作:风控配合业务适度调整标准,业务配合风控做好客户筛选
- 背叛:风控死守标准卡住业务,业务绕过风控直接放单
收益矩阵(以部门利益计):
| 业务合作 | 业务背叛 | |
|---|---|---|
| 风控合作 | (5, 5) 双赢 | (0, 8) 风控吃亏 |
| 风控背叛 | (8, 0) 业务吃亏 | (2, 2) 双输 |
4.2 单次博弈 vs 重复博弈
单次博弈中,理性选择是"背叛"——无论对方选什么,背叛都能获得更高收益。
但公司内部的博弈每天重复。重复囚徒困境的纳什均衡是"以牙还牙"(Tit-for-Tat):第一轮合作,之后复制对方上一轮的策略。
4.3 Python模拟
python
import numpy as np
# 收益矩阵: [我背叛, 我合作] x [对方背叛, 对方合作]
# payoff[my_action][opp_action]
# 0=背叛, 1=合作
payoff = np.array([
[2, 8], # 我背叛, [对方背叛, 对方合作]
[0, 5] # 我合作, [对方背叛, 对方合作]
])
def tit_for_tat(my_history, opp_history, round_num):
if round_num == 0:
return 1 # 第一轮合作
return opp_history[-1]
def always_betray(my_history, opp_history, round_num):
return 0
def always_cooperate(my_history, opp_history, round_num):
return 1
def grudge(my_history, opp_history, round_num):
"""一旦对方背叛过,就永远背叛"""
if round_num == 0:
return 1
if 0 in opp_history:
return 0
return 1
def simulate_game(strategy1, strategy2, rounds=50, name1='策略A', name2='策略B'):
h1, h2 = [], []
total1, total2 = 0, 0
for r in range(rounds):
a1 = strategy1(h1, h2, r)
a2 = strategy2(h2, h1, r)
h1.append(a1)
h2.append(a2)
total1 += payoff[a1][a2]
total2 += payoff[a2][a1]
return total1, total2
# 四种策略两两对局
strategies = [
('以牙还牙', tit_for_tat),
('永远背叛', always_betray),
('永远合作', always_cooperate),
('记仇', grudge),
]
print("=== 重复囚徒困境:策略对战(50轮)===")
print(f"{'策略A':<10} {'策略B':<10} {'A得分':<8} {'B得分':<8} {'总得分':<8}")
print("-" * 50)
for name1, strat1 in strategies:
for name2, strat2 in strategies:
if strategies.index((name1, strat1)) >= strategies.index((name2, strat2)):
continue
s1, s2 = simulate_game(strat1, strat2)
print(f"{name1:<10} {name2:<10} {s1:<8} {s2:<8} {s1+s2:<8}")
# 模拟风控(以牙还牙) vs 业务(以牙还牙)
s1, s2 = simulate_game(tit_for_tat, tit_for_tat, rounds=100)
print(f"\n风控(以牙还牙) vs 业务(以牙还牙) 100轮: 各得{s1}分")
print(f"总得分: {s1+s2}")
# 模拟风控(以牙还牙) vs 业务(永远背叛)
s1, s2 = simulate_game(tit_for_tat, always_betray, rounds=100)
print(f"风控(以牙还牙) vs 业务(永远背叛) 100轮: {s1} vs {s2}")预期输出:
=== 重复囚徒困境:策略对战(50轮)===
策略A 策略B A得分 B得分 总得分
--------------------------------------------------
以牙还牙 永远背叛 98 106 204
以牙还牙 永远合作 250 250 500
以牙还牙 记仇 250 250 500
永远背叛 永远合作 400 0 400
永远背叛 记仇 106 98 204
永远合作 记仇 250 250 500
风控(以牙还牙) vs 业务(以牙还牙) 100轮: 各得500分
总得分: 1000
风控(以牙还牙) vs 业务(永远背叛) 100轮: 198 vs 2064.4 博弈论给信贷公司的启示
| 场景 | 策略匹配 | 结果 |
|---|---|---|
| 双方互相妥协 | 以牙还牙 vs 以牙还牙 | 长期共赢(各500) |
| 一方单方面打压 | 以牙还牙 vs 背叛 | 打压方短期获利,长期两败 |
| CEO强制合作 | 永远合作 vs 永远合作 | 高总分(500)但不稳定 |
关键结论:在重复博弈中,"以牙还牙"是最好的策略——既不过分强硬(不会学永远背叛,掉入双输陷阱),也不软弱(不会学永远合作,被对方占便宜)。
这解释了为什么公司内部派系常常"斗而不破"——两派默契地遵循以牙还牙策略:你今天卡我一个项目,我明天卡你一个流程,但谁也不搞彻底撕破脸。
05 沙普利值:谁才是真正的"权力核心"
5.1 权力的数学定义
在合作博弈论中,权力不等于头衔。沙普利值(Shapley Value,Lloyd Shapley,2012年诺贝尔奖)衡量的是:某个人在所有可能的联盟中的边际贡献的平均值。
公式:
其中
5.2 Python计算沙普利值
python
from itertools import permutations, combinations
import numpy as np
import math
# 5位高管,各自对公司的"必要度"评分
# 必要度=如果没有这位高管,公司业绩损失的比例
executives = {
'CEO': 0.5,
'风控总监': 0.35,
'业务总监': 0.35,
'运营总监': 0.2,
'财务总监': 0.15,
}
def coalition_value(members, all_exe):
"""计算联盟的价值:每位成员的必要度加权"""
if not members:
return 0
# 联盟价值 = 成员的必要度之和,但不能超过1(非线性)
total_necessity = sum(all_exe[m] for m in members)
return 1 - np.exp(-total_necessity) # 边际递减
def shapley_value(execs_dict):
names = list(execs_dict.keys())
n = len(names)
phi = {name: 0 for name in names}
for perm in permutations(names):
cumulative = 0
for i, name in enumerate(perm):
before = set(perm[:i])
v_before = coalition_value(before, execs_dict)
v_after = coalition_value(before | {name}, execs_dict)
phi[name] += v_after - v_before
# 除以所有排列数
n_perm = math.factorial(n)
for name in names:
phi[name] /= n_perm
return phi
shapley = shapley_value(executives)
names = list(executives.keys())
print("=== 沙普利值:高管的真实权力值 ===")
print(f"{'高管':<10} {'原始必要度':<12} {'沙普利值':<10} {'占比':<8}")
print("-" * 45)
total = sum(shapley.values())
for name, s in sorted(shapley.items(), key=lambda x: x[1], reverse=True):
print(f"{name:<10} {executives[name]:<12.2f} {s:<10.4f} {s/total:<8.1%}")
# 模拟场景:CEO偏向风控派
executives_biased = {
'CEO': 0.5,
'风控总监': 0.40, # 权力上升
'业务总监': 0.30, # 权力下降
'运营总监': 0.20,
'财务总监': 0.15,
}
shapley_biased = shapley_value(executives_biased)
print("\n=== CEO偏向风控派后的权力变化 ===")
print(f"{'高管':<10} {'变化前':<10} {'变化后':<10} {'变化':<8}")
print("-" * 42)
for name in names:
before = shapley[name]
after = shapley_biased[name]
change = after - before
print(f"{name:<10} {before:<10.4f} {after:<10.4f} {change:<+8.4f}")预期输出:
=== 沙普利值:高管的真实权力值 ===
高管 原始必要度 沙普利值 占比
---------------------------------------------
CEO 0.50 0.2497 31.7%
业务总监 0.35 0.1781 22.6%
风控总监 0.35 0.1781 22.6%
运营总监 0.20 0.1036 13.2%
财务总监 0.15 0.0782 9.9%
=== CEO偏向风控派后的权力变化 ===
高管 变化前 变化后 变化
----------------------------------------------
CEO 0.2497 0.2498 +0.0001
风控总监 0.1781 0.2023 +0.0243
业务总监 0.1781 0.1536 -0.0244
运营总监 0.1036 0.1037 +0.0000
财务总监 0.0782 0.0782 +0.00005.3 解读
- CEO权力最大(31.7%),但远小于"51%"——说明大老板也不能为所欲为
- 风控和业务势均力敌(各22.6%),谁也压不倒谁
- CEO只要轻微偏向风控派,风控的权力就增加2.4%,业务减少2.4%——权力的天平在毫厘之间倾斜
06 数学文化:三位诺贝尔奖得主的思想遗产
6.1 弗里茨·海德(Fritz Heider, 1896-1988)
奥地利社会心理学家,1946年提出"平衡理论"(Balance Theory)。他的核心思想:人的认知系统倾向于一致性——当感知到的关系不一致时,会产生心理张力,驱使人调整关系达到平衡。
海德的理论后来被卡特赖特和哈拉雷(Cartwright & Harary, 1956)用图论形式化,形成了结构平衡理论(Structural Balance Theory),成为社会网络分析的奠基理论之一。
6.2 托马斯·谢林(Thomas Schelling, 1921-2016)
2005年诺贝尔经济学奖得主,获奖理由是"通过博弈论增进了我们对冲突与合作的理解"。
他的《微观动机与宏观行为》(1978)中提出的隔离模型,证明了微观层面的轻微偏好如何在宏观层面产生极端分离。这个模型不仅解释了种族隔离,也解释了组织分化、收入分层、甚至社交媒体上的"信息茧房"。
6.3 劳埃德·沙普利(Lloyd Shapley, 1923-2016)
2012年诺贝尔经济学奖得主,合作博弈论的奠基人。他提出的沙普利值(1953)提供了一种公平分配合作剩余的方法,如今被广泛应用于电力定价、机场跑道费分摊、网络成本分配,甚至欧盟议会席位的分配。
有趣的是,沙普利最初是一个数学家(普林斯顿大学博士),他研究博弈论是出于纯粹的数学兴趣——当时他完全没想到自己的理论会被用于分析公司权力。
07 关键要点
- 结构平衡理论:三角关系中,乘积为+1时平衡。风控-业务-CEO三角在CEO两不相帮时必然不平衡→迫使CEO选边站,派系形成
- 谢林隔离模型:即使每人只有30%的"异己容忍度",通过逐轮迭代,组织最终会达到近99%的隔离指数——派系是微观偏好的宏观必然
- 重复囚徒困境:单次博弈中背叛是理性选择,但长期重复博弈中"以牙还牙"最优——解释了为什么派系"斗而不破"
- 沙普利值:CEO的边际贡献最大(31.7%),但风控和业务派系各占22.6%,CEO微小的立场倾斜就会导致权力天平显著变化
- 三者的逻辑链:为什么形成?(结构平衡理论)→怎么形成的?(谢林模型)→为什么继续存在?(囚徒困境)→谁最有话语权?(沙普利值)
完整内容请关注公众号「QIAN数据 · AI工具实验室」