算法導論習題 通用匯點
來自習題22.1-6
給出O(V)時間算法判斷有向圖G是否存在一個通用匯點(universal sink)。通用匯點指的是入度為|V|-1,出度為0的節點。
思路:
考慮圖的鄰接矩陣A,假設i為通用匯點,則對於0<=j<n,有A[i][j]=0,且對於所有0<=k<n and k != i,有A[k][i] = 1,註意這裏k!=i
相當於在子矩陣A[0..i][0..i]的右邊和下邊造了一個圍墻,最下邊全是0,最右邊除了右下角外全是1
那麽可以令遊標從矩陣左上角開始,遇1向下,逢0向右,直到行或列超出矩陣A的界限,註意不是子矩陣。此時若遊標所在行沒有超出界限,那和這個行號 r 就可能是通用匯點編號。
接下來再根據定義驗證 r 是否就是通用匯點。因為可能存在以下的情況:
x x x x 1 x x x x x x x 1 x x x x x x x 1 x x x x x x x 1 x x x 0 0 0 0 0 0 0 0 x x x x 0 x x x x x x x 0 x x x x x x x 0 x x x
矩陣第5行所表示的節點顯然不是通用匯點。
算法導論習題 通用匯點
相關推薦
算法導論習題 通用匯點
sink span 可能 != 算法導論 導論 行號 所有 表示 來自習題22.1-6 給出O(V)時間算法判斷有向圖G是否存在一個通用匯點(universal sink)。通用匯點指的是入度為|V|-1,出度為0的節點。 思路: 考慮圖的鄰接矩陣A,假設i為通用匯點,則對
《演算法導論》習題解答 Chapter 22.1-6(求universal sink 通用匯點)
思路:設定兩個遊標i指向行,j指向列,如果arr[i][j]==1,則i=max{i+1,j},j++;如果arr[i][j]==0,則j=max{i+1,j+1}。 虛擬碼: has_universal_sink() for i=1 to N //對
《算法導論》12.3節習題
lac pat clu 當前 date head 鏈表 repl turn 12.3-1 二叉搜索樹insert操作的遞歸版本 void insert1(Node* pRoot, Node* pAdd) { bool bLeft = pAdd->key &
算法導論 practice4
nds 需要 最優 bound argv practice 循環 width system 1、bellman-ford算法 對每條邊松弛|V|-1次。 運行結果如下: (實現的例子) 1 #include<stdio.h> 2 #incl
最長公共子序列--【算法導論】
pan end art blog src http size ret bdc 最長公共子序列:一個序列 S 。假設各自是兩個或多個已知序列的子序列,且是全部符合此條件序列中最長的,則 S 稱為已知序列的最長公共子序列。 其核心非常easy: 這樣,構造子結構就比較簡
算法導論學習筆記(2)-歸並排序
mar 今天 iostream 介紹 font 額外 遞歸 size dsm 今天學習了算法導論上的歸並排序算法,而且完畢了在紙上寫出偽代碼,曾經就學過歸並可是理解的不夠透徹。以 前還一直困惑:為什麽明明歸並排序比快排的時間復雜度更穩定。為什麽庫函數不用歸
點在多邊形內算法,C#判斷一個點是否在一個復雜多邊形的內部
奇數 param list() 如果 集合 c# nal sdn 技術 判斷一點是否在不規則圖像的內部算法,如下圖是由一個個點組成的不規則圖像,判斷某一點是否在不規則矩形內部,先上效果圖 算法實現如下,算法簡單,親試有效 public class Posit
基本數據結構(算法導論)與python
多重 down begin 既然 string app lis 類型 elif 原文鏈接 Stack, Queue Stack是後進先出, LIFO, 隊列為先進先出, FIFO在Python中兩者, 都可以簡單的用list實現,進, 用append()出, Stack
算法導論(四) (1)
-1 int 計數 track clas -a spa namespace ++ #include <iostream> using namespace std; int main() { int a[5]; int b[5];
算法導論第三版思考題8-3.b
har 思考 clas let cnblogs count light highlight true SORT_PROBLEM_B(A) let m be the count of character set let B[0..m-1] be a new array
《算法導論》— Chapter 12 二叉查找樹
左右 表示 每次 期望 sdn print public 隨機構造 keyword 序 查找樹是一種數據結構,它支持多種動態集合操作。包含Search、Minimum、Maximum、PreDecessor、Successor、Insert、Delet
ML: 聚類算法R包-K中心點聚類
logs lib str ini rac 缺點 criterion spa mea K-medodis與K-means比較相似,但是K-medoids和K-means是有區別的,不一樣的地方在於中心點的選取,在K-means中,我們將中心點取為當前clust
算法導論(CLRS)答案
興趣 trees .text rec 3.3 git code enter oba 算法導論(CLRS)答案 Chapter Section I
算法導論筆記——第十~十一章 數據結構(一) 散列
發生 情況 要求 sub 裝載 ted 因子 let 完全 第十章 基本數據結構 棧:可由數組表示 隊列:可由數組表示 指針和對象:可由多數組表示。可用棧表示free list 有根數: 二叉樹:左右孩子 分支無限制:左孩子右兄弟表示法 第十一章 散列表 數組:
算法導論筆記——第十六章 貪心算法
一個 出現 預處理 優化 節點 求解 多選 數據結構 集中 通常用於最優化問題,我們做出一組選擇來達到最優解。每步都追求局部最優。對很多問題都能求得最優解,而且速度比動態規劃方法快得多。 16.1 活動選擇問題 按結束時間排序,然後選擇兼容活動。 定理16.1 考慮任意
【算法導論】第六章、堆排序
兩個 高度 位置 思想 n) 隊列 sigma 復雜 max 基本過程: 1、保持最大堆的性質:假設兩個子堆都滿足,只需要根節點依次換下去,復雜度O(lg n) 2、初始化堆:後半段都是葉子,在前半段從後往前,依次執行上述最大堆性質的操作,名義復雜度是O(n lg n),
【算法導論】第七章、快速排序
很好 補充 第七章 而是 合並 art 元素 一個 排序 快排的優勢: 1、期望為O(n lgn) 2、常數因子比較小 3、就地排序 4、在虛存環境很好工作 與合並排序一樣是分治思想,但是不是從中間截斷,而是通過partition過程實現的 每次選擇最後一個元素為q,然
算法導論22.3深度優先搜索 練習總結 (轉載)
由於 .net -c art 單個 hit 包含 strong 進行 22.3-1 畫一個 3*3 的網格,行和列的擡頭分別標記為白色、灰色和黑色,對於每個表單元 (i, j),請指出對有向圖進行深度優先搜索的過程中,是否可能存在一條邊,鏈接一個顏色為 i 的結點和一個顏色
算法導論22.4拓撲排序 練習總結 (轉載)
裏的 添加 %d closed ace style 數量級 ase ica 22.4-1 給出算法 TOPOLOGICAL-SORT 運行於圖 22-8 上時所生成的結點次序。這裏的所有假設和練習 22.3-2 一樣。 ANSWER: 22.4-2 請給出一個線性時間
算法導論 Exercises 22.5(轉載)
each ecif 內部 森林 ber lan 情況 incr cif Exercises 22.5 - 算法導論.英文第3版 最近看書的同時, 感覺一些練習缺少參考, 所以按部分總結了自己的解答, 也能夠強化學習過程. 如有不足或疑問, 歡迎指正. Ex