MySQL中有向图中的最大权重路径

时间:2016-02-11 12:35:32

标签: mysql stored-procedures graph graph-algorithm stored-functions

考虑这样的(定向)图:

the directed graph

此图的每个节点代表配方准备程序的步骤。要开始step 2step 1 必须已经完成;开始step 7step 5step 3step 6 必须已经完成(以及之前的每一步); step 1step 6step 8可以立即启动 (同时 )。 step 9结束步骤:每个食谱中只有一个结束步骤。 每个步骤都有持续时间

我已经以这种方式在MySQL DB中实现了这个图:

CREATE TABLE Step (
    ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    RecipeID INT UNSIGNED NOT NULL,
    Duration TIME, -- if NULL = immediate (duration: 00:00:00)
    PRIMARY KEY (ID),
    FOREIGN KEY (RecipeID) REFERENCES Recipe(ID)
);
CREATE TABLE StepSequence (
    Step INT UNSIGNED NOT NULL,
    PreviousStep INT UNSIGNED NOT NULL,
    PRIMARY KEY (Step, PreviousStep),
    FOREIGN KEY (Step) REFERENCES Step(ID),
    FOREIGN KEY (PreviousStep) REFERENCES Step(ID)
);

我需要在MySQL 中使用存储的函数/过程来计算配方准备的所需的总时间。这一次(考虑到可以同时进行总是同步的步骤)具有最长时间的路径

考虑到我无法创建递归过程,我如何以迭代方式获得该结果? (在评论中解释了阻止我使用递归过程的问题 - 接受了使代码也适用于递归过程的任何解决方法)

0 个答案:

没有答案