既熟悉又陌生的“迪杰斯特拉”

简介:        最近看一些专业课的书籍,在不同的书本上看到了Dijkstra(迪杰斯特拉)这个名字;可以毫不夸张地说,凡是学信息相关专业的学生都应该听说过他的名字(课堂上曾提到的“迪杰斯特拉算法”就是他提出来的,在考试中也经常遇到)。
       最近看一些专业课的书籍,在不同的书本上看到了Dijkstra(迪杰斯特拉)这个名字;可以毫不夸张地说,凡是学信息相关专业的学生都应该听说过他的名字(课堂上曾提到的“迪杰斯特拉算法”就是他提出来的,在考试中也经常遇到)。但是,除了这个之外,大家对他的了解应该是很少的,所以,我认为他是我们“最熟悉的陌生人”。对于这位“陌生人”,我深感好奇,于是上网查找了一些有关这位计算机科学家的资料。在此,与大家分享,也算是对这位大师的贡献表示认可吧。

 

       首先说一下他出现在我们课本上的哪些地方。第一,在《计算机网络》(谢希仁编著,第五版)教材的第152页出现了Dijkstra提出的“最短路径算法SPF”,不过,在此作者没有详细介绍该算法,而是在本书配套的光盘中进行了详述;第二,在《算法设计与分析》(陈慧南编著)教材的第124页出现了Dijkstra提出的单元最短路径算法—“迪杰斯特拉算法”,在此作者详细介绍了此算法,其主要思想是用“贪心法”来求最短路径;第三,在《操作系统教程》(黄刚、徐小龙、段卫华编著)教材的第76页,出现了Dijkstra提出的信号量与P、V操作机制,为在操作系统中进行并发进程的分析奠定了基础。

 

       看来,Dijkstra是经常与大家“见面”,并且也被经常放在了考卷中,我想大家对他可能是又爱又恨吧。

 

       同时我也上网搜了一下有关他的资料,以下作简要的说明。

 

        Dijkstra全名为Edsger Wybe Dijkstra(1930/5/11~2002/8/6),是荷兰人。他是20世纪最伟大的计算机科学家之一,曾获1972年图灵奖,与D. E. Knuth(高唐纳)并称为20世纪最伟大的计算机科学家。他的主要贡献有如下几个方面:1)提出“goto有害论”;2)提出信号量和PV原语;3)解决了有趣的“哲学家聚餐”问题;4)最短路径算法(SPF)的创造者;5)第一个Algol 60编译器的设计者和实现者;6)THE操作系统的设计者和开发者。可以看出,他的一生对计算机科学的贡献极大,值得我们学习。

 

       我国著名计算机专家王选院士在Dijkstra逝世后,发表了一篇文章《从Dijkstra谈帅才的洞察力》来纪念这位大师。在文中,王选院士缅怀了先驱Dijkstra的历史功绩,并对中国计算机产业的发展提出了看法。Dijkstra被西方学术界称为“结构程序设计之父”和“先知先觉”,他一生致力于把程序设计发展成一门科学。王选院士对Dijkstra的洞察力(Vision和Insight)很是敬佩,并举了几个例子来说明。例如,他解决编译系统中的关键问题,提出了同步进程的协调和操作系统的结构,论证了“GoTo语句有害“和结构程序设计等。同时,Dijkstra实践了“吾爱吾师,但吾更爱真理”这句话,为了坚持真理,他不惜反对恩师。这体现了一个科学家的基本素质,那就是不惧权威,真理为上。他的一些名言警句至今也很有现实意义,如:“有效的程序员不应该浪费很多时间用于程序调试,他们应该一开始就不要把故障引入。”以及“程序测试是表明存在故障的非常有效的方法,但对于证明没有故障,调试是很无能为力的。”等。

 

      “追逼圣贤,乃是读书人的本意”,在20世纪计算机科学的发展前途尚不明朗之时,Dijkstra能够洞穿其发展,致力于理论和应用的研究,其远见与智慧不得不令人惊叹;在与导师科学观点不和时,他能够坚持真理,其人品与胸怀确实让人敬佩。现在我们有许多人感叹自己资质不好,或是周围的环境太差,因此过着“做一天和尚撞一天钟”的生活。以上这些干扰不过是一些外界因素,真正对自己一生的发展起作用的是个人的看法、是个人的选择。有人说得好,我们感觉伟人们太伟大,自己不敢仰望,那不是因为他们太高大,而是因为我们自己认为自己太渺小了!李开复老师也说过,做任何事情我们都要反复叩问自己的内心,向人生更远的方向看去,而不是被眼前的喧嚣所迷惑!

 

       向Dijkstra学习!

既熟悉又陌生的鈥湹辖芩固乩

目录
相关文章
|
8月前
|
存储 C++
魔幻而精妙:探秘杨辉三角的奥秘
在这篇文章中,我们将深入研究题目 杨辉三角的内涵与解决方法。杨辉三角是数学领域的一颗璀璨明珠,通过对该问题的解析,笔者将揭示它独特的规律与生成方式。
67 0
|
4月前
|
机器学习/深度学习 算法 Java
「程序员必须掌握的算法」动态规划「中篇」
「程序员必须掌握的算法」动态规划「中篇」
《运筹学基础》——第一遍通读
《运筹学基础》——第一遍通读
《运筹学基础》——第一遍通读
【动态规划上分复盘】这是你熟悉的地下城游戏吗?
【动态规划上分复盘】这是你熟悉的地下城游戏吗?
|
9月前
|
算法 Java Android开发
数据结构与算法 #18 下跳棋,极富想象力的同向双指针模拟
这道题是 LeetCode 上的 [1040. 移动石子直到连续 II](https://leetcode.cn/problems/moving-stones-until-consecutive-ii/),难度是 Meduium,难度分是 2455。虽然是 Medium 题,但是打 Hard 标签一点也不为过。长期作为中等题的难度 Top1,直到去年被 [2289. 使数组按非递减顺序排列 ](https://leetcode.cn/problems/steps-to-make-array-non-decreasing/) 题挤下来。
67 0
数据结构与算法 #18 下跳棋,极富想象力的同向双指针模拟
|
算法 Java 索引
数据结构与算法之美 | 别怕,有我!KMP 算法详解
为什么我认为 KMP 算法就是个动态规划问题呢,等会再解释。对于动态规划,之前多次强调了要明确 dp 数组的含义,而且同一个问题可能有不止一种定义 dp 数组含义的方法,不同的定义会有不同的解法。
数据结构与算法之美 | 别怕,有我!KMP 算法详解
|
算法 测试技术
动态规划真的有那么抽象吗?(递推算法还是动态规划别傻傻分不清了) 以正确的姿势学习动态规划 (入门篇)
动态规划真的有那么抽象吗?(递推算法还是动态规划别傻傻分不清了) 以正确的姿势学习动态规划 (入门篇)
动态规划真的有那么抽象吗?(递推算法还是动态规划别傻傻分不清了) 以正确的姿势学习动态规划 (入门篇)
|
算法 NoSQL 数据挖掘
工程师应该学点算法——图论2
工程师应该学点算法——图论2
工程师应该学点算法——图论2
再学一道算法题: 井字棋
再学一道算法题: 井字棋
|
人工智能 移动开发 算法
再学一道算法题: 种树(贪心)
再学一道算法题: 种树(贪心)

热门文章

最新文章