日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

算法大神Tarjan

算法與數(shù)據(jù)結(jié)構(gòu) ? 來源:算法與數(shù)據(jù)結(jié)構(gòu) ? 作者:算法與數(shù)據(jù)結(jié)構(gòu) ? 2021-01-04 14:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

有同學(xué)在學(xué)習(xí)圖論算法的時(shí)候,發(fā)現(xiàn)這里有個(gè) Tarjan 算法,那里有個(gè) Tarjan 算法,而似乎 Tarjan 算法解決的問題并不一樣,于是非常迷惑:Tarjan 算法到底是指什么?

這是一個(gè)很好的問題。Tarjan 是計(jì)算機(jī)領(lǐng)域的大牛,發(fā)明了很多現(xiàn)在大家耳熟能詳?shù)乃惴ɑ蛘邤?shù)據(jù)結(jié)構(gòu),所以有同學(xué)會(huì)覺得冠他名字的算法有些多。

但如果我們仔細(xì)梳理一下,其實(shí)并不復(fù)雜。

在這篇文章中,我會(huì)帶領(lǐng)大家梳理一下 Tarjan 發(fā)明的算法都有哪些,整體脈絡(luò)是怎樣的。

注意:在這篇文章中,我不會(huì)具體講解某個(gè)算法的原理。但是,我會(huì)給出很多具體的關(guān)鍵字,并且標(biāo)紅。如果大家對(duì)某個(gè)算法想深入了解,可以以此為引,在互聯(lián)網(wǎng)上搜索學(xué)習(xí)。

我相信,互聯(lián)網(wǎng)上關(guān)于某個(gè)具體算法的資料是非常多的,反而是這樣按照某個(gè)脈絡(luò)做總結(jié)的文章很少。

首先,Tarjan 是一名美國的計(jì)算機(jī)科學(xué)家和數(shù)學(xué)家,全名 Robert Endre Tarjan。

先來一個(gè) Tarjan 大神的名言鎮(zhèn)樓:

一般提起 Tarjan 算法,通常是指 Tarjan 發(fā)明的求解有向圖的強(qiáng)聯(lián)通分量算法,全稱是Tarjan’s Strongly Connected Components Algorithm.

為什么這么叫?因?yàn)榍蠼庥邢驁D的強(qiáng)聯(lián)通分量還有一個(gè)著名算法:Kosaraju 算法。Kosaraju 算法也是以他的發(fā)明者的名字命名的。

我在算法比賽中,或者需要求解 SCC(強(qiáng)連通分量的縮寫:Strongly Connected Components) 問題的時(shí)候,喜歡寫 Kosaraju 算法。因?yàn)?Kosaraju 算法的實(shí)現(xiàn)非常簡單,復(fù)雜度和 Tarjan 算法是一樣的,都是 O(V + E) 的。

但實(shí)際上,Kosaraju 算法需要遍歷兩次圖,而 Tarjan 算法只需要遍歷一次圖。所以,Tarjan 算法的性能更高,一般可以高 30% - 40% 左右。

而 Tarjan 算法之所以有名,關(guān)鍵在于使用 Tarjan 算法的思想,不僅僅可以求解 SCC 問題,還可以求無向圖中的橋或者割點(diǎn)。

這就是為什么,很多同學(xué)看到 Tarjan 算法,做的事情不一樣,但都叫 Tarjan 算法的原因。我們可以把 Tarjan 算法理解成是一種思想,基于這種思想,可以求解橋,割點(diǎn),和 SCC 問題。

所謂的 Tarjan 算法思想,就是在遍歷整個(gè)圖的過程中,對(duì)每一個(gè)遍歷的節(jié)點(diǎn)記錄一個(gè)時(shí)間戳,通常被稱為是 DFN;同時(shí),記錄通過這個(gè)節(jié)點(diǎn),不經(jīng)過父親節(jié)點(diǎn),最早能回到的時(shí)間戳,通常被稱為是 LOW。通過這些信息,就能判斷一個(gè)圖的橋,割點(diǎn),和強(qiáng)連通分量。

2ae9bf46-4423-11eb-8b86-12bb97331649.png

然而,Tarjan 的貢獻(xiàn)遠(yuǎn)不止于此。以Tarjan命名的另外一個(gè)非常著名的算法,叫Tarjan‘s Off-line Least Common Ancestors Algorithm。

這個(gè)算法本質(zhì)是借助并查集,求解 LCA(最近公共祖先的縮寫:Least Common Ancestors)問題。

實(shí)際上,離線的 LCA 問題,是計(jì)算機(jī)科學(xué)領(lǐng)域非常著名的問題,深究下去,和Binary Lifting,RMQ等非常著名的算法思想都有聯(lián)系。

2b0ed164-4423-11eb-8b86-12bb97331649.png

說到并查集,Tarjan 也和這種數(shù)據(jù)結(jié)構(gòu)有不解之緣。并查集雖然不是 Tarjan 發(fā)明的,但是并查集的復(fù)雜度是 Tarjan 首先分析清楚的:也就是Ackerman 函數(shù)的反函數(shù)。

如果對(duì)此感興趣的同學(xué),可以翻看《算法導(dǎo)論》,《算法導(dǎo)論》對(duì)這部分內(nèi)容介紹得很清楚。

實(shí)際上,這也是《算法導(dǎo)論》這本教材的意義:稍微深入一些的算法分析問題,一般的算法教材都不會(huì)涉及。而《算法導(dǎo)論》所覆蓋的深度和廣度,比大多數(shù)教材都高太多。

當(dāng)然,這也是《算法導(dǎo)論》不適合入門的原因。

說到數(shù)據(jù)結(jié)構(gòu),Tarjan 確實(shí)發(fā)明過數(shù)據(jù)結(jié)構(gòu)。最有名的兩個(gè),一個(gè)是斐波那契堆,一個(gè)是Splay 樹。

Splay 樹雖然不保證一定平衡,但各個(gè)操作的均攤復(fù)雜度是 O(logn) 級(jí)別的。

Splay 樹最大的優(yōu)勢(shì)是實(shí)現(xiàn)簡單,比紅黑樹簡單不知道多少倍。所以,如果我們需要調(diào)用更加底層的樹操作,需要自己實(shí)現(xiàn)一個(gè)自平衡的二分搜索樹時(shí),通常 Splay 樹是首選。

也正因?yàn)槿绱?,很多搞競賽的同學(xué),都是能手寫 Splay 樹的。

Tarjan 還是非常著名的算法:BFPRT的作者之一。其實(shí) BFPRT 這個(gè)算法的名字,是其五個(gè)作者首字母的縮寫。其中的 T,就是 Tarjan。

BFPRT 這個(gè)名字聽起來非常拗口,同時(shí)也難記,但是它的另一個(gè)名字就很簡單直接了,就是Median of Medians。

這個(gè)算法整體并不難理解,是快排思想的一種更穩(wěn)定的優(yōu)化,每次近乎可以保證選取所處理的數(shù)組的中位數(shù)作為標(biāo)定點(diǎn)(pivot),使得快速排序的最差時(shí)間復(fù)雜度真真正正達(dá)到了 O(nlogn)。

值得一提的是,BFPRT 算法的這五位作者,都是計(jì)算機(jī)科學(xué)領(lǐng)域的大牛。他們分別是:

B是 Blum,全名 Manuel Blum,他因?yàn)閺?fù)雜度理論方面的貢獻(xiàn),以及密碼學(xué)的應(yīng)用,獲得了 1995 年的圖靈獎(jiǎng);

F是 Floyd,全名 Robert W. Floyd,相信大家都很熟悉。大家在算法課本上一定會(huì)學(xué)到的所有點(diǎn)對(duì)的最短路徑算法,就是他和 Warshall 一起提出的,即Floyd–Warshall 算法。同時(shí),F(xiàn)loyed 還提出了非常著名的Floyed 環(huán)檢測算法。他獲得了 1978 年的圖靈獎(jiǎng);

P是 Pratt,全名 Vaughan Pratt,是斯坦福的教授;

R是 Rivest,全名 Ron Rivest。他是 MIT 的教授,專攻密碼學(xué)。我們現(xiàn)在所經(jīng)常使用的MD5 算法,他就是作者之一;

最后的T,就是這篇文章的主角:Tarjan,全名 Robert Endre Tarjan。

在圖論領(lǐng)域,Tarjan 還改進(jìn)了一個(gè)非常著名的算法:最小樹形圖。最小樹形圖這個(gè)名字聽起來很復(fù)雜,但其實(shí)這個(gè)概念很簡單:就是有向圖的最小生成樹。

解決最小樹形圖問題,有一個(gè)非常樸素的算法,叫朱劉算法。聽這個(gè)名字大家也知道,這是兩位華人科學(xué)家首先提出來的算法,在論文記載中,分別是 Y.J. Chu 和 T.H. Liu 在 1965 年提出來的。朱劉算法的時(shí)間復(fù)雜度是 O(VE) 的。

后來,Tarjan 改進(jìn)了這個(gè)算法,可以使用 O(ElogV) 的時(shí)間做預(yù)處理,之后使用 O(V) 的時(shí)間,求解圖中以任意頂點(diǎn)為根的最小樹形圖

Tarjan 還發(fā)明了一種平面圖的檢測算法,首次在線性時(shí)間解決了平面圖檢測問題(Planarity-Testing)。因?yàn)槠矫鎴D檢測離大多數(shù)同學(xué)的工作比較遠(yuǎn),所以可能很少有同學(xué)了解這個(gè)算法。

Tarjan 的平面圖檢測算法還有一個(gè)合作者:John Hopcroft。他們二人因?yàn)檫@個(gè)算法,以及在算法和數(shù)據(jù)結(jié)構(gòu)等基礎(chǔ)領(lǐng)域?qū)τ?jì)算機(jī)科學(xué)的貢獻(xiàn),獲得了 1986 年的圖靈獎(jiǎng)。

Tarjan 的碩士和博士是在斯坦福大學(xué)讀的。他的導(dǎo)師有兩個(gè)。一個(gè)就是大名鼎鼎的 Floyd,上文介紹 BFPRT 算法的時(shí)候介紹了。在這里給一個(gè)年輕的時(shí)候,F(xiàn)loyd 風(fēng)流倜儻的帥照:

Tarjan 的另一名導(dǎo)師,則是計(jì)算機(jī)科學(xué)領(lǐng)域的神級(jí)人物:Donald Knuth。他可以說是計(jì)算復(fù)雜領(lǐng)域的創(chuàng)始人。

Donald Knuth 的經(jīng)歷和貢獻(xiàn),可以寫一本書了。有時(shí)間,我會(huì)再寫一篇文章介紹他?,F(xiàn)在,很多人了解他,都是因?yàn)樗纳褡鳎篢AOCP,即The Art of Computer Programming,被中文翻譯成《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》。這套書被評(píng)為至今計(jì)算機(jī)科學(xué)史上最重要的神作,但其實(shí)還沒有寫完。

不過 Donald Knuth 對(duì)計(jì)算機(jī)科學(xué)領(lǐng)域的貢獻(xiàn),遠(yuǎn)不止一套書這么簡單。要聊 Donald Knuth 的話,能聊的就太多。這篇文章我們收一收,說回 Tarjan。

Tarjan 現(xiàn)在還在世,今年已經(jīng) 72 歲了。根據(jù)維基百科,現(xiàn)在 Tarjan 在普林斯頓任教。

實(shí)際上,在計(jì)算機(jī)科學(xué)領(lǐng)域,很多在教科書中出現(xiàn)的人物,都還在世;很多教科書級(jí)別的算法,概念,理論,其實(shí)距離提出,也不過是幾十年的時(shí)間。

這足以可見:計(jì)算機(jī)是多么年輕的一個(gè)學(xué)科。

也正是因?yàn)檫@個(gè)原因,在計(jì)算機(jī)科學(xué)領(lǐng)域中,還有大量的沒有被完全解決的問題。

計(jì)算機(jī)科學(xué)領(lǐng)域其實(shí)還大有可為。

責(zé)任編輯:xj

原文標(biāo)題:Tarjan 這個(gè)算法大神

文章出處:【微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4810

    瀏覽量

    98619
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7842

    瀏覽量

    93498

原文標(biāo)題:Tarjan 這個(gè)算法大神

文章出處:【微信號(hào):TheAlgorithm,微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    PID控制的算法

    PID及其衍生算法是應(yīng)用最廣泛的算法之一,是當(dāng)之無愧的萬能算法,如果能夠熟練掌握PID算法的設(shè)計(jì)與實(shí)現(xiàn)過程,對(duì)于一般的研發(fā)人員來講,應(yīng)該是足夠應(yīng)對(duì)一般研發(fā)問題了,而難能可貴的是,在我所
    發(fā)表于 01-23 08:18

    C語言增量式PID的通用算法

    C語言增量式PID通用算法控制算法中PID使用的非常廣泛,但是在網(wǎng)上找代碼的時(shí)候發(fā)現(xiàn)好多代碼都不夠通用,需要自己改好多東西,而且當(dāng)一個(gè)項(xiàng)目需要使用多個(gè)PID控制器時(shí)也頗為麻煩,這里設(shè)計(jì)一個(gè)通用的增量
    發(fā)表于 01-14 08:28

    ADC的采樣濾波算法利用卡爾曼濾波算法

    , text{δ2為測量噪聲} end{cases} { Xk+1?=Xk?+δ1?,Zk+1?=Xk+1?+δ2?,?δ1?為系統(tǒng)噪聲δ2?為測量噪聲? 2 卡爾曼濾波算法 我們知道卡爾曼濾波算法
    發(fā)表于 12-01 07:44

    單片機(jī)的算法

    平滑濾波算法 設(shè)置一個(gè)數(shù)據(jù)緩存區(qū),每新采集一個(gè)數(shù)據(jù)便存入暫存區(qū)中,同時(shí)去掉一個(gè)最老數(shù)據(jù),保存這N個(gè)數(shù)據(jù)始終是最新更新的數(shù)據(jù)。采用環(huán)型隊(duì)列結(jié)構(gòu)可以方便地實(shí)現(xiàn)這種數(shù)據(jù)存放方式。 #define
    發(fā)表于 11-28 08:19

    C語言的常見算法

    # C語言常見算法 C語言中常用的算法可以分為以下幾大類: ## 1. 排序算法 ### 冒泡排序 (Bubble Sort) ```c void bubbleSort(int arr
    發(fā)表于 11-24 08:29

    8種常用的CRC算法分享

    CRC 計(jì)算單元可按所選擇的算法和參數(shù)配置來生成數(shù)據(jù)流的 CRC 碼。有些應(yīng)用中,可利用 CRC 技術(shù)來驗(yàn)證數(shù)據(jù)的傳輸和存儲(chǔ)的完整性。 8 種常用的 CRC 算法,包括: CRC16_IBM
    發(fā)表于 11-13 07:25

    SM4算法實(shí)現(xiàn)分享(一)算法原理

    SM4分組加密算法采用的是非線性迭代結(jié)構(gòu),以字為單位進(jìn)行加密、解密運(yùn)算,每次迭代稱為一輪變換,每輪變換包括S盒變換、非線性變換、線性變換、合成變換。加解密算法與密鑰擴(kuò)展都是采用32輪非線性迭代結(jié)構(gòu)
    發(fā)表于 10-30 08:10

    SM4算法原理及分享1

    SM4算法是一種分組密碼算法。其分組長度為128bit,密鑰長度也為128bit。加密算法與密鑰擴(kuò)展算法均采用32輪非線性迭代結(jié)構(gòu),以字(32位)為單位進(jìn)行加密運(yùn)算,每一次迭代運(yùn)算均
    發(fā)表于 10-30 06:54

    國密系列算法簡介及SM4算法原理介紹

    一、 國密系列算法簡介 國家商用密碼算法(簡稱國密/商密算法),是由我國國家密碼管理局制定并公布的密碼算法標(biāo)準(zhǔn)。其分類1所示: 圖1 國家商用密碼
    發(fā)表于 10-24 08:25

    加密算法的應(yīng)用

    加密是一種保護(hù)信息安全的重要手段,近年來隨著信息技術(shù)的發(fā)展,加密技術(shù)的應(yīng)用越來越廣泛。本文將介紹加密算法的發(fā)展、含義、分類及應(yīng)用場景。 1. 加密算法的發(fā)展 加密算法的歷史可以追溯到古代。在
    發(fā)表于 10-24 08:03

    基于FPGA的CLAHE圖像增強(qiáng)算法設(shè)計(jì)

    CLAHE圖像增強(qiáng)算法又稱為對(duì)比度有限的自適應(yīng)直方圖均衡算法,其算法原理是通過有限的調(diào)整圖像局部對(duì)比度來增強(qiáng)有效信號(hào)和抑制噪聲信號(hào)。
    的頭像 發(fā)表于 10-15 10:14 ?826次閱讀
    基于FPGA的CLAHE圖像增強(qiáng)<b class='flag-5'>算法</b>設(shè)計(jì)

    DFT算法與FFT算法的優(yōu)劣分析

    一概述 在諧波分析儀中,我們常常提到的兩個(gè)詞語,就是DFT算法與FFT算法,那么一款功率分析儀/諧波分析儀采用DFT算法或者FFT算法,用戶往往關(guān)注的是能否達(dá)到所要分析諧波次數(shù)的目的,
    的頭像 發(fā)表于 08-04 09:30 ?1807次閱讀

    思必馳聲音復(fù)刻算法獲得深度合成服務(wù)算法備案

    近日,國家互聯(lián)網(wǎng)信息辦公室正式發(fā)布第十二批深度合成服務(wù)算法備案信息,思必馳聲音復(fù)刻算法通過此次備案。該算法能夠高精度復(fù)刻人類聲音,為個(gè)性化語音服務(wù)、智能客服、語音交互等多個(gè)領(lǐng)域提供強(qiáng)有力的技術(shù)支持。目前,思必馳已有6項(xiàng)
    的頭像 發(fā)表于 07-31 17:42 ?1035次閱讀

    打破壁壟,方波算法的局限與弦波算法的優(yōu)勢(shì)--【其利天下】

    目前市面上的無刷小風(fēng)扇大多采用方波算法,存在噪音大等痛點(diǎn)。在一個(gè)星期前,弦波算法的小風(fēng)扇尚未出現(xiàn),但是現(xiàn)在其利天下技術(shù)有限公司已率先布局,采用FOC算法,即弦波算法,有望打破這一局限。
    的頭像 發(fā)表于 06-21 18:02 ?873次閱讀
    打破壁壟,方波<b class='flag-5'>算法</b>的局限與弦波<b class='flag-5'>算法</b>的優(yōu)勢(shì)--【其利天下】

    FPGA 大神 Adam Taylor 使用 ALINX VD100(AMD Versal系列)開發(fā)平臺(tái)實(shí)現(xiàn)圖像處理

    本篇文章來自 FPGA 大神、Ardiuvo XVtc VtcInst;VideoMode video;XVtc_Config *vtc_config ;int main
    的頭像 發(fā)表于 05-16 09:46 ?2452次閱讀
    FPGA <b class='flag-5'>大神</b> Adam Taylor 使用 ALINX VD100(AMD Versal系列)開發(fā)平臺(tái)實(shí)現(xiàn)圖像處理
    云林县| 修武县| 安福县| 海宁市| 宁波市| 靖州| 泰顺县| 浠水县| 湘阴县| 宁陕县| 莱芜市| 满城县| 沙坪坝区| 雷州市| 梓潼县| 巍山| 宣汉县| 惠州市| 三穗县| 英德市| 福清市| 太原市| 满洲里市| 仪陇县| 凤山市| 通山县| 安福县| 湖北省| 廉江市| 安西县| 定陶县| 福建省| 拉萨市| 德江县| 新乡县| 泸西县| 烟台市| 加查县| 南雄市| 民丰县| 平利县|