如何解决如何在我的 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 举报,一经查实,本站将立刻删除。