2012-02-08 34 views
3

我試圖找到pgRouting中shortest_path()的實現是如何工作的。最短路徑在pgrouting中如何工作?

這是函數的定義:

CREATE OR REPLACE FUNCTION shortest_path(sql text, source_id integer,target_id integer, directed boolean, has_reverse_cost boolean) 
RETURNS SETOF path_result AS '$libdir/librouting', 'shortest_path' 
    LANGUAGE c IMMUTABLE STRICT 
    COST 1 
    ROWS 1000; 
ALTER FUNCTION shortest_path(text, integer, integer, boolean, boolean) OWNER TO postgres; 

我的問題是:

  1. 它是如何調用.c文件,以及它如何傳遞參數給它(我相信這是dijkstra.c文件,是否正確?)
  2. 如何獲得該.c文件並使用它所具有的調試信息進行編譯,以便了解它是如何工作的,以便我能更好地理解它?
+0

你想使用pgRouting來計算最短路徑,或者你想了解代碼的工作原理嗎? – underdark 2012-02-08 19:38:16

+0

我想了解代碼如何工作,我想知道如何編譯.c文件,以便從代碼中獲取更大的圖片 – 2012-02-09 12:22:21

+0

我真的需要知道它是如何工作的,因此有人可以幫助我.. – 2012-02-12 19:16:16

回答

1

這是the source for dijkstra.c。你可以閱讀這段代碼,看看這個函數在做什麼。您發佈的SQL僅顯示與本機C函數的綁定。

+0

斷開的鏈接,更新? – 2013-11-06 15:57:48

+1

直接鏈接已更新,這裏是項目的頂級鏈接:https://github.com/pgRouting/pgrouting – cope360 2013-11-07 15:04:25