3

ここ数日、最適な解決策を見つけることなくこの問題について考えていたため、この質問がありました。

N 個の変数のセットがあるとします。これをユーザーが構成して、ルールのリストと次のようなアクションを作成できます。

variables V_1,V_2,V_3
V_1 > 5 -> "Turn left"
V_2 < 6 -> "Turn right"
1 < V_1 < 4 -> "Continue straight"
V_1 = 0 AND V_2 > 6 AND V3 > 5 -> "Go backwards"
default -> "Stay"

変数は必ずしも整数である必要はありません。ルールはすべて AND 句のリストとそれに続くアクションで構成されているとします。

私がやりたいことは、(0,7,9) のような入力を高速に処理して適切なアクションを返すことができる決定木を構築することです。今のところ、私の唯一のアイデアは、変数空間を分割し、入力状態がどこに収まるかを確認することですが、それは遅い解決策のようです.誰かがより速いかもしれない何かを知っていますか?

4

1 に答える 1

0

何が遅いのですか?ルールが多い?ルールが長い?変数が多い?ルールの処理が遅い?

あまり持っていない場合変数 rules、私は明らかにハッシュテーブルに行きます。

これは、あなたが述べた問題のツリーの例です(必ずしも最適ではありません)。

variables V_1,V_2,V_3
V_1 > 5 -> "Turn left"
V_2 < 6 -> "Turn right"
1 < V_1 < 4 -> "Continue straight"
V_1 = 0 AND V_2 > 6 AND V3 > 5 -> "Go backwards"
default -> "Stay"

   V1         V2      V3
   <0 ------- <6 --------------- Right
              >=6 -------------- Stay

   0 -------- <6 --------------- Right
               6 --------------- Stay
              >6 ---- <=5 ------ Stay
                      >5 ------- Backwards

   ]0-1] ---- <6 --------------- Right
              >=6 -------------- Stay

   ]1-4[ ----------------------- Straight

   [4-5] ---- <6 --------------- Right
              >=6 -------------- Stay

   >5 ------- <6 --------------- Right
              >=6 -------------- Stay
于 2011-07-13T09:17:37.167 に答える