freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

數(shù)據(jù)結(jié)構(gòu)4清華大學(xué)ppt(存儲版)

2025-02-19 06:34上一頁面

下一頁面
  

【正文】 mp。 MST) { MSTEdgeNodeT, E ed。 i n。 (ed)。 //u加入生成樹頂點(diǎn)集合 count++。 ? 問題解法 ? 邊上權(quán)值非負(fù)情形的單源最短路徑問題 — Dijkstra算法 ? (僅講此算法 ) ? 邊上權(quán)值為任意值的單源最短路徑問題 — Bellman和 Ford算法 ? (不講 ) ? 所有頂點(diǎn)之間的最短路徑 — Floyd算法 ? (不講 ) 14693 邊上權(quán)值非負(fù)情形的 單源最短路徑問題 ? 問題的提法: 給定一個(gè)帶權(quán)有向圖 D與源點(diǎn) v,求從 v到 D中其他頂點(diǎn)的最短路徑。 ? 每次求得一條最短路徑后 , 其終點(diǎn) vk 加入集合 S,然后對所有的 vi ?VS,修改其 dist[i]值。 G, T v, E dist[], int path[]) { //Graph是一個(gè)帶權(quán)有向圖 。 i++) { dist[i] = (v, i)。 //頂點(diǎn) v加入頂點(diǎn)集合 for (i = 0。 dist[j] min) { u = j。 w maxValue amp。完成了這些活動,這個(gè)工程就可以完成了。如果出現(xiàn)了有向環(huán),則意味著某項(xiàng)活動應(yīng)以自己作為先決條件。這種有向圖叫做頂點(diǎn)表示活動的 AOV網(wǎng)絡(luò) (Activity On Vertices)。 0 4 1 2 3 10 50 10 20 60 30 100 序號 頂點(diǎn) 1 頂點(diǎn) 2 頂點(diǎn) 3 頂點(diǎn) 4 Dist 10 50 30 60 path 0 3 0 2 146115 活動網(wǎng)絡(luò) (Activity Network) ? 計(jì)劃、施工過程、生產(chǎn)流程、程序流程等都是“工程”。 if (!S[k] amp。 j++) if (!S[j] amp。 } S[v] = true。 for (i = 0。 ④ 判斷:若 S = V, 則算法結(jié)束,否則轉(zhuǎn) ② 。初始狀態(tài): ? 若從 v0到頂點(diǎn) vi有邊 , 則 dist[i]為該邊的權(quán)值; ? 若從 v0到頂點(diǎn) vi無邊 , 則 dist[i]為 ? 。 ? 注意:當(dāng)各邊有相同權(quán)值時(shí),由于選擇的隨意性,產(chǎn)生的生成樹可能不唯一。 //加入最小生成樹 u = 。 = v。 //最小堆 14685 bool Vmst = new bool[n]。 14683 25 25 10 5 0 4 6 1 3 2 28 10 25 14 24 22 16 18 5 0 4 6 1 3 2 5 0 4 6 1 3 2 10 原圖 (a) (b) 5 0 4 6 1 3 2 10 (c) (d) (e) (f) 5 0 4 6 1 3 2 10 22 12 5 0 4 6 1 2 10 25 14 22 16 12 3 25 22 12 14684 Prim算法的實(shí)現(xiàn) include template class T, class E void Prim (GraphT, Eamp。 14682 普里姆 (Prim)的偽代碼描述 選定構(gòu)造最小生成樹的出發(fā)頂點(diǎn) u0。 //退出具最小權(quán)值的邊 u = ()。 u++) for (v = u+1。 MST) { Kruskal算法的實(shí)現(xiàn) 14678 MSTEdgeNodeT, E ed。 //最大元素個(gè)數(shù)和當(dāng)前個(gè)數(shù) public: MinSpanTree (int sz = DefaultSize1) : MaxSize (sz), n (0) { edgevalue = new MSTEdgeNodeT, E[sz]。 14672 ? 算法的框架 利用 最小堆 (MinHeap)和 并查集(DisjointSets)來實(shí)現(xiàn) 克魯斯卡爾算法 。 14671 Kruskal算法的偽代碼描述 T = ?。 14666 A B C D E F G H I J A B C D E F G H J A B C D E F G H J I I 1 2 3 4 5 6 7 8 9 10 根有兩 個(gè)子女 關(guān)節(jié)點(diǎn) 關(guān)節(jié)點(diǎn) 關(guān)節(jié)點(diǎn) 14667 最小生成樹 ( minimum cost spanning tree ) ? 使用不同的遍歷圖的方法,可以得到不同的生成樹;從不同的頂點(diǎn)出發(fā),也可能得到不同的生成樹。 14657 A C D E B F G O I H J N M L K 非連通無向圖 A H K C D E I B F O G J N M L 非連通圖的連通分量 14664 重連通分量 (Biconnected Component) ? 在無向連通圖 G中 , 當(dāng)且僅當(dāng)刪去 G中的頂點(diǎn) v及所有依附于 v的所有邊后 , 可將圖分割成兩個(gè)或兩個(gè)以上的連通分量,則稱頂點(diǎn) v為 關(guān)節(jié)點(diǎn) 。 //訪問 visited[w] = true。 39。 G, const Tamp。 //下一個(gè)鄰接頂點(diǎn) } }。 //釋放 visited }。 v) { //從頂點(diǎn) v出發(fā)對圖 G進(jìn)行深度優(yōu)先遍歷的主過程 int i, loc, n = ()。 再從 w1 出發(fā) , 訪問與 w1鄰 接 但還 沒有訪問過的頂點(diǎn) w2。 path1是指向 始頂點(diǎn)與該邊相同 的下一條邊的指針;path2是指向 終頂點(diǎn)與該邊相同 的下一條邊的指針。 path1域是鏈接指針 , 指向下一條依附頂點(diǎn) vertex1的邊; path2 是指向下一條依附頂點(diǎn) vertex2的邊鏈接指針。amp。 //對應(yīng)邊鏈表第一個(gè)邊結(jié)點(diǎn) if (p != NULL) return pdest。 i numVertices。 NodeTable = new VertexT, E[maxVertices]。 bool insertEdge (int v1, int v2, E cost)。 //構(gòu)造函數(shù) ~Graphlnk()。 out, GraphlnkT, Eamp。 //頂點(diǎn)的名字 EdgeT, E *adj。此外,把同一個(gè)頂點(diǎn)的所有邊鏈接在一個(gè)單鏈表中,也使得圖的操作更為便捷。對于帶權(quán)圖,邊結(jié)點(diǎn)中還要保存該邊的權(quán)值 cost。 col++) if (Edge[v][col] amp。amp。 i maxVertices。 numEdges = 0。 //取頂點(diǎn) v 的第一個(gè)鄰接頂點(diǎn) 14622 int getNextNeighbor (int v, int w)。 delete [ ]Edge。 //頂點(diǎn)表 E **Edge。 operator ( istreamamp。 //刪去頂點(diǎn) v 和所有與相關(guān)聯(lián)邊 virtual bool removeEdge (int v1, int v2)。 } //返回當(dāng)前頂點(diǎn)數(shù) int NumberOfEdges () { return numEdges。 //最大頂點(diǎn)數(shù) (=n) template class T, class E class Graph { //圖的類定義 protected: int maxVertices。 //函數(shù)返回邊 (v1,v2) 的權(quán)值 int getFirstNeighbor (int v)。 public: Graph()。 ? 回路 若路徑上第一個(gè)頂點(diǎn) v1 與最后一個(gè)頂點(diǎn) vm 重合 , 則稱這樣的路徑為回路或環(huán)。 ? 頂點(diǎn) v 的入度 是以 v 為終點(diǎn)的有向邊的條數(shù) , 記作 ID(v)。? V 且 E39。 ? 完全圖 若有 n 個(gè)頂點(diǎn)的無向圖有 n(n1)/2 條邊 , 則此圖為完全無向圖。amp。 ? 子圖 設(shè)有兩個(gè)圖 G= (V, E) 和 G39。 ? 權(quán) 某些圖的邊具有與它相關(guān)的數(shù) , 稱之為權(quán)。則稱頂點(diǎn)序列 (vi vp1 vp2 ... vpm vj) 為從頂點(diǎn) vi 到頂點(diǎn) vj 的路徑。非連通圖的極大連通子圖叫做連通分量。 //插入一個(gè)頂點(diǎn) vertex, 該頂點(diǎn)暫時(shí)沒有入邊 void insertEdge (int v1, int v2, int weight)。 14612 圖的存儲表示 ? 圖的模板基類 在模板類定義中的數(shù)據(jù)類型參數(shù)表 class T, class E 中, T是頂點(diǎn)數(shù)據(jù)的類型, E是邊上所附數(shù)據(jù)的類型。 //當(dāng)前頂點(diǎn)數(shù) int getVertexPos (T vertex)。 //取邊上權(quán)值 virtual int getFirstNeighbor (int v)。 ? 設(shè)圖 A = (V, E) 是一個(gè)有 n 個(gè)頂點(diǎn)的圖 , 圖的鄰接矩陣是一個(gè)二維數(shù)組 [n][n],定義: ??? ??? , ),( , ,]][[ .否則或者如果01Ed geAEjiEjiji14617 ? 無向圖的鄰接矩陣是對稱的 。 //輸入 14620 friend ostreamamp。 i++) if (VerticesList[i] == Vertex) return i。 i = numVertices ? VerticesList[i] : NULL。 //插入邊 (v1, v2),權(quán)值為 cost bool removeVertex (int v)。 //創(chuàng)建頂點(diǎn)表 Edge = (int **) new int *[maxVertices]。 j++) Edge[i][j] = (i == j) ? 0 : maxWeight。 }。 } return 1。 ? 某條邊 (vi, vj)在鄰接表中有兩個(gè)邊結(jié)點(diǎn),分別在第 i 個(gè)頂點(diǎn)和第 j 個(gè)頂點(diǎn)對應(yīng)的邊鏈表中。 //邊上的權(quán)值 EdgeT, E *link。 operator (istreamamp。 //頂點(diǎn)表 (各邊鏈表的頭結(jié)點(diǎn) ) int getVertexPos (const T vertx) { //給出頂點(diǎn) vertex在圖中的位置 for (int i = 0。 i NumVertices) ? NodeTable[i].data : 0。 int getNextNeighbor (int v, int w)。 } for (int i = 0。 delete p。 14638 template class T, class E int GraphlnkT, E::getNextNeighbor (int v, int w) { //給出頂點(diǎn) v的鄰接頂點(diǎn) w的下一個(gè)鄰接頂點(diǎn)的位置 , //若沒有下一個(gè)鄰接頂點(diǎn) , 則函數(shù)返回 1 if (v != 1) { //頂點(diǎn) v存在 EdgeT, E *p = NodeTable[v].adj。 //下一鄰接頂點(diǎn)不存在 }。 ? 在鄰接多重表中 , 所有依附同一個(gè)頂點(diǎn)的邊都鏈接在同一個(gè)單鏈表中。 data
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1