计算机技术论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

  • 欢迎访问 计算机技术论坛-电脑迷与初学者的家园!由于论坛管理严格,新注册会员可能遇到各种问题,无法解决的请发邮件 admin@jsjbbs.cn
查看: 1059|回复: 0

算法大神Tarjan

[复制链接]
发表于 2021-4-11 09:51:38 | 显示全部楼层 |阅读模式
#111723#有同窗在进修图论算法的时间,发明这里有个 Tarjan 算法,那边有个 Tarjan 算法,而仿佛 Tarjan 算法处理的成绩并纷歧样,因而十分困惑:Tarjan 算法究竟是指甚么?
这是一个很好的成绩。Tarjan 是盘算机范畴的大牛,发现了良多当初各人耳熟能详的算法或许数据构造,以是有同窗会感到冠他名字的算法有些多。
但假如咱们细心梳理一下,实在并不庞杂。
在这篇文章中,我会率领各人梳理一下 Tarjan 发现的算法都有哪些,团体头绪是怎么的。
留神:在这篇文章中,我不会详细讲授某个算法的道理。然而,我会给出良多详细的要害字,而且标红。假如各人对某个算法想深刻懂得,能够以此为引,在互联网上搜寻进修。
我信任,互联网上对于某个详细算法的材料长短常多的,反而是如许依照某个头绪做总结的文章很少。
起首,Tarjan 是一位美国的盘算机迷信家和数学家,全名 Robert Endre Tarjan。
先来一个 Tarjan 大神的名言镇楼:

个别提起 Tarjan 算法,平日是指 Tarjan 发现的求解有向图的强联通份量算法,全称是Tarjan’s Strongly Connected Components Algorithm.
为甚么这么叫?由于求解有向图的强联通份量另有一个有名算法:Kosaraju 算法。Kosaraju 算法也是以他的发现者的名字定名的。
我在算法竞赛中,或许须要求解 SCC(强连通份量的缩写:Strongly Connected Components) 成绩的时间,爱好写 Kosaraju 算法。由于 Kosaraju 算法的实现十分简略,庞杂度和 Tarjan 算法是一样的,都是 O(V + E) 的。
但现实上,Kosaraju 算法须要遍历两次图,而 Tarjan 算法只要要遍历一次图。以是,Tarjan 算法的机能更高,个别能够高 30% - 40% 阁下。
而 Tarjan 算法之以是着名,要害在于应用 Tarjan 算法的思维,不但仅能够求解 SCC 成绩,还能够求无向图中的桥或许割点。
这就是为甚么,良多同窗看到 Tarjan 算法,做的事件纷歧样,但都叫 Tarjan 算法的缘由。咱们能够把 Tarjan 算法懂得成是一种思维,基于这类思维,能够求解桥,割点,和 SCC 成绩。
所谓的 Tarjan 算法思维,就是在遍历全部图的进程中,对每一个遍历的节点记载一个时光戳,平日被称为是 DFN;同时,记载通过这个节点,不经由父亲节点,最早能回到的时光戳,平日被称为是 LOW。通过这些信息,就能断定一个图的桥,割点,和强连通份量。

但是,Tarjan 的奉献远不止于此。以Tarjan定名的别的一个十分有名的算法,叫Tarjan‘s Off-line Least Common Ancestors Algorithm。
这个算法实质是借助并查集,求解 LCA(近来大众先人的缩写:Least Common Ancestors)成绩。
现实上,离线的 LCA 成绩,是盘算机迷信范畴十分有名的成绩,穷究下去,和Binary Lifting,RMQ等十分有名的算法思维都有接洽。

说到并查集,Tarjan 也和这类数据构造有不解之缘。并查集固然不是 Tarjan 发现的,然而并查集的庞杂度是 Tarjan 起首剖析明白的:也就是Ackerman 函数的反函数。
假如对此感兴致的同窗,能够翻看《算法导论》,《算法导论》对这部份内容先容得很明白。
现实上,这也是《算法导论》这本课本的意思:略微深刻一些的算法剖析成绩,个别的算法课本都不会触及。而《算法导论》所笼罩的深度和广度,比大少数课本都高太多。
固然,这也是《算法导论》不合适入门的缘由。

说到数据构造,Tarjan 确切发现过数据构造。最着名的两个,一个是斐波那契堆,一个是Splay 树。
Splay 树固然不保障必定均衡,但各个操纵的均派庞杂度是 O(logn) 级其余。
Splay 树最大的上风是实现简略,比红黑树简略不晓得几多倍。以是,假如咱们须要挪用愈加底层的树操纵,须要本人实现一个自均衡的二分搜寻树时,平日 Splay 树是首选。
也正由于如斯,良多搞比赛的同窗,都是妙手写 Splay 树的。
Tarjan 仍是十分有名的算法:BFPRT的作者之一。实在 BFPRT 这个算法的名字,是其五个作者首字母的缩写。此中的 T,就是 Tarjan。
BFPRT 这个名字听起来十分拗口,同时也难记,然而它的另一个名字就很简略直接了,就是Median of Medians。
这个算法团体并不难懂得,是快排思维的一种更稳固的优化,每次近乎能够保障拔取所处置的数组的中位数作为标定点(pivot),使得疾速排序的最差时光庞杂度真真正正到达了 O(nlogn)。
值得一提的是,BFPRT 算法的这五位作者,都是盘算机迷信范畴的大牛。他们分辨是:
B是 Blum,全名 Manuel Blum,他由于庞杂度实践方面的奉献,以及暗码学的利用,取得了 1995 年的图灵奖;
F是 Floyd,全名 Robert W. Floyd,信任各人都很熟习。各人在算法讲义上必定会学到的全部点对的最短门路算法,就是他和 Warshall 一同提出的,即Floyd–Warshall 算法。同时,Floyed 还提出了十分有名的Floyed 环检测算法。他取得了 1978 年的图灵奖;
P是 Pratt,全名 Vaughan Pratt,是斯坦福的教学;
R是 Rivest,全名 Ron Rivest。他是 MIT 的教学,专攻暗码学。咱们当初所常常应用的MD5 算法,他就是作者之一;
最后的T,就是这篇文章的配角:Tarjan,全名 Robert Endre Tarjan。
在图论范畴,Tarjan 还改良了一个十分有名的算法:最小树形图。最小树形图这个名字听起来很庞杂,但实在这个观点很简略:就是有向图的最小天生树。
处理最小树形图成绩,有一个十分朴实的算法,叫朱刘算法。听这个名字各人也晓得,这是两位华人迷信家起首提出来的算法,在论文记录中,分辨是 Y.J. Chu 和 T.H. Liu 在 1965 年提出来的。朱刘算法的时光庞杂度是 O(VE) 的。
厥后,Tarjan 改良了这个算法,能够应用 O(ElogV) 的时光做预处置,以后应用 O(V) 的时光,求解图中以恣意极点为根的最小树形图
Tarjan 还发现了一种立体图的检测算法,初次在线性时光处理了立体图检测成绩(Planarity-Testing)。由于立体图检测离大少数同窗的任务比拟远,以是可能很少有同窗懂得这个算法。
Tarjan 的立体图检测算法另有一个配合者:John Hopcroft。他们二人由于这个算法,以及在算法和数据构造等基本范畴对盘算机迷信的奉献,取得了 1986 年的图灵奖。
Tarjan 的硕士和博士是在斯坦福大学读的。他的导师有两个。一个就是台甫鼎鼎的 Floyd,上文先容 BFPRT 算法的时间先容了。在这里给一个年青的时间,Floyd 风骚俶傥的帅照:

Tarjan 的另一位导师,则是盘算机迷信范畴的神级人物:Donald Knuth。他能够说是盘算庞杂范畴的开创人。
Donald Knuth 的阅历和奉献,能够写一本书了。偶然间,我会再写一篇文章先容他。当初,良多人懂得他,都是由于他的神作:TAOCP,即The Art of Computer Programming,被中文翻译成《盘算机顺序计划艺术》。这套书被评为至今盘算机迷信史上最主要的神作,但实在还没有写完。

不外 Donald Knuth 对盘算机迷信范畴的奉献,远不止一套书这么简略。要聊 Donald Knuth 的话,能聊的就太多。这篇文章咱们收一收,说回 Tarjan。
Tarjan 当初还活着,往年曾经 72 岁了。依据维基百科,当初 Tarjan 在普林斯顿任教。
现实上,在盘算机迷信范畴,良多在教科书中呈现的人物,都还活着;良多教科书级其余算法,观点,实践,实在间隔提出,也不外是几十年的时光。
这足以可见:盘算机是如许年青的一个学科。
也恰是由于这个缘由,在盘算机迷信范畴中,另有大批的没有被完整处理的成绩。
盘算机迷信范畴实在还大有可为。
xj
原文题目:Tarjan 这个算法大神
文章出处:【微信大众号:算法与数据构造】欢送增加存眷!文章转载请注明出处。

更多内容阅读推荐:空调堵塞漏水怎么维修
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

无图版|手机版|计算机技术论坛 JSJBBS.CN @ 2008-2024 ( 鲁ICP备17021708号 )

技术支持 : 北京康盛新创科技有限责任公司

快速回复 返回顶部 返回列表