看動畫學演算法之 環檢測演算法 弗洛伊德的兔子和烏龜

2021-10-09 17:13:36 字數 470 閱讀 7646

環檢測應該是乙個非常常見的演算法問題,怎麼判斷是否有環的問題呢?

乙個很簡單的做法就是用hashset來儲存要遍歷的資料,如果出現了重複就知道這個鍊錶是有環的。但是這個方法需要儲存遍歷過的所有的元素,所以其空間複雜度是o(n)。

有沒有什麼方法可以不用儲存之前的元素也能夠判斷是否有環呢?

來看看弗洛伊德的兔子和烏龜演算法吧。

有的同學會說了,弗洛伊德(sigmund freud)誰不知道,夢的解析的作者,大名鼎鼎的心理學專家,精神分析學派的創始人。

但是這裡我們講的弗洛伊德全名是robert w.floyd(羅伯特·弗洛伊德)而不是sigmund freud。

羅伯特·弗洛伊德是計算機科學家,圖靈獎得主,前後斷言法的創始人,堆排序演算法和floyd-warshall演算法的創始人之一。

它獲得了2023年圖靈獎,是一位「自學成才的計算機科學家」。

這個兔子和烏龜演算法就是他發明的一種環檢測演算法。

看動畫學演算法之 doublyLinkedList

今天我們來學習一下複雜一點的linkedlist doublylinkedlist。和linkedlist相比,doublylinkedlist中的節點除了next指向下乙個節點之外,還有乙個prev之前的乙個節點。所以被稱為doublylinkedlist。doublylinkedlist是乙個雙...

文字檢測之 craft檢測演算法

名稱 character region awareness for text detection 開源 核心思想 本 為2019年南韓學者提出的一種字元級的文字檢測演算法,取得了不錯的檢測效果.craft文字檢測的主要思想 影象分割的思想,採用u net結構,先下取樣再上取樣,非畫素級分割,而是將乙...

目標檢測演算法之SSD

昨天介紹了特徵金字塔網路用於目標檢測,提公升了多尺度目標檢測的魯棒性,今天開始講講one stage目標檢測演算法中ssd演算法。這個演算法是我平時做工程中最常用到的,嚴格來說平時最常用的mobilenet做backbone的ssd演算法,因為要考慮到實際部署的時候的速度要求。本文提出了僅需要單個卷...