高產的計算機科學家 Tarjan

2021-08-09 11:24:23 字數 2163 閱讀 5008

提到 robert tarjan 這個人大家可能會立刻聯想起著名的強連通分量 tarjan 演算法,然而這只是他提出的眾多演算法中的乙個。

本文會簡單引用一些資料介紹 robert tarjan 這位偉大而高產的計算機科學家並簡單介紹一下他提出的幾個重要的演算法與資料結構。

robert tarjan在多所大學擔任學術職務,如:康奈爾大學(1972-2023年),加州大學伯克利分校(1973-1975),史丹福大學(1974-1980),紐約大學(1981-1985)。 他也加入過nec研究所(1989-1997),並在美國麻省理工學院(2023年)擔任visiting scientist 。

曾在at&t貝爾實驗室(1980-1989),浩信科技(1997-2001),康柏(2023年)和惠普(2023年至今)工作。 他曾加入acm和ieee委員會,並曾為幾家期刊的編輯。

tarjan與約翰霍普克羅夫特共同於2023年獲得圖靈獎。

tarjan還於2023年當選為acm院士。

tarjan其他獎項包括:

奈望林納獎資訊科學(1983第乙個獲獎者)

國家科學院的研究倡議獎 (1984)

巴黎kanellakis獎-理論與實踐( acm1999)

帕斯卡獎章數學與電腦科學( 歐洲科學院2004)

加州理工學院傑出校友獎( 美國加州技術研究所2010)

tarjan 最近公共祖先離線演算法可以以 o(log n) 的時間複雜度計算一棵樹上兩個節點的最近公共祖先。

通過倍增的思想離線處理出樹上每個點的深度差為 2 的冪次的祖先,詢問的時候只要讓兩點跳到相同深度的祖先並向上尋找最近的公共祖先。

int lca(int x,int y)

int dfs(int u)

}

tarjan 強連通演算法是在 o(n) 的時間複雜度下找出一張有向圖的所有的強聯通分量。

它利用了 dfs 與時間戳,維護了每個點的後繼節點能訪問到的最早的時間戳low,並通過 low 和 dfs 序來判斷是否存在環。

stack

q;void tarjan(int u)

else

if (!bl[v]) low[u]=min(low[u],dfn[v]);

}if (low[u]==dfn[u])}}

link-cut tree是乙個建立在 splay 上的演算法。

它可以支援樹形態的轉換,比如說合併兩棵樹,將樹的一部分切去,尋找某個點當前所處樹的根,並可以維護在樹上的資訊。

link-cut tree的每個操作時間複雜度都是 o(log n) 的。

值得一提的是 link-cut tree 和 splay 都是 daniel dominic sleator 和 robert endre tarjan 共同提出的。

void up(int x)

void rot(int x)

fa[x]=z; fa[y]=x; fa[c[x][r]]=y;

c[y][l]=c[x][r]; c[x][r]=y;

up(y); up(x);

}void splay(int x)

rot(x);

}}bool isroot(int x)

void access(int x)

}void makeroot(int x)

void link(int x,int y)

void cut(int x,int y)

void split(int x,int y)

tarjan 他老人家還提出過非常多實用高效的演算法,鑑於本人的水平有限只能列舉上述幾個著名的演算法。

可以看出 tarjan 對演算法世界帶來的巨大貢獻。希望我們都能好好學習理解並應用 tarjan 提出的眾多演算法,並學習他高產背後的科學精神。

科學家用超級計算機破解世紀數學難題

科學家用超級計算機破解世紀數學難題 據西班牙 世界報 4月2 1 道,西班牙加泰隆尼亞研究人員日前成功破解了乙個困擾全世界數學家近1個世紀的古老而又重大的數學問題.一台名為 世界盡頭 的超級計算機為加泰隆尼亞理工大學的專家破解這個名為 費克特 fekete 問題 的數學難題打下了基礎,這台計算機也被...

深度 科學家眼中完美的計算機長什麼樣?

所謂 完美 計算機也許要由深度學習技術孕育而出。據羅伯特 j 索耶在 計算中的上帝 描述,在我們創造的人工智慧體眼中,我們就是上帝。那麼,作為無所不能的上帝,我們又需要多麼完美的計算機?答案可以脫口而出,速度無窮快,儲存無窮大,介面無窮智慧型 別鬧,幻想可以到此打住。回到溫暖真實的現實中,深度學習科...

電腦科學

電腦科學就是研究計算 如何表示和處理資訊。解決問題 你將學會各種演算法策略,比如分而治之法 遞迴 探索法 貪婪搜尋和隨機演算法,它們可以幫你分解和解決任何一種問題。邏輯 你開始使用更準確和正式的方式進行思考,比如抽象 布林邏輯 數字理論和集合理論,你因此能夠以一種嚴謹的方式來解決問題。資料 你接觸到...