私は、特定の数の部屋/座席を予約できる予約システムを作成しています。 1〜100の番号を付けられた座席/部屋を予約できるとします。私の講師は、予約番号を経済的に分けるアルゴリズムを使って、売れ残った座席が最小限に抑えられるよう提案しました。たとえば、10席がある場合は、何らかの番号割り当てアルゴリズム
ユーザ1冊4席です。与えられた(1-4項)。 ユーザー2冊1席。与えられた(no 5)。 ユーザー3冊4席与えられた(no 6-9)。 ユーザ2がキャンセルされます。解放する(5番)。 ユーザー4は2席の予約を希望しますが、唯一の席は5 & 10です(一緒には予約できません)。
私の講師は、この問題に共通のアルゴリズムが存在するが、その名前を覚えていないと述べました。私はそれがディスク上のデータに使用されるアルゴリズムのようだと思います。
アイデア? 多くのありがとうございます。
Cで 'malloc()'と 'free()'を実装するのと同じアルゴリズムが使用されます。フリーである(メモリ)範囲のリンクリストを頻繁に使用します。新しい要求が到着すると、要求を満たすのに十分な大きさのブロックが空きリストで検索されます。ブロックを選択する方法(たとえば、適合する最初のものを選択し、適合する最小のものを選択し、最も大きいものを選択する)と、どこでも最適なポリシーを選択する方法には、異なるトレードオフがあります。 –