问题描述
我正在寻找如何在这个呼吸优先搜索算法中找到所有路径..有没有人可以帮助通过互联网搜索如何显示所有路径,但我无法成功找到...我将不胜感激
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 (将#修改为@)