依赖关系算法
发布时间:2020-12-14 05:33:30 所属栏目:百科 来源:网络整理
导读:?关系依赖算法 一、引言 昨天,因为工作需要,在处理对多个表同时插入时,表与表之间存在依赖关系(即存在外键引用),需要有一个算法对所有相关表进行重新排序,将没有依赖的表先插入,有依赖的表在它所依赖表插入之后,在进行插入操作。引申到生活中,我们
?关系依赖算法
三、算法步骤 1、我们确定所有事情清单(简称T),并画出如上类似的关联图形。 事情清单:T(A,B,C,D,E,F,G) 2、列出所有依赖关系清单(简称R)。 依赖关系清单R:左右两边分别标记为RL关系清单和RR关系清单。 A-->G A-->D A-->G B-->C D-->B D-->E F-->E G-->F B-->G 3、开始运算。 约定左边为依赖关系清单R,右边为事情清单,分隔符号“|” 前边的事情表示已经排好,后边是等待排的事情。 第一步:开始时,分隔符号在事情清单开始,表示所有事情均等待排序。将等待排序的清单中划掉RR关系清单中出现过的事情,将未划掉的放到分隔符前边,然后从依赖关系清单中同时划掉分隔符前边出现过的关系对,得到第二步,此时事情A已经排好。 ? 第二步:重复第一步,得到第三步,此时事情AD已经排好。 ? 第三步:重复第一步,得到第四步,此时事情ADB已经排好。 ? 第四步:重复第一步,得到第五步,此时事情ADBCG已经排好。 ? 第五步:重复第一步,得到第六步,此时事情ADBCGF已经排好。 ? 第六步:重复第一步,得到第七步,此时事情ADBCGFE已经排好。 ? 第七步:完成。最终事情的执行顺序序列为ADBCGFE,当然这也不是唯一的答案,从第五步我们可以看出,CG是可以互换的,所以ADBGCFE也是最终答案。 ? 四、结论 通过这样一个算法,我们就把事情ABCDEFG都打理清楚了,接下来我们需要做的,就是按照最终执行序列着手去做了。这里就不提供代码实现了,重要的是思想与执行力。
? 当然,该方法是有前提条件的,各个事情之间不能存在两两相互依赖,此时是无解的。例如,场景中A-->C改成C-->A,则存在C-->A-->D-->B-->C,无解。 ? godway com.gaowei@msn.com 2012-06-07 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |