输入:成对的From->到行。
From To
1 2
2 3
3 4
6 7
输出:对于每个值,可达到的To值对。 例如。为1
Source Reachable
1 2
1 3
1 4
显然,可以将数据吸收到Graph结构并运行DFS扫描。
是否有另一种方法可以这样做:
答案 0 :(得分:2)
在这里递归地使用CTE(公用表格表达式)听起来像是正确答案。对于涉及日期范围的类似情况,请查看here。
答案 1 :(得分:1)
这个怎么样:
首先运行:make hashes。
h[1] = 2
h[2] = 3
h[3] = 4
h[6] = 7
第二次运行:对于每个键,查看它是否未经处理(我将解释),如果是,则执行更改运行并输出可达性:
h[1] = 2 (unprocessed) --> output "1 2"
h[2] = 3 (unprocessed) --> output "1 3"
h[3] = 4 (unprocessed) --> output "1 4"
h[4] = null
现在我们存储计算(处理过的)结果以加速将来的查找(如在动态编程中):
h[1] = 2,3,4,
h[2] = 3,4,
h[3] = 4,
等等。
极端情况场景:
不确定执行的实际速度,需要测试。
答案 2 :(得分:0)
DBMS设计用于处理关系信息/记录集,而非DFS,如hieararchical方法。当涉及到处理hieararchical信息并且您需要性能时,最好通过用第三代语言编写的外部代码来完成工作。是否可以在SSIS中使用manged(CLR)SQL函数或脚本任务来满足您的特定需求?
答案 3 :(得分:0)
你应该结合: