迪杰斯特拉
人物简介
1930–2002,荷兰计算机科学奠基人,1972 年 ACM 图灵奖得主,横跨图论算法、操作系统并发、编程语言、程序验证、分布式计算五大核心领域,408 考研几乎所有 OS、数据结构核心考点均出自他的研究成果。
一、图论与算法
1. Dijkstra 单源最短路径算法(1956 年提出,1959 正式发表)
- 背景:20 分钟构思,初衷为荷兰航空航线规划;论文《A Note on Two Problems in Connexion with Graphs》成为计算机史上引用最高论文之一。
- 核心思想:贪心算法,划分确定集合 S、待确定集合 V-S,不断选取距离源点最近顶点松弛更新。
- 408 考点:仅支持非负权图、贪心正确性证明、邻接矩阵 / 堆优化两种实现、复杂度分析、与 Floyd/Bellman-Ford 对比。
- 工业应用:OSPF 路由协议、GPS 导航、游戏寻路、物流路径规划。
2. 调度场算法(Shunting-yard 逆波兰表达式转换算法)
- 首创栈处理运算符优先级,将中缀表达式转为后缀逆波兰表示(RPN)。
- 编译器、计算器底层标准表达式解析算法,编译原理必考基础工具。
二、操作系统 & 并发同步
1. 信号量(Semaphore)+ P/V 原语(1965)
并发编程基石,彻底解决进程互斥、同步两大核心问题:
P(S):申请资源,S 减 1,资源不足则进程阻塞入队;V(S):释放资源,S 加 1,唤醒阻塞队列进程。 408 必考:互斥信号量初值 = 1,同步信号量初值 = 0 / 资源总数;哲学家就餐、生产者消费者全部基于 PV 操作实现。
2. 银行家算法(Banker’s Algorithm,死锁避免算法)
- 唯一经典死锁避免方案,用于 THE 多道程序系统资源分配。
- 核心:分配资源前校验系统安全序列,仅分配后仍存在完整安全序列才允许分配,从源头规避死锁四大必要条件同时成立。
- 408 大题高频考点:安全序列推演、资源分配矩阵判断、算法执行流程。
3. THE 多道程序操作系统(THE Multiprogramming System)
世界首个完整分层结构操作系统,开创性提出操作系统分层架构思想:
- 硬件层、内存管理层、进程调度层、用户接口层逐层隔离;
- 首次实现严格的进程隔离、内存保护、多道并发,现代 OS 分层设计源头。
4. 哲学家就餐问题(经典并发同步模型)
提出经典并发死锁场景,用来演示信号量、互斥、死锁产生条件,是 408 并发编程标准例题。
5. 定义核心术语:死锁 Deadlock、互斥 Mutual Exclusion
现代操作系统并发理论基础名词全部由他规范定义。
三、编程语言、编译器与结构化编程
1. 世界首个 ALGOL 60 编译器(1959 年完成)
与 Jaap Zonneveld 合作实现全球第一个 ALGOL60 完整编译器,ALGOL 是现代高级语言(C/C++/Java)语法范式源头,奠定块级作用域、分程序、结构化语法标准。
2. GOTO 有害论 & 结构化编程(Structured Programming)
1968 年发表《Go To Statement Considered Harmful》,彻底颠覆当时无限制跳转的混乱编程模式:
- 证明任何逻辑都可仅用顺序、分支 if、循环 while三种控制结构实现;
- 废除无约束 goto,催生现代结构化程序设计,是所有现代编程语言的设计根基;
- 408 简答题高频:结构化程序三大控制结构、goto 语句弊端。
3. 栈(Stack)标准化概念推广
正式将栈结构引入程序运行模型,函数调用栈、表达式求值栈均基于其理论。
四、程序验证、形式化方法
1. 最弱前置条件(WP,Weakest Precondition)
程序正确性形式化验证核心理论,通过数学逻辑推导程序执行前后的状态不变式,用于证明代码无 bug,是程序逻辑验证领域开创成果。
2. 程序不变式理论
提出循环不变式,用于数学证明循环程序的正确性,408 算法证明题、程序填空题底层理论依据。
五、分布式计算理论
自稳定系统(Self-stabilization)
分布式容错领域里程碑成果:一套分布式系统无论初始处于任意错误状态,无需外部干预,经过有限步自动收敛到合法稳定状态。 现代分布式集群容错、分布式锁、一致性算法底层核心理论。
六、学术荣誉与行业影响
- 1972 ACM 图灵奖,首位非美国本土得主;
- ACM 评选 25 年里程碑论文,他一人独占两篇,与霍尔并列第一;
- 现代计算机科学极少数同时打通理论算法、操作系统、编译、软件工程、分布式全领域的奠基人;
- 所有 408 数据结构、操作系统核心大题、选择题考点几乎全覆盖其成果。
七、408 考研考点对应速记
- 数据结构:Dijkstra 最短路径、调度场栈表达式算法
- 操作系统:信号量 PV 操作、银行家死锁避免、哲学家就餐、THE 分层 OS、死锁 / 互斥概念
- 编译原理:ALGOL 编译器、栈表达式解析
- 软件工程:结构化编程、goto 有害论
- 算法证明:最弱前置条件、循环不变式
- 分布式:自稳定容错系统
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)