对于学校项目,我需要创建一种基于最终用户选择创建个性化查询的方法 由于用户基本上可以从表的任意组合中选择任何字段,因此我需要找到一种方法来映射表以进行连接而不会有无关的数据(这可能会导致报告不连贯,但我们愿意生活用那个)。
对于最多两个表,我已经设法设计了一个工作正常的算法。但是,当我添加另一个表时,我找不到通过我的数据库的方法。所有可用于个人化报告的表都可以链接在一起,所以它实际上都归结为找到要使用的路径。
答案 0 :(得分:0)
您可以尝试某种形式的A* algorithm。基本上,这会查看每个可能的下一个选项并为其应用启发式算法,该函数可以大致确定此节点与目标之间的距离。然后它选择更接近并重复的那个。实现A *最难的部分是设计一个好的启发式方法。
如果没有关于表格如何组合在一起的更多信息,或者通过表格中的“路径”的含义,那么很难推荐一些东西。
看起来它不喜欢我的链接,可能是其中的*,尝试:
http://en.wikipedia.org/wiki/A*_search_algorithm
修改强> 如果那是整个数据库,我会选择depth-first exhaustive search。
答案 1 :(得分:0)
我考虑使用A *或类似的算法,但正如你所说,最难的部分是关于设计启发式的。
我的表格集中在一个主干上,有很多分支,每个分支最多只能导致一个叶子节点。 Here is the actual map(删除了表名,因为我是偏执狂)。假设我想查看来自A,B和C表的数据,我需要一种算法来查找蓝色路径。