4

バスの時刻表をループして、乗客が a から b に移動するために必要なtableLegs脚の配列を見つけるのに問題があります。たとえば、乗客がofから出発してofに移動したい場合、その旅行を構成する脚の配列( , , ), フォローするのに十分簡単であることを願っています.legIDLocIDcLocIDpLegID010204

テーブル脚

=============================================
LegID    startLocID   endLocID   departTime
 01          a           e        9:00
 02          e           i        10:00
 03          i           m        11:00
 04          i           q        11:00

テーブルレッグストップ

=========================================
LegID     stopNo    LocID     TripTime
  01         1         a       0 min
  01         2         b       20 min
  01         3         c       30 min
  01         4         d       40 min
  01         5         e       60 min
  02         1         e       0 min
  02         2         f       20 min
  02         3         g       30 min
  02         4         h       40 min
  02         5         i       60 min
  03         1         i       0 min
  03         2         j       20 min
  03         3         k       30 min
  03         4         l       40 min
  03         5         m       60 min
  04         1         i       0 min
  04         2         n       20 min
  04         3         o       30 min
  04         4         p       40 min
  04         5         q       60 min

ここで達成しようとしていることの基礎を示すために、これは各旅行が異なる区間で構成されているバスの Web サイトです。

4

2 に答える 2

1

このタスクは、グラフ内の最短経路の検索として知られています。MySQLストアドプロシージャの観点からこれを解決するためのダイクストラアルゴリズムの実装が存在します。

ただし、グラフはノードとエッジの2種類のエンティティのみを使用するため、テーブル構造を少し変更する必要があります。したがって、脚をエッジに分解し、エッジで最短経路を取得した後、脚を推定して戻す必要があります。

于 2012-11-01T07:59:07.120 に答える
0

これには、A* 検索アルゴリズムを使用できます。http://en.wikipedia.org/wiki/A_starを参照

于 2012-11-01T07:53:52.243 に答える