求最小依赖集

这个比较烦,要写好多好多好多QAQ。

例:U=(A,B,C,D,E,G)   F={BG->C,BD->E,DG->C,ADG->BC,AG->B,B->D},求F最小依赖集。

解:

第一步:右边单一化。

F1={BG->C,BD->E,DG->C,ADG->B,ADG->C,AG->B,B->D}

第二步:逐个求,在去掉它的F中求闭包,如果包含右边属性,则表示这个函数依赖要去掉。

BG->C:求(BG)+=BCDEG,包含右边属性C,所以去掉。

BD->E:(BD)+=BD,不包含右边E,所以不用去掉。

DG->C:(DG)+=DG,也不用去掉。

ADG->B:(ADG)+=U,包含B,所以去掉。

ADG->C:(ADG)+包含C,去掉。(在这里,求闭包的时候,不能再用前面去掉的函数依赖了,所以如果从后往前判断,可能不用去掉ADG->B,所以最小依赖集不唯一,写出一个即可。)

AG->B:(AG)+=AG,不用去掉。

B->D:(B)+=B,不用去掉。

所以F2={BD->E,DG->C,AG->B,B->D}

第三步:对左边属性单一化,判断冗余,代替。

BD->E:B->E,求(B)+=BD,包含D,所以D冗余。

              D->E,求(D)+=D,所以B不冗余。

              所以用B->E代替BD->E。

DG->C:D->C,(D)+=D,所以G不冗余。

               G->C,(G)+=G,所以D不冗余。

AG->B:A->B,(A)+=A,所以G不冗余。

              G->B,(G)+=G,所以A不冗余。

所以Fm={B->E,DG->C,AG->B,B->D}。

版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 93
    点赞
  • 268
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wonz

创作不易,一块就行。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值