b我目前正在对数据库进行一些研究。
我需要找到给定连接图的所有可能的连接顺序。该图表作为附属列表实现。
示例:
SELECT * FROM a, b, c, d WHERE a.x = b.x && b.y = c.y && b.z = d.z
给出了以下图表(边缘):
(a,b)
(b,c)
(b,d)
并且所有可能的连接顺序都是(x是连接运算符):
((a x b) x c) x d
((a x b) x d) x c
(a x (b x c)) x d
(a x (b x d)) x c
a x ((b x c) x d)
a x ((b x d) x c)
我的第一个想法是为每个顶点运行一种PRIM算法。每次,我们都可以添加不同的边来将一个不属于MST的顶点连接到MST,我们找到了另一个连接顺序。这种方法有效吗?是否有更简单的解决方案来获得所有可能的连接订单?
Moritz的