2

次の問題があります。

AB -> CD
H->B
G ->DA
CD-> EF
A -> HJ
J>G

最初のステップ (右側を分割) を理解し、次の結果が得られます。

AB -> C
AB -> D
H -> B
G -> D
G -> A
CD -> E
CD -> F
A -> H
A -> J
J -> G

A -> h および h -> b であることを理解しているため、AB -> c および ab -> D から B を削除すると、次のようになります。

A -> C
A -> D
H -> B
G -> D
G -> A
CD -> E
CD -> F
A -> H
A -> J
J -> G

次のステップは私が計算できないものです(左辺を減らします)

どんな助けでも大歓迎です。

4

1 に答える 1

2

カバー内の各 FD の左側は既に縮小されています。次のステップは、そのカバー内の FD の数を最小限に抑えることです。

一度に 1 つの FD を無視することによってこれを行い、無視された FD の LHS を開始点として使用して、カバー内の他の FD を使用して、依存する属性 (クロージャー) の同じセットを思い付くことができるかどうかを確認します。可能であれば、無視した FD は冗長であり、カバーから削除される可能性があります。残りの FD ごとにこれを行います。残っているのは最小限のカバーです。

最初に、開始カバーのすべての FD を使用して、無視する FD の LHS によって決定される一連の属性を導き出します。Aクロージャーは次のとおりです。

A, B, C, D, E, F, G, H, J

A -> D閉鎖を削除して再計算してみてください...

initial   closure: A
use A -> C    closure: A, C
use A -> H    closure: A, C, H
use A -> J    closure: A, C, H, J
use J -> D    closure: A, C, D, H, J
use J -> G    closure: A, C, D, G, H, J
use H -> B    closure: A, B, C, D, G, H, J
use CD -> E   closure: A, B, C, D, E, G, H, J
use CD -> F   closure: A, B, C, D, E, F, G, H, J

FD を参照せずに同じ属性セットを導出できるA -> Dため、この FD は冗長であり、カバーから削除される可能性があります。実際には、派生した属性セットに現れたらプロセスを停止することもできDましたが、完全を期すためにプロセスを継続して、 A -> D.

与えられた FD のセットの最小限のカバーは一意である必要はないことに注意してください。ただし、特定の最小カバーは、元のカバーと同じ依存関係のセットを具現化する必要があるため、最小カバーから依存関係を 1 つ削除しても同じクロージャーが生成されません。

于 2013-11-12T18:35:33.477 に答える