所以我有以下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
等)的引用,但parent_id
除外,它也引用博客表。这里的想法是quote
可以将article
链接到blog
或blog
链接到父博客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来说很困难。