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

时间:2019-11-16 23:01:12

标签: mysql sql algorithm sorting tree

所以我有以下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是对其他表(blogarticle等)的引用,但parent_id除外,它也引用博客表。这里的想法是quote可以将article链接到blogblog链接到父博客parent

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

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

有人有更好的解决方案吗?

编辑:忘记添加它在mysql中。

编辑编辑:一个死胡同似乎是要包括任何两个博客A和C之间的所有引号,而不管是否存在一个博客B,即A是B的父级是C的父级且引用相同。 然后删除A至C连接,因为这是一条较短的路径。这里(How to remove cycles in an unweighted directed graph, such that the number of edges is maximised?似乎暗示着这种方法对NP来说很困难。

0 个答案:

没有答案