开发者社区> 问答> 正文

什么是遍历此sql表树的最有效算法?

所以我有下面的SQL表:

CREATE TABLE LINKTABLE ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, parent_id INT, quote_id INT, article_id INT, asset_id INT, blog_id INT ); 此处的ID是对其他表(blog,article等)的引用,但其中的其他ID也引用parent_idBlog表。这里的想法是a quote可以将an链接article到blog或blog将a 链接到父博客parent。

这形成一棵树,其中articles有叶子,blogs是节点,并且quotes是节点和叶子之间的分支。

鉴于我有这张桌子,我试图找出遍历它的最有效方法。贪婪的是,我认为我可以遍历所有quotes节点,然后将节点链接在一起,但这意味着我的运行时间将取决于我拥有的分支数量,我认为这是阶乘时间(?)。

有谁有更好的解决方案?

编辑:忘记添加这是在mysql中。

编辑编辑:一个死胡同似乎是要包括任何两个博客A和C之间的所有引号,而不管是否存在博客B,以使A是B的父级是C的父级且引用相同,然后删除A到C连接是一条较短的路径。在这里(如何删除未加权有向图中的循环,从而使边的数量最大化?)似乎意味着该方法是NP-hard的。

展开
收起
保持可爱mmm 2019-11-18 11:55:41 392 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载