私は型システムに取り組んでいて、最も低い共通の祖先に似ているように見える問題を見つけました。2つのタイプがある場合、同じターゲットタイプになる変換の最小シーケンスを見つける必要があります。単純なタイプツリーがある場合、結果を取得する方法はわかっていますが、残念ながら、もう少し複雑なグラフ構造があります。
そのグラフにはいくつかの重要なポイントがあります。これは単方向であり、ループは形成されません。タイプの数に制限がないため、静的に作成することはできません。パスの距離は一般的に非常に短いです。それは、多くのショートカットエッジを持つツリーのように「感じ」ます。
最初は最低の共通祖先を調べましたが、それは主にツリーアルゴリズムとして記述されています。私はそれを適応させることができるという希望をまだあきらめていません。他の可能性は、より一般的な経路探索アルゴリズムです。
私は誰かが以前にこの問題、または同様の問題を見たことがあることを願っています。何かが存在している必要があると思い込み、間違った用語/名前を検索しているだけであることは十分によく知られているようです。
これをより正式に説明するための私の試みは次のとおりです。
グラフがあり、各頂点に1組の出力エッジます。グラフは動的で、場合によっては無限なので、グラフ全体に対してG = \ {V、E =(V_x、V_y)\}の形式を作成する方法はありません。
パスは、そのノードから利用可能なエッジのいずれかをたどることにより、頂点から形成されます。。このパスの長さは、シーケンス内の頂点の数と同じです。可能なサイクルはありません。2つのノード間のすべてのパスのセットは、として表されます。
は有限のステップ数で空であると判断できることに注意してください。セット全体を列挙することは実際には不可能です。
問題は、2つの頂点から3番目の頂点への最短経路を見つけることです。すなわち、所与の、ある見つけるパスするようと存在し、最小です。
java.lang.Object