すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:単一ソース最短パス

最終更新日:Jan 20, 2025

単一ソース最短パスは、グラフ内の特定のソースノードから他のノードへの最短パスを計算するために使用されます。 最短経路は、ダイクストラ (Dijkstra) アルゴリズムを用いて計算される。 単一ソースの最短パスは、負でないエッジ重みを持つグラフに適しています。 ネットワークルーティング、交通計画、地理情報システムなどの分野で広く適用されています。

コンポーネントの設定

方法1: パイプラインページでコンポーネントを設定する

Machine Learning Designerのパイプラインの詳細ページで、単一ソース最短パスコンポーネントをパイプラインに追加し、次の表に示すパラメーターを設定します。

タブ

パラメーター

説明

フィールド設定

ソース頂点列

エッジテーブルの開始頂点列。

ターゲット頂点列

エッジテーブルの末尾の頂点列。

エッジ重量コラム

エッジテーブルのエッジ重み列。

パラメーター設定

初期ノードID

最短パスの計算に使用される開始頂点。

チューニング

数の労働者

並列ジョブ実行の頂点の数。 並列性とフレームワーク通信コストの程度は、このパラメータの値とともに増加します。

ワーカーメモリ (MB)

1つのジョブで使用できるメモリの最大サイズ。 単位:MB。 デフォルト値: 4096

使用済みメモリのサイズがこのパラメーターの値を超えると、OutOfMemoryエラーが報告されます。

方法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

使用済みメモリのサイズがこのパラメーターの値を超えると、OutOfMemoryエラーが報告されます。

splitSize

非対象

64

データ分割サイズ。 単位:MB。

startVertex

対象

デフォルト値なし

開始頂点のID。

hasEdgeWeight

非対象

false

入力エッジテーブルのエッジに重みがあるかどうかを指定します。

edgeWeightCol

非対象

デフォルト値なし

入力エッジテーブルのエッジ重み列。

例:

  1. パイプラインの詳細ページで、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;

    データ構造

    image

  2. 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;
  3. キャンバスの左上隅で、imageをクリックしてパイプラインを実行します。

  4. パイプラインの実行後、手順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            |