A.13.29 OPG_APIS.FIND_SP
形式
OPG_APIS.FIND_SP( edge_tab_name IN VARCHAR2, source IN NUMBER, dest IN NUMBER, exp_tab IN OUT VARCHAR2, dop IN INTEGER, stats_freq IN INTEGER DEFAULT 20000, path_output OUT VARCHAR2, weights_output OUT VARCHAR2, edge_tab_name IN VARCHAR2, options IN VARCHAR2 DEFAULT NULL, scn IN NUMBER DEFAULT NULL);
説明
プロパティ・グラフで指定した出力頂点と入力頂点の間の最短パスを検索します。各エッジに数値の重みプロパティがあると想定します。(実際のエッジ・プロパティ名は重要ではありません)
パラメータ
- edge_tab_name
- 
                        プロパティ・グラフ・エッジ表の名前。 
- source
- 
                        出力(開始)頂点ID。 
- dest
- 
                        入力(終了)頂点ID。 
- exp_tab
- 
                        最短パスの計算に使用される拡張表の名前。 
- dop
- 
                        操作の並列度。 
- stats_freq
- 
                        表に関する統計の収集の頻度。 
- path_output
- 
                        出力の最短パス。最短パスでの頂点のIDからなり、空白文字で区切られます。 
- weights_output
- 
                        出力の最短パスの重み。最短パスでのエッジの重みからなり、空白文字で区切られます。 
- options
- 
                        操作に対する追加の設定。次の値が1つ以上含まれる(カンマ区切り)オプションの文字列。 - 
                              CREATE_UNDIRECTED=T
- 
                              REUSE_UNDIRECTED_TAB=T
 
- 
                              
- scn
- 
                        エッジ表のSCN。nullの可能性があります。 
使用上のノート
プロパティ・グラフ・エッジ表はデータベースに存在している必要があり、OPG_APIS.FIND_SP_PREPプロシージャはコール済である必要があります。
例
次の例は、最短パスの計算の準備をしてから、mypgという名前のプロパティ・グラフで頂点1から頂点35への最短パスを検索します。
                  
set serveroutput on
DECLARE
    w     varchar2(2000);
    wtExp varchar2(2000);
    vPath varchar2(2000);
BEGIN
    opg_apis.find_sp_prep('mypgGE$', wtExp, null);
    opg_apis.find_sp('mypgGE$', 1, 35,  wtExp, 1, 200000,  vPath, w, null, null);
    dbms_output.put_line('Shortest path ' || vPath);
    dbms_output.put_line('Path weights '  || w);
END;
/
出力は、次のようになります。頂点1から開始して、頂点2へ、最後は入力頂点(35)への1つの最短パスを示します。
Shortest path 1 2 35 Path weights 3 2 1 1
親トピック: OPG_APISパッケージのサブプログラム