闭包算法

问题描述

根据求属性集闭包的算法,用你熟悉的语言编写程序,要求如下:
1. 由用户输入函数依赖,当用户输入End时,表示所有依赖都输入完毕。(即函数依赖是由用户自己定的,程序中不能假定某个具体的依赖)
2. 函数依赖的形式是 AB->C, A->BE 这样的形式,为了简单起见,我们假定所有的属性都是用英文的大写字母表示,由A到Z。(提示,你可以让用户先输入依赖左边的属性,然后再输入依赖右边的属性,用来表示 A->B 这样的形式)
3. 用户输入完毕所有的依赖后,显示“请输入属性集求闭包”的提示,当用户输入1个或者多个属性时,求出对应的闭包。(如,用户输入A,则显示A+的值, 用户输入AB则求出AB+的值。显示完毕后,再次显示“请输入属性集求闭包”,让用户继续输入属性,直到用户输入END后程序结束。
4. 在上面3步骤用户选择END退出后,根据求函数依赖闭包的算法,显示用户输入的函数依赖的闭包F+。

解题思路

求属性集闭包
  • 假设用户输入属性AB,且用户之前输入了n个函数依赖。从第一个函数依赖开始,如果依赖左边的属性属于AB,那么将依赖右边的属性纳入到AB中,如此循环往复n2,便能得到AB+的值
求函数依赖的闭包
  • 假设有n个属性,则有2n种属性集的排列组合情况。每一种属性集都根据上题求出自己的闭包,假设闭包含有m个属性,则又有2m种情况。那么,最终的函数依赖的闭包的元素的个数为2m+n

源代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值