したがって、私はいくつかのセットを持っており、すべてのセットから少なくとも1つの要素を含むセットの最小数を見つける必要があります。これをより具体的にするために、私は一連のサーバー名を持っており、各サーバーにはサービスウィンドウがあります。特定の期間を指定して、指定されたすべてのサーバーをカバーするサービスウィンドウの最小セットを見つけたいと思います。
目的のマシンごとに、重複しないすべてのN分の時間セグメントのリストを生成するコードがすでにあります。可能なすべての組み合わせを生成し、一意の要素の数が最も少ないものを選択することで、ブルートフォース攻撃を行うつもりでしたが、最初にすべてのホストからの一意のウィンドウだけにセットを減らしたとしても、それは信じられないほど非効率的です(特にいくつかのシステムよりも)。
次に、各タイムスロットに収まるホストの数でタイムスロットを並べ替え、ホストの数が最も多いスロットを選択し、割り当てられていないホストのすべてのスロットのリストを再生成して、最も多くを選択するようなことを考えました。すべてのホストが考慮されるまで、人気のあるスロット、再計算など。それで答えは得られますが、最もバランスの取れたセットを選択する機会は実際にはありません。第2の目標は、サービスあたりのホスト数の標準偏差が最小のサービスウィンドウのセットを見つけることです。窓。したがって、100個のホストがある場合、上記のアルゴリズムで検出される可能性のある3つの「98、1、および1」ウィンドウを実行するのではなく、ウィンドウごとに約50個のホストを提供するウィンドウを優先します。しかし、私のオプションが「98、1、1」の場合 または、それぞれ10個のウィンドウが10個あります。私はむしろ3つをしたいです。
とにかく、この問題を表すためにある種のグラフを使用できるようですが、CSパスではソフトウェアよりもハードウェアに重点を置いており、グラフの問題を解決することは決して私の得意ではありませんでした。したがって、この特定の問題や適切な検索用語の詳細をどこで読むかについて、いくつかの提案をいただければ幸いです。:)