對樹的直徑的一點理解

2021-10-03 01:42:27 字數 319 閱讀 8302

可以通過樹上任意一點bfs到最遠點,然後從最遠點再bfs一遍,即可得到樹的直徑。

為什麼結果這樣的過程必然會求得樹的直徑?因為按照無根樹的重心來劃分,任意一點要不在以重心為根的子樹中,要不就在重心。

重心的劃分使得子樹最大深度最小,容易推得:最大深度的子樹和最小深度的子樹深度相差不超過1,否則可以繼續調整重心。

也就容易推得,距離任意一點最遠的點的路徑上的點必然經過重心,如果不經過重心,至少存在一條經過重心的路徑比當前最遠路徑長。

樹的半徑本質就是以重心為根的次大深度和最大深度之和。

兩遍bfs必然經過次大深度和最大深度。所以兩邊bfs求直徑足矣。

對 threadfence的一點理解

一直沒搞清楚,cuda 2.2版增加的 threadfence到底有何作用,直到今天看到sdk 3.0手冊 中的下面例子才恍然大悟.中文為我的理解,嘿嘿 乙個求和的例子 device unsigned int count 0 統計有幾個block結束的變數 shared bool islastblo...

對GBDT的一點理解

gbdt由一系列的回歸樹組成,如下圖所示 樹的深度未必都要一樣,下圖僅為示意圖 gbdt原理 針對每乙個類別訓練一系列的回歸樹,再累加每個類別回歸樹的 值得到針對每個類別的最終的 值。單獨拿乙個類別來說,訓練的過程中假設需要 的值為f xi 實際的值為yi 有loss function l yi,f...

對block的一點理解

對block的理解 block宣告的寫法 property strong,nonatomic void block void property copy,nonatomic void block void block的本質 就是oc的物件,內部也有isa指標,block是封裝了函式呼叫以及函式呼叫環...