Skip to content

你的公司自动分裂成两派,不是人心坏了,是数学

先验直觉:公司里的派系斗争是"人心不古"、是"个别野心家搞事"、是小圈子文化。但数学告诉我们,即使每个人都认为自己中立、理性、不搞小团体,公司的组织结构本身就会自动催生派系。甚至——派系是民主制度的数学必然,不是例外。

2026年5月20日 · 预计阅读 20 分钟

关键词:结构平衡理论,谢林隔离模型,囚徒困境,沙普利值,社会网络分析,博弈论


01 引言:一家信贷公司的"两派"困局

让我们想象一家金融信贷公司——

风控部的职责是降低坏账率,他们希望收紧放贷标准、严查客户资料、即使损失一部分业务量也在所不惜。

业务部的职责是扩大市场份额,他们希望放宽审批流程、提高放贷速度、先跑量再谈风控。

两个部门的KPI天然矛盾。CEO希望在中间找到平衡点。

你可能会想:这不就是正常的管理矛盾吗?大家坐下来谈,按数据决策不就好了?

数学告诉你:没那么简单。

当一个组织中存在两种对立的利益偏好时,即使每个个体都理性、中立、不搞派系,系统的动力学也会自动将组织分裂成两个对立的阵营。而且——一旦分裂完成,就很难回头。

本文用四个数学工具,从四个维度拆解这个"办公室政治"的数学本质。


02 结构平衡理论:派系形成的"三角条件"

2.1 从Heider的社交直觉到数学定理

社会心理学家弗里茨·海德(Fritz Heider,1946)提出:在一个三人小团体中,关系的"平衡"取决于三个关系的乘积。

定义每个关系为有符号边:

  • +1 = 友好(盟友、支持、合作)
  • 1 = 敌对(对立、对抗、不合作)

海德的平衡条件:一个三角形中,三个关系符号的乘积为 +1(正)时关系平衡;乘积为 1(负)时关系不平衡。

不平衡的三角会产生张力,促使关系变化——直到达到平衡。

2.2 数学推导

给定三人 A,B,C,关系边为 sAB,sBC,sCA{1,+1}

三角平衡条件:

sAB×sBC×sCA=+1

等价于:负号的数量必须为偶数(0或2)。

四种平衡状态:

ABBCCA乘积状态社会意义
+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的朋友是敌人。

按照海德理论,不平衡会产生"社会张力"。解法只有两种:

  1. CEO选边站(和一方为敌)→ 形成平衡三角,但也形成了派系
  2. 风控和业务和解(变为友好)→ 回到全平衡

第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 206

4.4 博弈论给信贷公司的启示

场景策略匹配结果
双方互相妥协以牙还牙 vs 以牙还牙长期共赢(各500)
一方单方面打压以牙还牙 vs 背叛打压方短期获利,长期两败
CEO强制合作永远合作 vs 永远合作高总分(500)但不稳定

关键结论:在重复博弈中,"以牙还牙"是最好的策略——既不过分强硬(不会学永远背叛,掉入双输陷阱),也不软弱(不会学永远合作,被对方占便宜)。

这解释了为什么公司内部派系常常"斗而不破"——两派默契地遵循以牙还牙策略:你今天卡我一个项目,我明天卡你一个流程,但谁也不搞彻底撕破脸。


05 沙普利值:谁才是真正的"权力核心"

5.1 权力的数学定义

在合作博弈论中,权力不等于头衔。沙普利值(Shapley Value,Lloyd Shapley,2012年诺贝尔奖)衡量的是:某个人在所有可能的联盟中的边际贡献的平均值

公式:

ϕi(v)=SN{i}|S|!(|N||S|1)!|N|![v(S{i})v(S)]

其中 N 是所有高管的集合,v(S) 是联盟 S 的"产值"(公司价值),v(S{i})v(S) 是成员 i 加入联盟 S 带来的边际贡献。

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.0000

5.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工具实验室」

Last updated:

关注公众号:Qian数据