したがって、問題は次のとおりです。ツリーであるグラフと、使用できるエッジの数が与えられます。v1 から、既に訪れた頂点のいずれかから外れるエッジを選択します。
例:
この例では、最適なアプローチは次のとおりです。
for k==1 AC -> 5
for k==2 AB BH -> 11
for k==3 AC AB BH -> 16
最初は、これは A から始まる長さ k の最大パスを見つける問題ですが、これは些細なことですが、ポイントはいつでも別の方法を選択できるため、そのアプローチは機能しませんでした。
私がこれまでに考えたこと:
木を k で切断し、すべての可能性をブルート フォースします。
すべてのエッジのエッジに行くコストを計算します。コストには、移動しようとしているエッジの前のすべてのエッジの合計を、そのエッジに到達するために追加する必要があるエッジの量で割った値が含まれます。そこから、すべてのエッジの最大値を選択し、コストを更新して、k に達するまでこれを繰り返します。
2 番目のアプローチは良さそうに見えますが、ナップザックの問題を少し思い出します。
私の質問は次のとおりです。これに対するより良いアプローチはありますか? この問題はNPですか?
編集:トリミングの答えの反例: