跳到主要内容
CHAPTER 28 · DRAFT

规划、博弈树与对手

Planning and games

理解动作前提、效果、效用、极小极大和剪枝,区分确定与随机对手。
卷册
2 / 4
月份
7 / 24
建议时间
8 小时
互动实验
1
练习
3
中文字符
7,105
正在读取本机进度…

1. 为什么重要,现在能做什么

学完本章,你应该能把“规划、博弈树与对手”从一个名词变成可操作的分析框架。你能解释它在完整AI系统中的位置,写出最小数学关系,运行一个CPU可承受的示例,设计只改变一个变量的实验,识别至少三种失败原因,并把方法迁移到新的公开或虚构场景。真正的能力不是复述答案,而是面对结果不理想时知道先检查哪里、需要补什么证据、何时应该拒绝继续自动化。

本章聚焦:理解动作前提、效果、效用、极小极大和剪枝,区分确定与随机对手。 这件事重要,因为AI系统的错误通常不是“模型突然不聪明”,而是问题定义、数据表示、目标函数、评估或部署条件之间不一致。把这些环节分开,才能定位故障,也才能对他人解释为什么一个结果值得或不值得相信。

2. 先修检查与生活类比

先用一分钟自测:你能否说明输入和输出分别是什么?能否区分规则、算法、模型与系统?能否读懂变量、函数和简单图表?如果其中一项还不稳,先回到前置章节 csp-and-sat。不要跳过地基;后续章节默认你会保存代码、记录环境、保护隐私,并区分教学模拟与真实测量。

生活类比:下棋不仅要想自己下一步,还要模拟对手最合理的回应。 类比的价值是帮助你先获得方向感,但它会省略重要细节。本章后面会用数学、代码和反例修正直觉。请在笔记里写下类比对应关系,并额外写一条“类比失效处”;这一步能防止把好记的故事误当成严谨证据。

3. 互动实验:只改变一个变量

INTERACTIVE LAB · 教学模拟

规划、博弈树与对手:单变量实验

只改变 1 个变量

只改变“搜索深度”,观察结果、代价和风险如何一起变化,理解理解动作前提、效果、效用、极小极大和剪枝,区分确定与随机对手。

任务信号78%
资源成本34%
结果不确定性32%
怎样读结果

页面数值由公开公式生成,只用于教学,不代表真实模型性能或现实世界因果效果。

聚焦滑块后使用方向键微调,Page Up/Page Down大步调整,Home/End到达边界。

无法操作滑块时的静态替代

静态替代:把搜索深度分别设为1层、4层和12层,手工比较三组教学模拟输出。

实验目标:只改变“搜索深度”,观察结果、代价和风险如何一起变化,理解理解动作前提、效果、效用、极小极大和剪枝,区分确定与随机对手。

静态替代说明:静态替代:把搜索深度分别设为1层、4层和12层,手工比较三组教学模拟输出。

键盘操作:聚焦滑块后使用方向键微调,Page Up/Page Down大步调整,Home/End到达边界。

风险提示:页面数值由公开公式生成,只用于教学,不代表真实模型性能或现实世界因果效果。

4. 直觉到数学

核心关系:V(s)=max_a min_b V(T(s,a,b))。先不要急着推公式。逐个给符号贴标签:它表示现实中的什么对象、是标量还是向量、单位是什么、允许取什么范围、由谁测量。然后用最小数字手算一次,再交给代码。若手算、代码和图形不一致,优先检查单位、索引、符号方向和边界,而不是马上换模型。

数学的作用不是让内容显得困难,而是把模糊说法变成可检查关系。公式必须和任务定义相互约束:如果目标变化,损失和指标也可能需要变化;如果数据尺度变化,数值稳定性和优化速度也可能变化;如果输出被用于真实决策,还必须把错误代价、拒答和人工复核写进系统。

5. 最小实现

下面代码保留固定种子和“教学模拟”标签。它的目的不是刷新榜单,而是让你看到输入、状态、计算和输出怎样连接。真实项目要补充数据许可、环境文件、独立测试、异常处理和测量记录。

python
from collections import deque

def bfs(graph, start, goal):
    queue = deque([(start, [start])])
    visited = {start}
    while queue:
        node, path = queue.popleft()
        if node == goal:
            return path
        for nxt in graph.get(node, []):
            if nxt not in visited:
                visited.add(nxt)
                queue.append((nxt, path + [nxt]))
    return None

graph = {"A": ["B", "C"], "B": ["D"], "C": ["D"], "D": []}
print(bfs(graph, "A", "D"))

运行后先检查输出类型、范围和极端值,再改变一个参数。不要一次改很多行;每次改变都记录“我预期什么、实际发生什么、可能原因是什么”。如果缺少PyTorch,可先完成浏览器互动实验和纯Python主线;GPU只属于后续研究复现轨道。

6. 五轮系统化理解

1. 问题边界

先把要解决的任务写成输入、输出、约束、失败代价与不做什么。 对“规划、博弈树与对手”而言,第一步不是背下定义,而是把核心问题写成一句能被反驳、能被测量的话:理解动作前提、效果、效用、极小极大和剪枝,区分确定与随机对手。。接着逐项标记观察到的事实、由公式推导的结果、来自文献的结论和仍然不确定的部分。这样做能防止把界面效果、单个案例或流畅文字误当成稳定能力。下棋不仅要想自己下一步,还要模拟对手最合理的回应。 这个类比只帮助建立直觉,不能代替形式定义;当类比与公式冲突时,以经过核实的定义、实验和边界为准。

先用虚构游戏角色的状态日志建立最小案例。只保留一个输入、一个可解释的中间量和一个输出,写清数据是“教学模拟”还是“实际测量”。然后建立一个不使用本章复杂方法的基线,例如固定规则、均值、随机策略或人工清单。基线不是为了显得简单,而是为了回答:如果什么都不优化,最低可接受表现是什么?再把虚构机器人在二维网格中的轨迹作为迁移案例,检查相同表示和假设是否仍成立。若必须改变数据定义、损失或评价标准,就把改变记录为新的实验条件,而不是悄悄调整。

本层实验只调节“搜索深度”。先预测它变小时结果、成本和风险会怎样,再移动滑块核对教学模拟曲线。至少记录低、中、高三个点,不能只保留最好看的点。若曲线与预测不符,依次排查单位、边界、符号方向、初始化、随机性和实现。若曲线符合预测,也不能直接声称现实有效:页面只验证公式在简化条件下的行为,真实结论仍需要代表性数据、独立测试和部署观察。

常见错误是一次同时改变数据、模型和阈值,最后无法知道改进来自哪里。正确做法是建立实验矩阵:行表示唯一改变的变量,列记录假设、设置、种子、运行环境、主要指标、切片指标、资源成本和失败样例。对于V(s)=max_a min_b V(T(s,a,b)),逐个说明符号的对象、形状、单位和取值范围;把零值、极大值、空输入、重复输入和相反方向代入,检查是否符合直觉。任何无法解释的异常都应保留在失败日志,而不是删除。

完成本层的标准不是“看懂了”,而是你能不看正文讲出三件事:本章方法解决什么问题;它依赖哪些假设;怎样设计一个能让它失败的测试。再向同学解释为什么下棋不仅要想自己下一步,还要模拟对手最合理的回应。只是入口,并给出一个类比失效的地方。如果解释中出现“肯定”“完全”“智能”“理解”等宽泛词,就把它们替换成可观察行为和适用条件。最后写一句研究问题:在虚构游戏角色的状态日志中,当搜索深度变化时,哪个机制最可能先成为瓶颈,怎样用对照实验验证?

3. 机制与因果链

沿着数据进入、内部计算、输出形成和外部行动逐步追踪,而不是只记名词。 对“规划、博弈树与对手”而言,第一步不是背下定义,而是把核心问题写成一句能被反驳、能被测量的话:理解动作前提、效果、效用、极小极大和剪枝,区分确定与随机对手。。接着逐项标记观察到的事实、由公式推导的结果、来自文献的结论和仍然不确定的部分。这样做能防止把界面效果、单个案例或流畅文字误当成稳定能力。下棋不仅要想自己下一步,还要模拟对手最合理的回应。 这个类比只帮助建立直觉,不能代替形式定义;当类比与公式冲突时,以经过核实的定义、实验和边界为准。

先用公开科研论文的标题与摘要元数据建立最小案例。只保留一个输入、一个可解释的中间量和一个输出,写清数据是“教学模拟”还是“实际测量”。然后建立一个不使用本章复杂方法的基线,例如固定规则、均值、随机策略或人工清单。基线不是为了显得简单,而是为了回答:如果什么都不优化,最低可接受表现是什么?再把合成的植物叶片特征作为迁移案例,检查相同表示和假设是否仍成立。若必须改变数据定义、损失或评价标准,就把改变记录为新的实验条件,而不是悄悄调整。

本层实验只调节“搜索深度”。先预测它变小时结果、成本和风险会怎样,再移动滑块核对教学模拟曲线。至少记录低、中、高三个点,不能只保留最好看的点。若曲线与预测不符,依次排查单位、边界、符号方向、初始化、随机性和实现。若曲线符合预测,也不能直接声称现实有效:页面只验证公式在简化条件下的行为,真实结论仍需要代表性数据、独立测试和部署观察。

常见错误是一次同时改变数据、模型和阈值,最后无法知道改进来自哪里。正确做法是建立实验矩阵:行表示唯一改变的变量,列记录假设、设置、种子、运行环境、主要指标、切片指标、资源成本和失败样例。对于V(s)=max_a min_b V(T(s,a,b)),逐个说明符号的对象、形状、单位和取值范围;把零值、极大值、空输入、重复输入和相反方向代入,检查是否符合直觉。任何无法解释的异常都应保留在失败日志,而不是删除。

完成本层的标准不是“看懂了”,而是你能不看正文讲出三件事:本章方法解决什么问题;它依赖哪些假设;怎样设计一个能让它失败的测试。再向同学解释为什么下棋不仅要想自己下一步,还要模拟对手最合理的回应。只是入口,并给出一个类比失效的地方。如果解释中出现“肯定”“完全”“智能”“理解”等宽泛词,就把它们替换成可观察行为和适用条件。最后写一句研究问题:在公开科研论文的标题与摘要元数据中,当搜索深度变化时,哪个机制最可能先成为瓶颈,怎样用对照实验验证?

7. 评估与不确定性

把平均指标拆成切片、置信区间、校准、错误代价和最坏情况。 对“规划、博弈树与对手”而言,第一步不是背下定义,而是把核心问题写成一句能被反驳、能被测量的话:理解动作前提、效果、效用、极小极大和剪枝,区分确定与随机对手。。接着逐项标记观察到的事实、由公式推导的结果、来自文献的结论和仍然不确定的部分。这样做能防止把界面效果、单个案例或流畅文字误当成稳定能力。下棋不仅要想自己下一步,还要模拟对手最合理的回应。 这个类比只帮助建立直觉,不能代替形式定义;当类比与公式冲突时,以经过核实的定义、实验和边界为准。

先用公开科研论文的标题与摘要元数据建立最小案例。只保留一个输入、一个可解释的中间量和一个输出,写清数据是“教学模拟”还是“实际测量”。然后建立一个不使用本章复杂方法的基线,例如固定规则、均值、随机策略或人工清单。基线不是为了显得简单,而是为了回答:如果什么都不优化,最低可接受表现是什么?再把合成的植物叶片特征作为迁移案例,检查相同表示和假设是否仍成立。若必须改变数据定义、损失或评价标准,就把改变记录为新的实验条件,而不是悄悄调整。

本层实验只调节“搜索深度”。先预测它变小时结果、成本和风险会怎样,再移动滑块核对教学模拟曲线。至少记录低、中、高三个点,不能只保留最好看的点。若曲线与预测不符,依次排查单位、边界、符号方向、初始化、随机性和实现。若曲线符合预测,也不能直接声称现实有效:页面只验证公式在简化条件下的行为,真实结论仍需要代表性数据、独立测试和部署观察。

常见错误是一次同时改变数据、模型和阈值,最后无法知道改进来自哪里。正确做法是建立实验矩阵:行表示唯一改变的变量,列记录假设、设置、种子、运行环境、主要指标、切片指标、资源成本和失败样例。对于V(s)=max_a min_b V(T(s,a,b)),逐个说明符号的对象、形状、单位和取值范围;把零值、极大值、空输入、重复输入和相反方向代入,检查是否符合直觉。任何无法解释的异常都应保留在失败日志,而不是删除。

完成本层的标准不是“看懂了”,而是你能不看正文讲出三件事:本章方法解决什么问题;它依赖哪些假设;怎样设计一个能让它失败的测试。再向同学解释为什么下棋不仅要想自己下一步,还要模拟对手最合理的回应。只是入口,并给出一个类比失效的地方。如果解释中出现“肯定”“完全”“智能”“理解”等宽泛词,就把它们替换成可观察行为和适用条件。最后写一句研究问题:在公开科研论文的标题与摘要元数据中,当搜索深度变化时,哪个机制最可能先成为瓶颈,怎样用对照实验验证?

9. 工程与复现

固定版本、环境、种子和测量记录,使别人能从原始输入重建结论。 对“规划、博弈树与对手”而言,第一步不是背下定义,而是把核心问题写成一句能被反驳、能被测量的话:理解动作前提、效果、效用、极小极大和剪枝,区分确定与随机对手。。接着逐项标记观察到的事实、由公式推导的结果、来自文献的结论和仍然不确定的部分。这样做能防止把界面效果、单个案例或流畅文字误当成稳定能力。下棋不仅要想自己下一步,还要模拟对手最合理的回应。 这个类比只帮助建立直觉,不能代替形式定义;当类比与公式冲突时,以经过核实的定义、实验和边界为准。

先用虚构游戏角色的状态日志建立最小案例。只保留一个输入、一个可解释的中间量和一个输出,写清数据是“教学模拟”还是“实际测量”。然后建立一个不使用本章复杂方法的基线,例如固定规则、均值、随机策略或人工清单。基线不是为了显得简单,而是为了回答:如果什么都不优化,最低可接受表现是什么?再把虚构机器人在二维网格中的轨迹作为迁移案例,检查相同表示和假设是否仍成立。若必须改变数据定义、损失或评价标准,就把改变记录为新的实验条件,而不是悄悄调整。

本层实验只调节“搜索深度”。先预测它变小时结果、成本和风险会怎样,再移动滑块核对教学模拟曲线。至少记录低、中、高三个点,不能只保留最好看的点。若曲线与预测不符,依次排查单位、边界、符号方向、初始化、随机性和实现。若曲线符合预测,也不能直接声称现实有效:页面只验证公式在简化条件下的行为,真实结论仍需要代表性数据、独立测试和部署观察。

常见错误是一次同时改变数据、模型和阈值,最后无法知道改进来自哪里。正确做法是建立实验矩阵:行表示唯一改变的变量,列记录假设、设置、种子、运行环境、主要指标、切片指标、资源成本和失败样例。对于V(s)=max_a min_b V(T(s,a,b)),逐个说明符号的对象、形状、单位和取值范围;把零值、极大值、空输入、重复输入和相反方向代入,检查是否符合直觉。任何无法解释的异常都应保留在失败日志,而不是删除。

完成本层的标准不是“看懂了”,而是你能不看正文讲出三件事:本章方法解决什么问题;它依赖哪些假设;怎样设计一个能让它失败的测试。再向同学解释为什么下棋不仅要想自己下一步,还要模拟对手最合理的回应。只是入口,并给出一个类比失效的地方。如果解释中出现“肯定”“完全”“智能”“理解”等宽泛词,就把它们替换成可观察行为和适用条件。最后写一句研究问题:在虚构游戏角色的状态日志中,当搜索深度变化时,哪个机制最可能先成为瓶颈,怎样用对照实验验证?

11. 迁移与研究

把本章方法搬到新情境,用对照和消融判断哪些部分可迁移、哪些需要重做。 对“规划、博弈树与对手”而言,第一步不是背下定义,而是把核心问题写成一句能被反驳、能被测量的话:理解动作前提、效果、效用、极小极大和剪枝,区分确定与随机对手。。接着逐项标记观察到的事实、由公式推导的结果、来自文献的结论和仍然不确定的部分。这样做能防止把界面效果、单个案例或流畅文字误当成稳定能力。下棋不仅要想自己下一步,还要模拟对手最合理的回应。 这个类比只帮助建立直觉,不能代替形式定义;当类比与公式冲突时,以经过核实的定义、实验和边界为准。

先用公开科研论文的标题与摘要元数据建立最小案例。只保留一个输入、一个可解释的中间量和一个输出,写清数据是“教学模拟”还是“实际测量”。然后建立一个不使用本章复杂方法的基线,例如固定规则、均值、随机策略或人工清单。基线不是为了显得简单,而是为了回答:如果什么都不优化,最低可接受表现是什么?再把合成的植物叶片特征作为迁移案例,检查相同表示和假设是否仍成立。若必须改变数据定义、损失或评价标准,就把改变记录为新的实验条件,而不是悄悄调整。

本层实验只调节“搜索深度”。先预测它变小时结果、成本和风险会怎样,再移动滑块核对教学模拟曲线。至少记录低、中、高三个点,不能只保留最好看的点。若曲线与预测不符,依次排查单位、边界、符号方向、初始化、随机性和实现。若曲线符合预测,也不能直接声称现实有效:页面只验证公式在简化条件下的行为,真实结论仍需要代表性数据、独立测试和部署观察。

常见错误是一次同时改变数据、模型和阈值,最后无法知道改进来自哪里。正确做法是建立实验矩阵:行表示唯一改变的变量,列记录假设、设置、种子、运行环境、主要指标、切片指标、资源成本和失败样例。对于V(s)=max_a min_b V(T(s,a,b)),逐个说明符号的对象、形状、单位和取值范围;把零值、极大值、空输入、重复输入和相反方向代入,检查是否符合直觉。任何无法解释的异常都应保留在失败日志,而不是删除。

完成本层的标准不是“看懂了”,而是你能不看正文讲出三件事:本章方法解决什么问题;它依赖哪些假设;怎样设计一个能让它失败的测试。再向同学解释为什么下棋不仅要想自己下一步,还要模拟对手最合理的回应。只是入口,并给出一个类比失效的地方。如果解释中出现“肯定”“完全”“智能”“理解”等宽泛词,就把它们替换成可观察行为和适用条件。最后写一句研究问题:在公开科研论文的标题与摘要元数据中,当搜索深度变化时,哪个机制最可能先成为瓶颈,怎样用对照实验验证?

7. PyTorch实现路线

当本章涉及学习模型时,统一采用Python与PyTorch:先把输入变成带明确形状的张量,再定义torch.nn.Module,选择与任务一致的损失,使用optimizer.zero_grad()loss.backward()optimizer.step()完成更新。评估阶段使用model.eval()torch.inference_mode(),并保存state_dict、预处理配置、词表或标签表。若本章属于规则、搜索、数据库或治理主题,则PyTorch不是强行套用的答案;应保留可解释的Python基线,在研究线中再比较神经方法。

形状检查要写在代码里:批次轴、特征轴、序列轴、通道轴不能靠猜。训练曲线至少同时记录训练损失、验证指标和资源成本;只保存最好一次会产生选择偏差。出现NaN时先检查输入范围、除零、对数和指数,再检查学习率、梯度范数与混合精度。出现训练好而测试差时先排查泄漏、重复样本、切分方式和分布偏移。

8. 实验设计与结果记录

为本章建立一张实验表。固定问题定义、数据版本、基线、硬件、依赖和随机种子,只改变“搜索深度”。每个设置至少运行三次教学模拟;真实研究应根据方差和成本决定更充分的重复次数。结果栏必须标记为“实际测量”“教学模拟”或“文献引用”之一,三者不能混写。

推荐记录字段:实验ID、日期、假设、唯一改变、数据哈希、代码提交、Python/PyTorch版本、设备、种子、主要指标、切片指标、时间、内存、失败样例、是否符合预期、下一步。若采用外部结果,记录作者、标题、DOI或URL、访问日期、实验环境和原文限制;不要把论文中的一个数字搬到不同数据与硬件上直接比较。

9. 常见失败与排查顺序

  1. 问题定义错位。 指标提高但现实任务没有改善。重新写输入、决策和失败代价。
  2. 数据泄漏或重复。 训练与测试共享样本、时间或主体信息。按真实部署边界重新切分。
  3. 表示不一致。 训练和推理使用不同预处理、词表、单位或类别顺序。把预处理随模型版本化。
  4. 只看平均值。 少数群体、极端场景或长尾失败被平均掩盖。增加切片、区间和最坏情况。
  5. 一次改变太多。 无法归因改进来源。回到单变量实验和消融。
  6. 把流畅当正确。 生成结果自然但证据、逻辑或计算错误。增加引用核对、约束和拒答。
  7. 部署条件变化。 延迟、内存、网络、传感器或用户行为不同。建立监控、降级与回滚。

排查时按“数据→目标→实现→优化→评估→部署→治理”顺序逐层缩小范围。先构造最小可复现失败,再看日志和中间量;不要通过删除失败样本让图表变好。涉及人身、医疗、法律、财务、教育机会或其他高风险决策时,本章练习不能替代专业判断,也不能直接上线。

10. 迁移任务

工程线:把本章最小实现包装成一个可重复运行的命令,加入输入校验、测试、环境文件、日志、模型或规则版本、CPU资源上限和README。选择虚构游戏角色的状态日志作为公开或合成案例,提供一个正常输入、一个边界输入和一个应拒绝的输入。

研究线:选择公开古诗文本与版权已明确的材料,提出一个可证伪问题。复现简单基线,再改变一个机制;至少做一次消融、一次分布变化测试和一次失败类别分析。报告效应大小与不确定性,不只报告最好分数。若结果没有改善,也要解释它排除了什么假设。

11. 三级练习

  1. 基础题: 用自己的话解释“规划、博弈树与对手”,说明它的输入、输出和一个关键假设;再指出生活类比的一个局限。
  2. 应用题: 在合成音频波形与环境声标签中设计一个只改变“搜索深度”的实验,列出基线、三档设置、指标和失败样例。
  3. 挑战题: 设计一个会让本章方法失效的分布变化或对抗条件,给出检测、拒答、人工复核和回滚方案。

独立答案位于 content/ai-book/answers/planning-and-games.md,网页中默认折叠,建议先完成再核对。

12. 本章能力检查

  • 我能在两分钟内说清本章解决的问题与不解决的问题。
  • 我能解释核心公式中每个符号的对象、形状和单位。
  • 我能运行最小代码,并预测改变一个变量的方向性影响。
  • 我能区分教学模拟、实际测量和文献引用。
  • 我能给出至少三种失败原因,并按顺序排查。
  • 我能说明何时必须停止自动化并交给人。
  • 我能提出一个可证伪研究问题和最低成本基线。

13. 来源与核实

本章来源于下列一手框架、官方文档、开放教材或研究论文的结构化核对;正文为原创解释,不复制原图、习题答案或大段原文。时效内容在每个版本重新核实。

  • [S016] Stuart Russell, Peter Norvig,《Artificial Intelligence: A Modern Approach》,https://aima.cs.berkeley.edu/(访问:2026-08-06)
  • [S017] Stanford University,《CS221: Artificial Intelligence》,https://stanford-cs221.github.io/(访问:2026-08-06)

核实日期:2026-08-06。评审状态:draft。只有技术评审、事实核查和专家签字完成后,状态才能按 draft → technical_review → fact_checked → stable 前进。

完成练习后,查看独立答案与自评量规

基础题参考

合格答案应包含三部分:第一,理解动作前提、效果、效用、极小极大和剪枝,区分确定与随机对手。;第二,输入、内部机制和输出之间的关系;第三,至少一个适用假设。生活类比“下棋不仅要想自己下一步,还要模拟对手最合理的回应。”能提供直觉,但它省略了数学约束、数据偏差和部署风险,因此不能作为实验证据。若只写概念定义、没有边界或反例,答案仍不完整。

应用题参考

选择合成音频波形与环境声标签,先用固定规则或简单统计量作为基线。把“搜索深度”设置为1层、4层和12层,其余条件保持一致。记录主要指标、资源成本、至少一个切片和失败样例。页面结果必须写“教学模拟”;如果自己运行真实代码,则保存环境、数据版本、种子和测量记录后才能写“实际测量”。

挑战题参考

可以主动改变输入分布、加入噪声、制造缺失、交换标签含义或改变部署资源。检测层使用输入校验、漂移或分布外分数;决策层设置置信阈值和拒答;流程层对高风险输出要求人工复核;运维层保留上一版本、变更记录和回滚触发条件。关键不是列工具名,而是说明每道控制对应哪个失败路径、由谁负责、怎样验证控制有效。

自评量规

  • 0分:只复述名词。
  • 1分:说明了机制,但没有实验或边界。
  • 2分:有基线、单变量、指标和失败分析。
  • 3分:进一步包含不确定性、迁移、人工闸门和可复现记录。
SOURCE LEDGER

本章来源台账

S016
Artificial Intelligence: A Modern Approach

Stuart Russell, Peter Norvig · 经典教材官方站 · 持续更新

访问 2026-08-06 · 以来源页许可为准;本书仅作原创解释、短引用与明确署名
打开原始来源 ↗
S017
CS221: Artificial Intelligence

Stanford University · 大学课程一手资料 · 持续更新

访问 2026-08-06 · 以来源页许可为准;本书仅作原创解释、短引用与明确署名
打开原始来源 ↗
查看完整来源库 →