単一ソース最短パスは、グラフ内の特定のソースノードから他のノードへの最短パスを計算するために使用されます。 最短経路は、ダイクストラ (Dijkstra) アルゴリズムを用いて計算される。 単一ソースの最短パスは、負でないエッジ重みを持つグラフに適しています。 ネットワークルーティング、交通計画、地理情報システムなどの分野で広く適用されています。
コンポーネントの設定
方法1: パイプラインページでコンポーネントを設定する
Machine Learning Designerのパイプラインの詳細ページで、単一ソース最短パスコンポーネントをパイプラインに追加し、次の表に示すパラメーターを設定します。
タブ | パラメーター | 説明 |
フィールド設定 | ソース頂点列 | エッジテーブルの開始頂点列。 |
ターゲット頂点列 | エッジテーブルの末尾の頂点列。 | |
エッジ重量コラム | エッジテーブルのエッジ重み列。 | |
パラメーター設定 | 初期ノードID | 最短パスの計算に使用される開始頂点。 |
チューニング | 数の労働者 | 並列ジョブ実行の頂点の数。 並列性とフレームワーク通信コストの程度は、このパラメータの値とともに増加します。 |
ワーカーメモリ (MB) | 1つのジョブで使用できるメモリの最大サイズ。 単位:MB。 デフォルト値: 4096 使用済みメモリのサイズがこのパラメーターの値を超えると、 |
方法2: PAIコマンドを使用してコンポーネントを構成する
PAIコマンドを使用してコンポーネントパラメータを設定します。 SQL Scriptコンポーネントを使用してPAIコマンドを呼び出すことができます。 詳細については、「シナリオ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 | 非対象 | フルテーブル | 入力エッジテーブルのパーティション。The partition in the input edge table. |
fromVertexCol | 対象 | デフォルト値なし | 入力エッジテーブルの開始頂点列。 |
toVertexCol | 対象 | デフォルト値なし | 入力エッジテーブルの末尾の頂点列。 |
outputTableName | 対象 | デフォルト値なし | 出力テーブルの名前。 |
outputTablePartitions | 非対象 | デフォルト値なし | 出力テーブルのパーティション。 |
ライフサイクルの設定 (Set lifecycle) | 非対象 | デフォルト値なし | 出力テーブルのライフサイクル。 |
workerNum | 非対象 | デフォルト値なし | 並列ジョブ実行の頂点の数。 並列性とフレームワーク通信コストの程度は、このパラメータの値とともに増加します。 |
workerMem | 非対象 | 4096 | 1つのジョブで使用できるメモリの最大サイズ。 単位:MB。 デフォルト値: 4096 使用済みメモリのサイズがこのパラメーターの値を超えると、 |
splitSize | 非対象 | 64 | データ分割サイズ。 単位:MB。 |
startVertex | 対象 | デフォルト値なし | 開始頂点のID。 |
hasEdgeWeight | 非対象 | false | 入力エッジテーブルのエッジに重みがあるかどうかを指定します。 |
edgeWeightCol | 非対象 | デフォルト値なし | 入力エッジテーブルのエッジ重み列。 |
例:
パイプラインの詳細ページで、SQL Scriptコンポーネントをパイプラインに追加し、そのコンポーネントをクリックします。 [パラメーター設定] タブで、[スクリプトモードの使用] および [テーブル作成ステートメントを追加するかどうか] をオフにし、[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 Scriptコンポーネントをパイプラインに追加し、そのコンポーネントをクリックします。 [パラメーター設定] タブで、[スクリプトモードの使用] と [テーブル作成ステートメントを追加するかどうか] をオフにし、[SQLスクリプト] エディターに次のSQLステートメントを入力します。 このコンポーネントをステップ1で追加したコンポーネントと接続します。
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;キャンバスの左上隅で、
をクリックしてパイプラインを実行します。パイプラインの実行後、手順2で追加した [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 |