极小覆盖举例

26人阅读 评论(0) 收藏 举报
分类:

求F={A→B,B→A,B→C,A→C,C→A},最小(极小)函数依赖集合
数据库:求F={A→B,B→A,B→C,A→C,C→A},最小(极小)函数依赖集合
要解答此问题我们先来了解一下概念:
如果函数依赖集F满足以下条件,则称F为一个极小函数依赖集。也称为最小依赖集或最小覆盖。
(1)F中任一函数依赖的右部仅含有一个属性。
(2)F中不存在这样的函数依赖X→A,使得F与F-{X→A}等价。
(3)F中不存在这样的函数依赖X→A,X有真子集Z使得F-{X→A}U{Z→A}与F等价。
然后我们再来看一下通用解答步骤:
① 用分解的法则,使F中的任何一个函数依赖的右部仅含有一个属性;
② 去掉多余的函数依赖:从第一个函数依赖X→Y开始将其从F中去掉,然后在剩下的函数依赖中求X的闭包X+,看X+是否包含Y,若是,则去掉X→Y;否则不能去掉,依次做下去。直到找不到冗余的函数依赖;
③ 去掉各依赖左部多余的属性。一个一个地检查函数依赖左部非单个属性的依赖。例如XY→A,若要判Y为多余的,则以X→A代替XY→A是否等价?若A属于(X)+,则Y是多余属性,可以去掉。
下面我们来解答以下楼主提出的这个问题:
1、利用分解规则,将所有的函数依赖变成右边都是单个属性的函数依赖。从题目来看,F中的任何一个函数依赖的右部仅含有一个属性:{A→B,B→A,B→C,A→C,C→A},跳过第二步直接进行第三步。
2、去掉F中多余的函数依赖
(1)设A→B冗余,从F中去掉A→B,则F1={B→A,B→C,A→C,C→A}。计算(A)F1+:设X(0)=A,计算X(1):扫描F1中各个函数依赖,找到左部为A或A子集的函数依赖,A→C。故有X(1)=X(0)U C=AC;扫描F1中各个函数依赖,找到左部为AC或为AC子集的函数依赖,C→A,X(2)=X(1)U C=AC.但AC不包含B,故A->B不能从F中去掉。
(2)设B→A冗余,从F中去掉B→A,则F2={A→B,B→C,A→C,C→A}。计算(B)F2+:设X(0)=B,计算X(1):扫描F2中各个函数依赖,找到左部为B或者B子集的函数依赖,B→C.故有X(1)=X(0)U C =BC;扫描F2中各个函数依赖,找到左部为BC或为BC子集的函数依赖,C->A,X(2)=X(1)U A=ABC.X(2)包含所有属性,故B→A可从F中去掉。
(3)设B→C冗余,从F中去掉B→C,则F3={A→B,A→C,C→A}。计算(B)F3+:扫描F3中各个函数依赖,找不到左部为B或B子集的函数依赖,因为找不到这样的函数依赖,故有X(1)=X(0)=B,(B)F1+= B不包含C,故B→C不是冗余的函数依赖,不能从F1中去掉。
(4)设A→C冗余,从F中去掉A→C,则F4={A→B,B→C,C→A}。计算(A)F4+:设X(0)=A,计算X(1):扫描F4中各个函数依赖,找到左部为A或A子集的函数
依赖,A→B。故有X(1)=X(0)U B=AB;扫描F4中各个函数依赖,找到左部为AB或为AB子集的函数依赖,B→C,X(2)=X(1)U C=ABC.X(2)包含所有属性,故A→C可从F中去掉。
(5)设C→A冗余,从F中去掉C→A,则F4={A→B,B→C}。计算(C)F5+:设X(0)=C,计算X(1):扫描F5中各个函数依赖,找到左部为C或C子集的函数依赖,找不到左部为C或C子集的函数依赖,因为找不到这样的函数依赖,故有X(1)=X(0)=C,(B)F1+= C不包含A,故C→A不是冗余的函数依赖,不能从F中去掉。
(6)至此,所有依赖均以验算完毕,故F最小(极小)函数依赖集合为:{A→B,B→C,C→A}

查看评论

思科CCNA视频课程:晁老师CCNA课堂举例-经典语录精选

CCNA视频:晁老师CCNA课堂举例--语录节选,本课程会不定期更新...... 主要是课堂中的举例节选,各位可以选择性的观看。
  • 2015年11月12日 14:13

求函数依赖集F的最小覆盖

求最小函数依赖集分三步: 1.将F中的所有依赖右边化为单一元素 此题fd={abd->e,ab->g,b->f,c->j,cj->i,g->h};已经满足 2.去掉F中的所有依赖左边...
  • piaohui0339
  • piaohui0339
  • 2017-03-18 11:59:45
  • 1290

课程设计:马的极小覆盖

  • 2009年09月03日 17:55
  • 11KB
  • 下载

极大连通子图 + 极小连通子图 + 连通分量

基于很多初学者被数据结构图中很多概念晕头转向,这里小编手写了一份三个概念的大致情况,希望对大家有所帮助O(∩_∩)O...
  • qq_38262266
  • qq_38262266
  • 2017-08-09 18:53:49
  • 1949

super和this使用举例,以及方法覆盖和重载举例

super和this使用举例,以及方法覆盖和重载举例
  • high2011
  • high2011
  • 2016-03-03 17:44:29
  • 1348

最小点集覆盖==最大匹配 证明

摘自http://www.cnblogs.com/rainydays/archive/2011/03/03/1969543.html 首先,最小点集覆盖一定>=最大匹配,因为假设最大匹配为n,那么我...
  • chinachenyadong
  • chinachenyadong
  • 2013-03-07 09:50:18
  • 2257

极大连通子图和极小连通子图的定义及讲解

之前学习到图论的时候,对于极大连通子图和极小联通子图的概念不是特别理解,上网查找以后发现网上并没有给出特别详细,浅显易懂的讲解,为了帮助大家更好的理解这两个概念,我做了一些比较详细的总结,希望能帮到大...
  • ll520hmx
  • ll520hmx
  • 2017-12-19 10:27:26
  • 970

关系规范化之求最小函数依赖集(最小覆盖)

最小函数依赖集 一、等价和覆盖   定义:关系模式R上的两个依赖集F和G,如果F+=G+,则称F和G是等价的,记做F≡G。若F≡G,则称G是F的一个覆盖,反之亦然。两个等价的函数依赖集在表达能力上是完...
  • icurious
  • icurious
  • 2016-04-25 10:02:53
  • 10952

极大连通子图和极小连通子图

直观地说,极大就是不能再大,或者说再大也不能超过自己。因此,极大连通子图就是:  设      1)   S为G的子图,S连通,      2)   如果有S '也是G的连通子图,且S是S ...
  • gz153016
  • gz153016
  • 2016-05-23 20:12:22
  • 7863

极大极小算法原理

参考书籍《人工智能基础教程》 该算法的搜索策略是考虑双方若干步之后,从可能的步中选择相对较好的走发来走。 以MAX表示程序方,MIN表示对手方,P表示局势,f(P)是根据当前局势做出的估计函数...
  • Elliebababa
  • Elliebababa
  • 2017-09-26 11:21:13
  • 764
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 257万+
    积分: 3万+
    排名: 133
    博客专栏
    最新评论
    文章存档