软件理论基础:基础知识
看完一组图,能说清大语言模型为什么必须靠矩阵、概率与注意力这三件套
按 空格/→ 演示下一步
全部页面点击任意一页,跳回舞台从这页播放
软件理论基础:基础知识
看完一组图,能说清大语言模型为什么必须靠矩阵、概率与注意力这三件套
集合与元素
代码里写枚举类型、把状态列成一组常量——这些动作背后都在用「集合」的思想。集合论是软件理论最底层的语言,先把它讲清楚。
一张表是一个集合,每行是元素;SELECT WHERE 的返回结果就是原表的子集
集合运算
上一页我们认识了集合——把元素装进一个袋子里。如果有两个袋子,它们里的元素可以怎么组合?这就需要四种基本运算:并、交、补、差。
至少选一门=并集;两门都选=交集;全班没选=补集;只选A不选B=差集
关系
集合运算回答了「如何合并/筛选元素」,但实际中我们更关心元素之间的联系——比如「A 是 B 的朋友」「x ≤ y」。这种「谁和谁有这层联系」的描述,就是关系。
加自己=自反、互加=对称、A→B→C 推出 A→C=传递
函数
映射、单射、满射、双射
图的基本概念
上一页讲过,关系是有序对的集合。当这种有序对多起来、结构交织,单纯列举就让人眼花。于是数学家换了一种画法:把元素画成点,把配对画成连线,让结构一眼可读。这就是「图」。
路口是顶点,道路是边;双向路对应无向边,单行道对应有向边
图的表示方法
同一张示例图,左矩阵右表,对比空间与查询复杂度。
路径与环
上页我们把图存进了电脑。现在想象你站在某个路口,沿街道走到朋友家——这一路的路口与路段,就是图论里最基本的「通路」。
通路可回头走、简单路径每条街只走一次;回路是起点终点重合的环线
图的连通性
上一节我们认识了路径和环。一个自然的问题是:图里任意两个顶点之间,是不是都能找到一条路走到?这个「能不能互相到达」的问题,就是图的连通性。
双向公路像无向图,单行道像有向图;省级之间各通各的,对应连通分量
直接证明法
调试时一行行追代码:从入口(前提)出发,每条语句执行一次,看到中间状态,直到输出(结论)。直接证明正是这种「正向走法」——承认前提,按规则一步步推到底。
输入对应前提,每条语句是一次推理,最终输出对应结论
反证法
上页的直接证明,是顺着前提一步步推结论。可有些命题这条路走不通——比如证明'√2是无理数'。今天换一种思路:把要证的话反过来假设,看能不能推出矛盾。
查天气预报说有暴雨,与假设直接冲突,反假设被推翻,推出今天会下雨
数学归纳法
数学归纳法分三步:先打地基,再做假设,最后完成递推,让结论从最小值传到所有自然数。
证明方法对比
直接证和反证都能证一般性命题,但推理方向相反。看到题目该选哪个?这页给出判断标准。
- 起点:已知条件;方向:顺向推导
- 结构:P → 中间结论 → Q,逐层推进
- 适合:因果链路清晰、可直接构造
- 信号词:「因为……所以……」
- 起点:假设结论不成立;方向:推出矛盾
- 结构:¬Q → 推出矛盾 → ¬Q 不成立
- 适合:正面难推进、或命题含否定词
- 信号词:「假设……不成立,……矛盾」
字母表
前面用集合描述元素、用图刻画关系。现在要搭形式语言的第一块砖:所有合法字符串由哪些「原料」拼出来?这个原料库就叫做字母表——而它必须是有穷的,把这条限制拿掉,自动机理论就站不住脚。
23 声母 + 39 韵母 = 有限集合;一个汉字的拼音 = Σ 上的一个字符串
字符串
上一页认识了字母表 Σ——所有可用符号的集合。但光有符号还不够,得把它们按顺序排成队,才有「内容」。字符串,就是这样一队排好的符号。
车厢=符号,按顺序挂好,节数=长度;空串就是没有车厢的空轨道
语言
上一页我们看了字符串——字母表上单个的串。这一页把视角拉远:把「所有合法的字符串」聚成一个集合,这个集合就是语言。所有标识符、所有合法 C 程序、所有英文单词,统统都是语言。
词条是字符串,整本词典收录的词条集合就是语言;词典是数学对象,不只是纸书
字符串运算
从输入串出发,按"缩短"或"合并"两类运算得到新串——箭头表示数据流向。
语言的并与交
上一节我们认识了字符串的拼接和幂,而语言本身就是字符串的集合。两个语言之间能不能也做并和交?答案是自然的——集合运算直接延伸到语言上。
歌单就是字符串集合;并=合并去重,交=两边都收藏的那几首
语言的连接
上一页用并和交把两个语言合在一起——但那些操作只触及单个串本身。若想把一个语言的串和另一个语言的串首尾相接,就需要「语言的连接」。
把形容集与名词集里的词两两首尾拼接,所有「形+名」组合就构成新集合
语言的幂运算
上次学了语言连接:把两个语言里的串首尾相接。那如果把一个语言 L 和自己拼接呢?接一次是 L·L,接两次是 L·L·L,连续接 n 次——这叫语言的幂,记作 L^n。
数字换成集合,「乘法」换成「连接」,主体始终是同一个 L
语言的闭包
上一页我们让 L 与自身连接 n 次得到 L^n。现在把 n 放开:若 n 可以是 0、1、2、…,结果叫 L*;若 n 至少是 1,结果叫 L+。两者只差一点点。
L* 允许一根光秃秃的竹签(连接 0 次),L+ 至少串上一颗山楂
基础概念自测
设字母表 Σ={a,b},下列关于"语言"的描述,哪一项一定正确?
课后思考
先独立思考每个问题,再对照参考答案的思路。每个问题都值得多琢磨几分钟。
参考答案集合只回答'有什么',关系回答'之间怎么连'。描述一个班级,集合列出所有学生,但谁和谁是朋友、成绩谁高谁低,必须用关系刻画。函数也是关系的一种特殊形式。
参考答案顶点集可以是每栋楼或每个路口,边集是道路(带权即距离)。路径对应'从A到B怎么走',连通性对应'任意两点是否可达'。图不连通意味着存在孤立的建筑群。
参考答案标准归纳法依赖自然数的良序性。遇到无穷集合或关系,要么改用超限归纳法,要么先把问题归约到有限可枚举结构。归纳根基必须可枚举、归纳步必须对所有元素成立,两者缺一不可。