《演算法導論》筆記 第22章 總結與思考

2021-06-21 21:58:59 字數 1038 閱讀 8485

a) g_π的根是g的掛接點,當且僅當在g_π中該根頂點至少有兩個子女。

b) 設v是g_π中的某一非根頂點,證明v是g的掛接點當且僅當v有乙個子頂點s,使得不存在從s或s的任何後裔頂點指向v的某個真祖先頂點的反向邊。

c) 設low[v]=min(d[v],d[w]),d[w]:對v的後裔u,(u,w)是反向邊

試說明對所有頂點v∈v,如何在o(e)時間內計算出low[v]。

資料:

const int maxn=1111;  

const int maxm=5111;

int n,m;

struct edgenode;

struct sedge

};

struct bcc_graph

void addedge(int u,int v,int c=0)

//bcc_tarjan

int dfn[maxn],low[maxn],bccno[maxn],dfs_clock,bcc_cnt;

bool iscut[maxn];

vectorbcc[maxn];

stackstk;

int dfs(int u,int fa)

if (bccno[x.v]!=bcc_cnt)

}while (x.u!=u||x.v!=v);

//over

} if (dfn[u]

使用深度優先搜尋,如果某條邊被搜尋到,則標記這條邊為已選擇,並且即使回溯也不能將當前邊的狀態改回未選擇,每次回溯時,記錄回溯路徑。深度優先搜尋結束後,記錄的回溯路徑就是尤拉迴路。

void dfs(int u)

} }

《演算法導論》筆記 第15章 總結與思考

歐幾里得旅行商問題是對平面上給定的n個點,確定一條連線各點的最短閉合旅程的問題。這個解的一般形式為np完全的。j.l.bentley 建議通過只考慮雙調旅程 bitonictour 來簡化問題,這種旅程即為從最左點開始,嚴格地從左到右直至最右點,然後嚴格地從右到左直至出發點。在這種情況下,多項式時間...

《演算法導論》筆記 第22章 22 2 廣度優先搜尋

在給定圖g v,e 和乙個特定的源頂點s的情況下,廣度優先搜尋棵發現從s可達的所有頂點,並計算s到這些可達頂點之間的最短邊數。廣度優先樹,根為s,且包括所有s的可達頂點。樹中從s到v的路徑對應於圖g中從s到v的一條最短路徑,即包含最少邊數的路徑。對有向圖無向圖都適用。如果u處於從根s到頂點v的路徑中...

《演算法導論》筆記 第22章 22 3 深度優先搜尋

深度優先搜尋的先輩子圖形成了乙個由數棵深度優先樹組成的深度優先森林。時間戳每個頂點v有兩個時間戳 當頂點v第一次被發現時,記錄下第乙個時間戳d v 當結束檢查v的鄰接表時,記錄下第二個時間戳f v dfs的執行時間為 v e 深度優先搜尋的性質 括號結構 把發現頂點u用左括號表示,完成用右括號表示,...