求最小函式依賴集

2021-08-28 06:18:44 字數 1159 閱讀 8470

用分解的法則,使f中的任何乙個函式依賴的右部僅含有乙個屬性;

去掉多餘的函式依賴:從第乙個函式依賴x→y開始將其從f中去掉,然後在剩下的函式依賴中求x的閉包x( [y1]

閉包就是由乙個屬性直接或間接推導出的所有屬性的集合,例如:

f=,由a可直接得到b和d,間接得到c,則a的閉包就是

) ,看x+是否包含y,若是,則去掉x→y;否則不能去掉,依次做下去。直到找不到冗餘的函式依賴;

去掉各依賴左部多餘的屬性。乙個乙個地檢查函式依賴左部非單個屬性的依賴。例如xy→a,若要判y為多餘的,則以x→a代替xy→a是否等價?若a屬於(x)+,則y是多餘屬性,可以去掉。

(1)判斷右邊是否最簡,得f=

(2)第1步:

①假設b->d冗餘,則去掉b->d得:g=

b+ =b 不包含d,所以不冗餘,不能去掉。

②假設dg->c冗餘,則去掉dg->c,得:g=

(dg)+ =dg不包含c,所以不冗餘,不能去掉。

③假設bd->e冗餘,則去掉bd->e,

得:g=

(bd)+ =bd不包含e,所以不冗餘,不能去掉。

④假設ag->b冗餘,則去掉ag->b,得:g=,(ag)+ =ag不包含b,所以不冗餘,不能去掉。

⑤假設adg->b冗餘,則去掉adg->b,

得:g=

(adg)+ =abcdg包含b,所以冗餘,去掉。

⑥假設adg->c冗餘,則去掉adg->c,得:g=

(adg)+ =abcdg包含c,所以冗餘,去掉。

綜上:f=

第2步:

①假設d->c冗餘,d+ =d不包含c,所以g不能去掉。

②假設g->c冗餘,g+ =g不包含c,所以d不能去掉。

③假設b->e冗餘,b+ =bd不包含e,所以d不能去掉。

④假設d->e冗餘,d+ =d不包含e,所以b不能去掉。

⑤假設a->b冗餘,a+ =a不包含b,所以g不能去掉。

⑥假設g->b冗餘,g+ =g不包含b,所以a不能去掉。

所以,fm=

求最小依賴集

這個比較煩,要寫好多好多好多qaq。例 u a,b,c,d,e,g f 求f最小依賴集。解 第一步 右邊單一化。f1 第二步 逐個求,在去掉它的f中求閉包,如果包含右邊屬性,則表示這個函式依賴要去掉。bg c 求 bg bcdeg,包含右邊屬性c,所以去掉。bd e bd bd,不包含右邊e,所以不...

求最小函式依賴集的方法

求最小函式依賴集分三步 1.將f中的所有依賴右邊化為單一元素 此題fd 已經滿足 2.去掉f中的所有依賴左邊的冗餘屬性.作法是屬性中去掉其中的乙個,看看是否依然可以推導 此題 abd e,去掉a,則 bd 不含e,故不能去掉,同理b,d都不是冗餘屬性 ab g,也沒有 cj i,因為c 其中包含i所...

求最小函式依賴

第一步 對f中的函式依賴運用分解原則來建立乙個等價函式依賴集h,該集合中每乙個函式依賴的右部是單個屬性 第一步之後的結果h 第二步 考察每乙個函式依賴是否是必須的,去除非必要的函式依賴 1 考察bc a,去掉函式依賴集會得到新的函式依賴集j 則 bc j bcdegh,不包含a,因此bc a不能去掉...