0

ここで非常に一般的な質問をして申し訳ありません。場所が間違っている可能性がありますが、ここでの回答は素晴らしいので、試してみます.

私はMYSQLデータベース、地理的特徴の1つのテーブルを持っています。オペレーターが 2 地点間で飛行する場所の 1 つの表

 |Flyings company|Point A|Point B|

  |Company ID    |A ID   | B ID  |

ポイント X からポイント Y への道をどのように組み合わせて一致させるかを検索する最も簡単な方法は何ですか? X から B、B から F、F から G、G から Y に移動する必要がある場合は、この質問がクローズされるかどうかを理解するために、任意の提案を受け入れてください。

4

2 に答える 2

1

理論的には、グラフ アルゴリズムが必要です。実際には、脚の数だけ反復し、合理的な数で制限したい場合は、自己結合クエリを使用できます。

片足ルート:

   select leg1.company, leg1.a_id, leg1.b_id 
   from flights leg1 
   where leg1.a_id=1 and leg1.b_id=2

2 つの区間ルート:

   select leg1.company, leg1.a_id, leg1.b_id, leg2.company, leg2.b_id 
   from flights leg1 join flights leg2 on leg1.b_id=leg2.a_id 
   where leg1.a_id=1 and leg2.b_id=2

3 つの区間ルート:

   select leg1.company, leg1.a_id, leg1.b_id, leg2.company, leg2.b_id, leg3.company, leg3.b_id 
   from flights leg1 join flights leg2 on leg1.b_id=leg2.a_id join flights leg3 on leg2.b_id join leg3.a_id 
   where leg1.a_id=1 and leg3.b_id=2

などなど、限界まで。

于 2013-01-17T20:10:46.470 に答える
0

必要なのは、データを使用して有向グラフを作成することです。ノードは地理的なポイントに一致し、エッジは 2 つのポイント間の操作に一致します

次に、必要な 2 つの任意のノード間のすべてのパスを検索します。

これは、データベース クエリだけで解決できる問題ではありません。完全なグラフを作成し、完全な回答のリストを提供するには、すべてのデータを (おそらく一度にではなく、最終的には) ロードする必要があります。

于 2013-01-17T19:52:12.037 に答える