変更を最小限に抑える単純な「デフラグ」ロジック?
編集: はっきりと私はこれをうまく説明しなかったので、例を使ってもう一度試してみましょう。私は与えられたサイズの「パイプ」を持ち、与えられたオフセットで信号がルーティングされます。パイプは、異なるオフセットの信号でフラグメント化される可能性があり、新しい信号を適合させることが不可能になります。パイプをデフラグするための信号の配置方法を教えてくれるアルゴリズムが必要です。しかし、実際には最小限の数の信号が移動しています!だから例のために.. サイズ16のパイプがあるとします。これには、サイズとオフセットが記述された次の信号があります。 offset 0: A (size of 4; fills slots 0-3) offset 5: C (size of 2, fills slot 5-6) offset 8: B (size of 4, fills 8-11) offset 14: D (size 2, fills 14-15) Pipe: AAAA_CC_BBBB__DD この場合、オフセット4および7で1つのスロットを開き、オフセット12-13で2つのスロットを開いています。次に、このパイプにサイズ4の信号を追加するとします。現在、そのための連続したスペースはありませんが、デフラグすると、十分なスペースがあることがわかります。「明白な」ソリューションは、次のようにすべての信号を「上部」でグループ化することです。 offset 0: A (size 4, fills 0-3) offset 4: B (size …