§3.4 传递闭包及WARSHALL算法.

Slides:



Advertisements
Similar presentations
請按左鍵換頁 為人的藝術 ~善緣貴人多~ 廣結善緣 1. 有什麼觀念,就有什麼行為; 有什麼行為,就有什麼習慣; 有什麼習慣,就有什麼性格; 有什麼性格,就有什麼命運。 2. 對長輩謙虛是本分,對平輩謙虛是修養, 對 晚輩謙虛是高貴,對所有人謙虛是安全。 3. 廣結善緣,圓融的人際關係( EQ ):
Advertisements

第八章 第四节 机动 目录 上页 下页 返回 结束 一个方程所确定的隐函数 及其导数 隐函数的微分法.
2.3 函数的微分. 四川财经职业学院 课前复习 高阶导数的定义和计算方法。 作业解析:
幼小課程統合與銜接 楊朝祥 中原大學講座教授.
機關改制(含員工權益保障)業務簡介 報告人:王奐寅 100年6月24日.
复习: :对任意的x∈A,都有x∈B。 集合A与集合B间的关系 A(B) A B :存在x0∈A,但x0∈B。 A B A B.
聚焦文化竞争力.
追求阳光心态 做一个心理健康的人 上海市徐汇区精神卫生中心 吴洪明.
概其要、析其理 ——议论文事实论据修改 昌平二中 王丽娟
“悦”读,飞越 “考场” 心神飞越 温州中学 郑可菜.
第五章 二次型. 第五章 二次型 知识点1---二次型及其矩阵表示 二次型的基本概念 1. 线性变换与合同矩阵 2.
第四章 二元关系 4.1 二元关系及其表示法 序偶与笛卡尔积
第三章 函数逼近 — 最佳平方逼近.
天净沙·秋思 马致远 枯藤老树昏鸦, 小桥流水人家, 古道西风瘦马。 夕阳西下, 断肠人在天涯。
§1 线性空间的定义与性质 ★线性空间的定义 ★线性空间的性质 ★线性空间的子空间 线性空间是线性代数的高等部分,是代数学
数 学 分 析 第九章 定积分 第二节 微积分学基本公式 主讲:师建国.
§5.3 定积分的换元法 和分部积分法 一、 定积分的换元法 二、 定积分的分部积分法 三、 小结、作业.
第三节 格林公式及其应用(2) 一、曲线积分与路径无关的定义 二、曲线积分与路径无关的条件 三、二元函数的全微分的求积 四、小结.
第二章 导数与微分 第二节 函数的微分法 一、导数的四则运算 二、复合函数的微分法.
2-7、函数的微分 教学要求 教学要点.
屏東縣105年度 友善校園事務與輔導工作- 國中適性輔導工作專業知能研習(初階課程) 桌遊在班級經營與學生輔導 之應用與連結
专题研讨课二: 数组在解决复杂问题中的作用
第5章 §5.3 定积分的积分法 换元积分法 不定积分 分部积分法 换元积分法 定积分 分部积分法.
第二章 矩阵(matrix) 第8次课.
第2讲 绪论(二).
!!! 请记住:矩阵是否等价只须看矩阵的秩是否相同。
§2 求导法则 2.1 求导数的四则运算法则 下面分三部分加以证明, 并同时给出相应的推论和例题 .
循环比赛的名次 6支球队比赛结果 n支球队循环赛,每场比赛只计胜负,没有平局。 根据比赛结果排出各队名次
使用矩阵表示 最小生成树算法.
四、投影运算 在数据库中, 用关系来描述数据时常用投影运算进行数据操作。
第4章 PHP流程控制语句.
§4 谓词演算的性质 谓词逻辑Pred(Y)。 是Y上的关于类型 {F,→,x|xX}的自由代数 赋值 形式证明
顺序表的删除.
线性代数 第二章 矩阵 §1 矩阵的定义 定义:m×n个数排成的数表 3) 零矩阵: 4) n阶方阵:An=[aij]n×n
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
离散数学─归纳与递归 南京大学计算机科学与技术系
复习.
第十章 双线性型 Bilinear Form 厦门大学数学科学学院 网址: gdjpkc.xmu.edu.cn
定理21.9(可满足性定理)设A是P(Y)的协调子集,则存在P(Y)的解释域U和项解释,使得赋值函数v(A){1}。
第16讲 相似矩阵与方阵的对角化 主要内容: 1.相似矩阵 2. 方阵的对角化.
§8.3 不变因子 一、行列式因子 二、不变因子.
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
1.2 子集、补集、全集习题课.
定义19.13:设p,qP(Y),若{p}╞q且{q}╞p,则称p,q语义等价,记为p │==│ q
1.设A和B是集合,证明:A=B当且仅当A∩B=A∪B
树和图 tree and graph 蔡亚星.
例:循环群的每个子群一定是循环群。 证明:设H是循环群G的子群,a是G的生成元。 1.aH
第三章 函数的微分学 第二节 导数的四则运算法则 一、导数的四则运算 二、偏导数的求法.
4) 若A可逆,则 也可逆, 证明: 所以.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
第七、八次实验要求.
线性代数 第十一讲 分块矩阵.
2.2矩阵的代数运算.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
A经有限次初等变换化为B,称A与B等价,记作A→B.
正弦、余弦函数的性质 华容一中 伍立华 2017年2月24日.
§2 方阵的特征值与特征向量.
动态规划 Floyd最短路径算法 高文宇
主讲教师 欧阳丹彤 吉林大学计算机科学与技术学院
定义21.17:设P1=P(Y1)和P2=P(Y2),其个体变元与个体常元分别为X1,C1和 X2,C2,并且或者C1=或者C2。一个半同态映射(,):(P1,X1∪C1)→(P2,X2∪C2)是一对映射: P1→P2; : X1∪C1→X2∪C2,它们联合实现了映射p(x,c)→(p)((x),
第三节 函数的微分 3.1 微分的概念 3.2 微分的计算 3.3 微分的应用.
定义5 把矩阵 A 的行换成同序数的列得到的矩阵,
第四节 向量的乘积 一、两向量的数量积 二、两向量的向量积.
第四章 函数的 积分学 第七节 定积分的换元积分法     与分部积分法 一、定积分的换元积分法 二、定积分的分部积分法.
陪集 例:三次对称群S3={e,1, 2, 3, 4, 5}的所有非平凡子群是:
§4.5 最大公因式的矩阵求法( Ⅱ ).
离散数学─归纳与递归 南京大学计算机科学与技术系
第三章 线性方程组 §4 n维向量及其线性相关性(续7)
最小生成树 最优二叉树.
§2 自由代数 定义19.7:设X是集合,G是一个T-代数,为X到G的函数,若对每个T-代数A和X到A的函数,都存在唯一的G到A的同态映射,使得=,则称G(更严格的说是(G,))是生成集X上的自由T-代数。X中的元素称为生成元。 A变, 变 变, 也变 对给定的 和A,是唯一的.
Presentation transcript:

§3.4 传递闭包及WARSHALL算法

设S是一个含有n个元素 a1,a2,…,an 的集合。S上的二元关系A是笛卡儿积S×S的子集。 如(ai,aj) ∈ A,则ai与aj有A关系。 关系A可用n阶方矩阵M表示,矩阵M的第i行,第j列元素Mij定义为 1 (TRUE), 如果(ai,aj) ∈ A 0 (FALSE), else 称M为关系矩阵

图G是有序对(V,E),其中非空集合V是图G的节点集合,E是图的边集合。 图G的邻接关系A定义为:如从节点i到节点j有一条边,则 (i,j) ∈ A 否则 (i, j) !∈ A 显然关系A可用方矩阵M表示,其阶数为图的节点数|V|, Mij为T当且仅当节点i到节点j有一条边。 这样的矩阵称为图G的邻接矩阵。

设R是一个关系,其传递闭包R’也是关系,定义为: (ai,aj) ∈ R’当且仅当存在序列 ak1,ak2,…,akp , 且 ak1= ai , akp= aj , (aks,aks+1 ) ∈ R (s=l,2 ,…, p-1) 相应于传递闭包的关系矩阵称为传递闭包矩阵。

图G=(V,E)的邻接关系A的传递闭包A*的含意为, 若(i, j ) ∈ A*,则有一条从节点i到节点j的路径, 因而邻接关系的传递闭包也称为图的连通关系, 相应的矩阵M*称为G的连通矩阵。 矩阵M及矩阵M*的元素都是逻辑值真(T)或假(F), 所以M和M*都是逻辑矩阵。

矩阵M的乘方 M2=M×M 也是n阶方矩阵,其元素定义为 n M2ij=∑Mis×Msj s=1 其中的乘法、加法分别是逻辑乘(AND),逻辑加(OR).显而易见M2ij为T,则从节点i到 节点j有一条长度为2的路径。

显而易见Mkij为T,则从节点i到节点j有一条长度为k的路径。 因此若(i,j) ∈A*,则存在K<n使得 Mkij =T 从而 同样可以定义关系矩阵的幂 Mk=Mk-1×M (K>1) 其元素 n Mkij=∑Mk-1is×Msj s=1 显而易见Mkij为T,则从节点i到节点j有一条长度为k的路径。 因此若(i,j) ∈A*,则存在K<n使得 Mkij =T 从而 n-1 M*=M+M2+ · · · +Mn-1=∑Mk

其中加法是逻辑加(OR). 如果认为每个节点与其本身邻接,即 (i,i) ∈ A 则Mij =T表示从节点i到节点j有一条边或i=j,此即从i到j有一条长度不超过1的路径, M2ij=T则表示从i到j有一条长度不大于2的路径,同样地,Mkij=T表示从i到j有一条长度不大于k的路径,因此有 M*=Mn-1 · M*=Mk · (k>=n一1)

为计算传递闭包矩阵只须计算M矩阵的n一1次幂Mn-1即可。如已知关系矩阵M, 计算传递闭包矩阵M*的方法为:将矩阵M连续平方 log 2 (n一1)次。 矩阵平方运算的时间复杂度为0(n3),从而计算M*的时间复杂度为0(n3 log(n-1)). 下面给出的WARSHALL算法的输出也是传递闭包矩阵,其复杂度为O(n3)。

void WARSHALL 输入:M,关系R的关系矩阵 输出:M*,R的传递闭包矩阵 for (i=1; i<= n; i++ ) for (j=1; j<= n; j++ ) if(M [j,i]=T) for (k=1; i<= n; i++ ) m [j,k] + =m [i,k]; (4) 上述算法必定会在有限时间内结束运行。 整个算法是三重嵌套的循环语句, 易知WARSHALL算法的时间复杂度为O(n3)。

在证明算法的正确性之前, 先看一下算法是如何运行的. 当i和j固定时, 内层for循环一次就是把m矩阵的第j行的元素从左到右地更新一遍. 当i固定时, 中间层for循环一次, 就是把m矩阵的所有行从上到下地更新一遍. 因此, 整个算法就是把m矩阵的所有元素更新n遍.

定理 WARSHALL算法的输出矩阵是输入关系矩阵的传递闭包矩阵。 证 注意到算法的输入、输出矩阵都存储在M中,与M相应的关系用A表示。 输入关系用R表示,其传递闭包用R*表示。则须证在算法运行结束时 1. A ( R* 2. R* ( A 定理的证明分成相应的两部分。

1. 欲证算法运行结束时A ( R*,只须证在算法的每次循环后, A( R*成立。此即要证: 如果 (J,K) ∈ A,则(J,K) ∈ R* 对算法的循环控制变量i,使用归纳法。在算法开始时,显然有 A=R ∈ R* 将(4)等价地改写为(因为M [j,i]=T) M[J,K] += M [j,i] × M[i,K] (5) 考虑i值为1时的循环结束时,从(5)可知,M[J,K]值为T(就是(J,K) ∈ A)有两种情况:

a. M[J,K]在循环之前为T,即 (J,K) ∈ R,则(J,K) ∈ R* b. M [J,I]=M [i,K]=T,则 M[J,K] += M [j,i] × M[i,K] (5) a. M[J,K]在循环之前为T,即 (J,K) ∈ R,则(J,K) ∈ R* b. M [J,I]=M [i,K]=T,则 (J,i) ∈ R, (i,K) ∈ R 这蕴含着 (J,K) ∈ R*

假设i值为l,2, · · · , I-1的各次循环结束时, 如果M[J,K] =T 则 (J,K) ∈ R* 循环控制变量为I,相应的循环结束时M [J,K]=T,同样要考虑两种情况 a.M [J,K]值在I-1的循环结束时就是T,按归纳假设 b.在I-1循环结束时有 M[J,i]=M[i,K]=T 此即 (J,i) ∈ R*,(i,K) ∈ R* 这蕴含着 这样,我们就证明了A ( R*

2.欲证运行结束时 R* ( A 也就是要证,如(J,K) ∈ R*,则M [J,K]最终必为T.分两种情况:

① (J,K) ∈ R,则算法开始运行时M[J,K]值为T,由(5)可知在算法运行过 ②(J,K)!∈ R, 但(J,K) ∈ R*,则必存在有限序列 el,e2,· · · ,ep, (p>=1) (6) 且 (J, el) ∈ R (es , es+1) ∈ R (s=1,2, · · · ,p-1) (ep ,K) ∈ R 令 eq=max(el,e2, · · · ,ep)

对eq的值进行归纳。 如eq=1,则(6)中的序列只含有一个数值:1,则 (j,1) ∈ R (1,K) ∈ R 则当i=1= eq ,的循环开始执行时,有 M[J,1]=M[1,K]=T 由(5)可知 M[J,K] 的值在这次循环结束时变为T,且不再改变。

设eq值为1,2,…,i-1,在eq次循环结束时,M[J,K]的值为T. (*) el,e2,· · ·,eq-l (7) 和 eq+l, · · · ,ep, (8) 设这两个子序列不空,则 e’=max(el,e2,· · ·,eq-l )<eq = i e’’=max(eq+l, · · · ,ep) < eq = i

(*)的含意是: (J,K) ∈ R*, 只要 el,e2,· · · ,ep, 中的最大值et为 1,2,…,i-1 中的一个, 则当I=et次循环结束时候, M[J,K]为T. (J,i) 和(i,K) 都满足假设的条件.(i=eq) 因为(7)(8)都满足条件. 序列(7)的前驱和后继分别是j和eq(=i)

由上述归纳假设,在I次循环开始执行之前有 M[J,I]=T 同样的理由, M[i,K]=T ( 须注意,现在eq=i,)按式(5)在I次循环后M[J,K]的值变成T.

如子序列(7),(8)为空,则更容易证明,我们只须指出子序列(7)为空,表示eq (J,eq) ∈ R 或 (eq,K) ∈ R 此即M [J,eq]或M[eq,K]的值在算法一开始时就是T,所以M [J,K]在l=i的循环中必定变为T.这就证明了 R* ( A 证毕。