如何在我的 postgresql 呼吸优先搜索算法中找到所有路径,这段代码目前只找到最短路径?

问题描述

我正在寻找如何在这个呼吸优先搜索算法中找到所有路径..有没有人可以帮助通过互联网搜索如何显示所有路径,但我无法成功找到...我将不胜感激

CREATE OR REPLACE FUNCTION component_search(paper_node integer,cited_node integer)
RETURNS integer[] AS $$
    DECLARE
        parent integer[];
        level integer[];
        i integer;
        frontier integer[];
        next integer[];
        u integer;
        v integer;
        shortest_path integer[];
        p integer;
    BEGIN
        i := 1;
        frontier[0] := paper_node;
        level[paper_node] := 0;
        parent[paper_node] = -1;
        WHILE frontier IS NOT NULL 
        LOOP
            next := NULL;
            FOREACH u IN ARRAY frontier 
            LOOP
                FOR v IN (SELECT paperid FROM edge WHERE citedpaperid=u UNION ALL SELECT citedpaperid FROM edge WHERE paperid=u)
                LOOP
                    IF level[v] IS NULL THEN
                        parent[v] := u;
                        level[v] := i;
                        next = array_append(next,v);
                        i := i + 1;
                    END IF;
                END LOOP;
            END LOOP;
            frontier := next;
        END LOOP;

        shortest_path = array_append(shortest_path,cited_node);
        p := parent[cited_node];
        WHILE p != -1
        LOOP
            shortest_path = array_prepend(p,shortest_path);
            p := parent[p];
        END LOOP;

        return shortest_path;
END; $$
LANGUAGE PLPGsql;



select component_search(9508155,9309140);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)