4.11日提问集合

包含数据库设计中的无损连接性、DBMS物理实现、平摊分析、树搜索的一些问题

1.无损连接性检验算法

 

 我们证明无损连接性的思路是对于分解之后关系子表做自然连接之后得到的关系和原关系一模一样。首先要明确一个关系分解+自然连接之后关系元组只可能多不可能少,但是多了元组也是对关系的破坏信息的损失。我们只需要证明自然连接之后的表中任一条元组都能在原表里找到就能证明他俩完全一致

那么为什么我们能够通过更新这个矩阵就能证明这件事呢?为什么这个矩阵可以使用原关系中的函数依赖呢?我之前以为这个矩阵表示的是分解后关系做自然连接得到的大表,大错特错,如果不能保证函数依赖的保持性,分解后关系也根本不能保证有这些函数依赖;何况看看我们的“设和往证”,我们是在自然连接之后的表中找一条元组(设为a1-a5),然后证明它在原关系实例中存在,如果这个矩阵表示的是自然连接得到的大表,根本不需要使用FD去更新,它本身就有a1-a5这条元组。所以答案也很简单,这个矩阵表示的是原关系实例r。所以它才能使用这些函数依赖,它才要去找一条元组a1-a5.

具体思路:因为分解后做自然连接得到的表里有a1-a5,所以A的域中必有a1这个取值,D中必有a4这个取值,且a1与a4会同时存在于一条元组里(因为分解里有AD),如果AD表里没有一条元组同时有a1和a4,那再怎么自然连接也不会得到一条元组有a1-a5。同理类推,我们就完成了矩阵的初始化。然后再通过r的FD去更新知道能/不能找到a1-a5.

2.无损连接性判定定理

 

图1告诉我们一个分解具有无损连接性的充要条件是它的属性集要满足一些函数依赖,而图2告诉我们达到4NF的无损连接性只需要这样分: 

 实际上这样分会有这样的结论:U1∪U2->->U1∪U2。(可以自己试试)并不满足图一的条件呀?但是看看图一我们所绘制的那个矩阵:

 不谈原理,只要找到一条元组有a1a2或a1a3就说明满足无损连接性,那从多值依赖的定义来看不

3.

也能等价推出X多值决定Z。

4.动态表性能平摊分析

 对于会计方法,最后每次扩张时算法都多余一个代价,这个代价是:插入第一个元素前给予这一位平摊代价3,插入他花费1,下次扩张表时(也就是插入第二个元素时)复制他花费1,以后1号位再需复制时都靠后面的元素接济了,因为1号位前面无元素需要它接济,所以遗留代价1.

 使用势能方法分析平摊代价时每次扩张后整个数据结构的势能并非为0,而是2.这里横轴是元素数量,扩展的过程中,在插入下一个元素前势能是0,但是插入下一个元素后势能就是2了;画图的时候是元素数量对应的势能,只花了对应数量的最终势能,中间转变过程没有展示。图里画的势能可以看作是插入第i个元素之后的势能。

同时第一个元素的平摊代价是2而不是3。φ(0)=0,φ(1)=1,所以α1=2。第一个节点比较特殊因为它并不满足拓宽两倍而是从0到1,也不需要复制元素。(即不满足num[i]和size[i]的递推关系)

5.动态表

 不管是先删掉一个使表不足1/4再收缩还是先收缩(知道再删一个就不足1/4了)再删,最后装载因子都不足1/2.后者收缩后的一瞬间可以达到1/2.

6.人员任务分配(树搜索p26)

 在这个问题里我们不考虑偏序关系的自反性,分一个强弱出来,所以解空间里的解都是拓扑排序的结果。

 7.TSP问题(树搜索p45)

 其实不是的,找到的哈密顿图不包含4,6也并不就一定有6,4,可能是4->x->6这样。如果真一定包含6,4那确实可以更新代价下界。

P54

 

 也并不是这样。最右边这个子树的确是我们利用贪心的想法使它的代价每一步上增长的最小,但是这并不就意味着它是所有解的一个下界了(无贪心选择性)。

 

 这是紧随其后的用树搜索解决0-1背包问题。

这个算法只是借用了部分背包问题的思想(贪心),但这里使用的和部分背包还是不一样的,这里直接算的性价比然后把剩下的背包容量全按这个性价比来装算出的上界,部分背包问题还要性价比最高的物品的重量,够不够我们装满背包,如果不够还要挑。这里用部分背包问题来算上界会更精确。

同时这个题是用最佳优先的策略先算出一个解当作优化解的一个下界来剪枝。

8.A*算法

 1、2、3的确写的有些繁杂,但是4是必要的,只有目标节点的hx等于h*x等于0,也就是f(t)估计出的就是f*t,才能得出f(t)是t对应可能解的代价,得出f(t)>=f*(s)。

9.数据库ch5

1).

联机存储和脱机存储可以简单理解成是否必须和计算机物理联系在一起,比如光盘和磁带就是可以放在仓库里的。

 2).

 这里的指针和编程语言里的指针定义已经不一样了,空指针指向NULL的哪一片区域,里面可能有标识符说明这一片区域是NULL的。

3).

 

 只能有效支持在HASH域上的具有相等比较的数据操作,因为HASH码无序,非相等操作还是得反复的检索索引表。

4).

p68 

 桶数组储存在内存中,内含键值和指向桶的指针。每次桶溢出时桶数组都会增大至二倍(桶的数量不一定)

 后面桶数组的数量会达到惊人的地步,动态Hash方法也是,可拓展Hash方法可以看作是动态Hash方法的一种。

 

 线性Hash方法的桶数组则是线性增长的,增长速度显著的慢一些。

10.贪心算法

 贪心选择性是指我们选用的贪心策略所做出的选择一定被某个优化解所包含。所以想要完整证明贪心选择性是必然要用到优化子结构的。(也就是ppt里定理三的证明)

 11.作业题

一开始觉得ρ具有函数依赖保持性是无效条件,后面发现非也。

 闭包算法正确性在ch4p152。

 保持函数依赖<——>所有子模式函数依赖的并集覆盖G、F,与他们等价

 此时我们才能保证候选键能够通过闭包算法得到一条全a的元组。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值