2つの多項式(木で表される)間の距離を見つける


20

遺伝子プログラミングに携わっている同僚から次の質問がありました。私は最初に貪欲なアプローチに基づいてそれを解決しようとしましたが、考え直して、欲張りアルゴリズムの反例を見つけました。だから、ここで言及する価値があると思いました。


式ツリーで表される2つの多項式を考えます。たとえば、x32x+1およびx2+4を以下に示します。

ルール:

  1. 各ノードは、変数名x,y,z,)、数値、または操作(+、-、×)のいずれかです。
  2. ツリーの順序トラバーサルは、有効な多項式になるはずです。
  3. 操作ノードにはインディグリー2があります。他のノードにはインディグリー0があります。すべてのノードにはアウトディグリー1があります(アウトディグリーが0であるルートを除く)。

ツリーのノードNで、次のように基本操作を定義します。

  1. x×
  2. 基本的な操作では、Nの上に式ツリーを構築できます(以下の例を参照)。

タイプ1の基本操作のコストは1です。タイプ2のコストは、新しく構築された式ツリーの{+、-、×}操作の数に等しくなります。

タイプ2の例:ノードNの上に構築された式ツリーは2つの操作(-と×)を使用するため、次の基本操作のコストは2です。

T1とT2を多項式を表す2つの式ツリーとします。T1とT2の距離を次のように定義します。T1をT2に変換するための基本操作の最小コスト。変換されたツリーがT2と同じ構造を持つ必要はないことに注意してください。T2と同じ多項式を計算するだけです。(例についてはコメントを参照してください。)

問題: T1とT2が与えられた場合、それらの距離を計算するアルゴリズムを提示します。

例1: T1とT2を、この投稿の冒頭で示した2つのツリーとします。右のツリーを左のツリーに変換するには、×の上にコスト3のツリーを構築し、4を1に変更します(合計コストは4です)。

x4x4+4x3+6x2+4x+1x(x+1)4x4x36x24x


2
「削除」操作が許可されていない場合、距離は距離ではありません。たとえば、ツリーT1 =(x * x)+4はT2 = xに変換できませんが、T2はxの上に(* x)を追加してから(+4)を追加してT1に変換できます。大丈夫ですか ?または、T1をT2に、またはT2をT1に変換するために必要な最小操作として距離を定義する必要があります。
マルツィオデビアージ

4
与えられた(除算なしの)2つの算術式が同じ多項式を表す場合にのみ、コストは0に等しくなります。私はそれを正しく覚えていれば、これはP.であることが知られていないCORP(無作為割り当てによる)における典型的な問題である
剛伊藤

4
@剛:ああ、なるほど。多項式の同一性テスト問題を指しています。(参考文献:[1 ]および[2 ])。これについて考えなければなりません。その間、どんな提案も歓迎します。
MS Dousti

4
はい、それだけです。多項式同一性テスト問題の典型的なバージョンでは、2つの入力多項式が式ではなく回路として与えられているようです。したがって、式のバージョンが「典型的」であるという私の言い回しは、おそらく不正確でした。とにかく、Pに式のバージョンを入れることも未解決の問題のようです。
伊藤剛

2
@Vor:現在の定式化では、次の意味で、入力T1は実際にはツリーであり、入力T2はたまたまツリーとして与えられる多項式です。T1を同じ多項式を表す別のツリーに変更すると、一般に答えが変わる可能性がありますが、T2を同様に変更しても変わりません。
伊藤剛

回答:


10

ツリー編集距離は、文字列編集距離の一般化です。2つのツリー間の距離は、ノードの挿入と削除の最小数であり、1つのツリーを別のツリーに変えるために必要な再ラベル付けです。(ノードvを削除すると、vの子はparent(v)の子になります)。ツリーが順序付けられていない場合、問題はNP困難ですが、順序付けされている場合(つまり、兄弟間に左から右の順序がある場合)、問題はO(n ^ 3)時間で解決可能です(その論文のように) Sadeqが言及した)。これを説明する適切な調査:http : //portal.acm.org/citation.cfm?id=1085283


1
ありがとうアビブ。回答を統合すると素晴らしいでしょう(以前のアカウントを使用すると問題があると思います)。この投稿のアドバイス(特に、このリンク)を使用できます。
MS Dousti

このアプローチは、同等の多項式を持つさまざまなツリーをどのようにカバーしますか
narek Bojikian
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.