単一ソース最短経路は、開始頂点と他のすべての頂点との間の最短経路を指す。 最短経路は、ダイクストラ (Dijkstra) アルゴリズムを用いて計算される。 単一ソース最短パスコンポーネントは、開始頂点と他のすべての頂点との間の最短パスと、最短パスの数を提供できます。
コンポーネントの設定
方法1: パイプラインページでコンポーネントを設定する
Single-source Shortest Pathコンポーネントは、Platform for AI (PAI) コンソールのMachine Learning Designerのパイプラインページに追加できます。 下表に、各パラメーターを説明します。
タブ | パラメーター | 説明 |
フィールド設定 | ソース頂点列 | エッジテーブルの開始頂点列。 |
ターゲット頂点列 | エッジテーブルの末尾の頂点列。 | |
エッジ重量コラム | エッジテーブルのエッジ重み列。 | |
パラメーター設定 | 初期ノードID | 最短パスの計算に使用される開始頂点。 |
チューニング | 数の労働者 | 並列ジョブ実行の頂点の数。 並列性とフレームワーク通信コストの程度は、このパラメータの値とともに増加します。 |
ワーカーメモリ (MB) | 1つのジョブで使用できるメモリの最大サイズ。 単位:MB。 デフォルト値: 4096 使用済みメモリのサイズがこのパラメーターの値を超えると、 |
方法2: PAIコマンドを使用してコンポーネントを構成する
単一ソース最短パスコンポーネントは、PAIコマンドを使用して設定できます。 SQLスクリプトコンポーネントを使用してPAIコマンドを実行できます。 詳細については、「SQLスクリプト」トピックの「シナリオ4: SQLスクリプトコンポーネント内でPAIコマンドを実行する」をご参照ください。
PAI -name SSSP
-project algo_public
-DinputEdgeTableName=SSSP_func_test_edge
-DfromVertexCol=flow_out_id
-DtoVertexCol=flow_in_id
-DoutputTableName=SSSP_func_test_result
-DhasEdgeWeight=true
-DedgeWeightCol=edge_weight
-DstartVertex=a;
パラメーター | 必須 | デフォルト値 | 説明 |
inputEdgeTableName | 可 | デフォルト値なし | 入力エッジテーブルの名前。 |
inputEdgeTablePartitions | 不可 | フルテーブル | 入力エッジテーブルのパーティション。 |
fromVertexCol | 可 | デフォルト値なし | 入力エッジテーブルの開始頂点列。 |
toVertexCol | 可 | デフォルト値なし | 入力エッジテーブルの末尾の頂点列。 |
outputTableName | 可 | デフォルト値なし | 出力テーブルの名前。 |
outputTablePartitions | 不可 | デフォルト値なし | 出力テーブルのパーティション。 |
ライフサイクルの設定 (Set lifecycle) | 不可 | デフォルト値なし | 出力テーブルのライフサイクル。 |
workerNum | 不可 | デフォルト値なし | 並列ジョブ実行の頂点の数。 並列性とフレームワーク通信コストの程度は、このパラメータの値とともに増加します。 |
workerMem | 不可 | 4096 | 1つのジョブで使用できるメモリの最大サイズ。 単位:MB。 デフォルト値: 4096 使用済みメモリのサイズがこのパラメーターの値を超えると、 |
splitSize | 不可 | 64 | データ分割サイズ。 単位:MB。 |
startVertex | 可 | デフォルト値なし | 開始頂点のID。 |
hasEdgeWeight | 不可 | false | 入力エッジテーブルのエッジに重みがあるかどうかを指定します。 |
edgeWeightCol | 不可 | デフォルト値なし | 入力エッジテーブルのエッジ重み列。 |
例:
SQLスクリプトコンポーネントを頂点としてキャンバスに追加し、次のSQL文を実行してトレーニングデータを生成します。
drop table if exists SSSP_func_test_edge; create table SSSP_func_test_edge as select flow_out_id,flow_in_id,edge_weight from ( select "a" as flow_out_id,"b" as flow_in_id,1.0 as edge_weight union all select "b" as flow_out_id,"c" as flow_in_id,2.0 as edge_weight union all select "c" as flow_out_id,"d" as flow_in_id,1.0 as edge_weight union all select "b" as flow_out_id,"e" as flow_in_id,2.0 as edge_weight union all select "e" as flow_out_id,"d" as flow_in_id,1.0 as edge_weight union all select "c" as flow_out_id,"e" as flow_in_id,1.0 as edge_weight union all select "f" as flow_out_id,"g" as flow_in_id,3.0 as edge_weight union all select "a" as flow_out_id,"d" as flow_in_id,4.0 as edge_weight ) tmp;
データ構造
SQLスクリプトコンポーネントを頂点としてキャンバスに追加し、次のPAIコマンドを実行してモデルをトレーニングします。
drop table if exists ${o1}; PAI -name SSSP -project algo_public -DinputEdgeTableName=SSSP_func_test_edge -DfromVertexCol=flow_out_id -DtoVertexCol=flow_in_id -DoutputTableName=${o1} -DhasEdgeWeight=true -DedgeWeightCol=edge_weight -DstartVertex=a;
SQLスクリプトコンポーネントを右クリックし、[データの表示]> [SQLスクリプトの出力] を選択してトレーニング結果を表示します。
| start_node | dest_node | distance | distance_cnt | | ---------- | --------- | -------- | ------------ | | a | a | 0.0 | 0 | | a | b | 1.0 | 1 | | a | c | 3.0 | 1 | | a | d | 4.0 | 3 | | a | e | 3.0 | 1 |