9.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