1.2 进化的定义与三大前提


1.2 进化的定义与三大前提

本节摘要:现代进化学中,"进化"有一个不容含糊的操作化定义——种群中等位基因频率在世代间的改变。本节把这个定义拆开,逐一检查它隐含的三个前提(变异、遗传、差异繁殖成功),并用一次"无选择条件下的模拟"证明:定义不等于选择,没有选择进化照样可以发生。

为什么必须先钉死定义

日常语言里"进化"混着三层意思:个体变强(进步叙事)、历史展开(宏大叙事)、群体遗传组成改变(科学定义)。只有第三层是可测量、可证伪的。当一位种群遗传学家说"这个群体在进化",她的意思是:某种等位基因的频率从 0.3 变到了 0.35,且这种改变可复现、可归因。

定义带来一个立刻的反例清单:一只蛾长出更深的颜色,不是进化;一个个体学会新技能,不是进化;只有当群体层面的基因(或可遗传的表型)构成比发生变化,才叫进化。反过来说,只要频率在变,哪怕没有自然选择——比如纯粹靠运气——进化也已经发生了。这一点很多人没意识到,我们用实验证明它。

三大前提逐项检查

  1. 变异:群体内个体在可遗传性状上必须存在差异。没有差异,选择无从挑。
  2. 遗传:差异的至少一部分要能传给后代。口音差异很大但不可遗传(只可传染)。
  3. 差异繁殖成功:不同变异类型留下的后代数目长期不同。这是选择的动力来源。

达尔文版学说还有两条铺垫性前提——繁殖过剩与生存竞争——它们解释的是为什么繁殖成功会有差异。五个条件合起来,自然选择的逻辑就闭合了。

演练一:没有选择,进化照样发生

下面的模拟里,两种等位基因 A 与 a 对生存繁殖完全等价(适合度相同),唯一的机制是"下一代是从上一代里随机抽样出来的"。这就是遗传漂变的最小模型。

import random def drift(N=20, p0=0.5, gens=60, seed=0): """无选择条件下的随机漂变:2N 个等位拷贝每代独立抽样""" rng = random.Random(seed) p = p0 for g in range(gens): copies = sum(rng.random() < p for _ in range(2 * N)) p = copies / (2 * N) if p in (0.0, 1.0): # 固定或丢失,进化在此终止 return g, p return gens, p random.seed(42) endings = [drift(N=20, seed=s) for s in range(50)] fixed = sum(1 for g, p in endings if p == 1.0) lost = sum(1 for g, p in endings if p == 0.0) still = 50 - fixed - lost print(f"50 个群体: A 固定 {fixed} 个, A 丢失 {lost} 个, 仍在漂 {still} 个") avg_g = sum(g for g, p in endings if p in (0.0, 1.0)) / max(fixed + lost, 1) print(f"平均走到固定或丢失所用世代数: {avg_g:.1f}")

跑一下:约一半群体最终 A 固定、一半丢失,少数还在波动。没有任何选择参与,群体却全部"进化"了——频率从 0.5 走到了 0 或 1。种群越小,这种随机固化越快。这正是定义的威力:它不承诺原因,只记录变化;归因是下一步的事(第 4 章专门处理"选择还是漂变"的判别)。

演练二:前提缺失的三个对照

import random def population_step(pop, w_A=1.0, w_a=1.0, heritable=True): """一步世代更替:按适合度加权抽样;heritable=False 模拟不可遗传差异""" n = len(pop) pool = [] for g in pop: w = w_A if g == "A" else w_a if random.random() < w: pool.append(g if heritable else random.choice(["A", "a"])) return [random.choice(pool) for _ in range(n)] if pool else pop random.seed(1) pop = ["A"] * 5 + ["a"] * 45 # A 是有利新突变 for label, kw in [("有选择+可遗传", dict(w_A=1.3, heritable=True)), ("有选择但不可遗传", dict(w_A=1.3, heritable=False)), ("无选择", dict())]: p = list(pop) for _ in range(30): p = population_step(p, **kw) print(label, "A 频率 =", p.count("A") / len(p))

三个对照的典型结果:只有第一行里 A 的频率显著上升;"有选择但不可遗传"与"无选择"都原地踏步。前提缺一条,进化机器就停摆——这比背诵定义更能让人记住三条前提各自为什么必要。

💡 关键直觉:"进化 = 基因频率改变"这个定义故意不含"更好""更复杂"。细菌耐药、侏儒化岛屿象、失去视觉的洞穴鱼都在这个定义下与"进步"无关,只与本地繁殖成功有关。

本节要点回顾

  • 进化的操作化定义:种群中等位基因频率的世代间改变,个体不进化
  • 三大前提:可遗传的变异 + 差异繁殖成功,缺一则选择失效
  • 漂变实验证明:没有选择也能有进化,定义与机制必须分开
  • 种群规模是漂变速度的关键参数,第 3 章将给出定量公式

下一节聚焦三大机制中最强有力的一个:自然选择,以及它背后的计数量——适合度。

延伸变式:把定义当工具用的三个练习

练习一:判断下列哪些属于进化——疫苗接种后人群抗体水平上升(不是,体细胞免疫记忆不进生殖系);一个湖泊的鱼群过网眼尺寸基因频率改变(是);蝌蚪变青蛙(不是,个体发育程序执行)。做完应能体会到定义的判据只有一条:群体中可遗传构成是否改变。

练习二:把上一节的漂变模拟改成 N=200、p0=0.05,观察"从稀有可能到固定"的概率是否仍等于 0.05。固定概率与初始频率相等是中性情形的最深性质,任何偏离都提示选择在场——这正是后面章节用频率数据反推选择的原理雏形。

练习三:思考为什么"用进废退"直觉如此顽固。因为它混合了两件真事:发育对使用的响应(肌肉变粗,真实但不遗传)与种群对环境的适应(真实且遗传)。把这两层拆开,直觉的吸引力就被拆掉了。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U