【问题标题】:algorithm for solving resource allocation problems解决资源分配问题的算法
【发布时间】:2011-11-13 14:45:51
【问题描述】:

您好,我正在制定一个计划,让学生报名参加在全国多个城市举办的考试。在报名时,学生会按照自己的喜好提供他们想参加考试的三个城市的列表。因此,学生可能会说他最喜欢的考试中心是纽约,其次是芝加哥,然后是波士顿。

现在请记住,由于考试中心的容量有限,它们无法容纳每个学生的首选。但是,我们会尝试为尽可能多的学生提供他们的首选或第二选择中心,并尽可能避免学生不得不放弃学生的第三选择中心

现在任何可以使这个过程更有效的排序算法的想法。简单的方法是首先通过学生分配尽可能多的第一选择列表,然后通过第二选择列表并分配。然而,这可能会导致列表中的第一个学生获得他们的第一个中心,而最后一个学生获得他们的第三个选择,或者更糟糕的是没有他们的选择。任何可以提高效率的方法

【问题讨论】:

  • 我的直觉是,一个“完美”的算法将是 NP 完全的,你必须接受一个近似值。
  • 为什么不让第一批报名的学生优先呢?无论如何,你必须区分它们。
  • 问题是客户明确告诉我们不要采用先到先得的方式。原因是不同地方的学生填写考试表格的日期不同,所以他们填写的时间比其他人晚也不是他们的错。
  • 为什么不随机挑选学生呢?这种方式没有歧视;)
  • 分配资源的过程不叫排序。我更改了标题以更贴近您的问题。

标签: algorithm


【解决方案1】:

听起来像是经典stable marriages problemcollege admission problem 的变体。维基百科列出了前者的线性时间(偏好数量,O(n²) 人数)算法; NRMP 为后者描述了一个efficient algorithm

我怀疑,如果您为学生随机生成考点偏好(每个考点一个Fisher–Yates shuffle),然后应用稳定的婚姻算法,您将得到一个相当公平和有效的解决方案。

【讨论】:

    【解决方案2】:

    这个问题可以表述为minimum cost flow 的一个实例。设 N 为学生人数。让每个学生成为容量为 1 的源顶点。让每个考试中心成为容量为 1 的汇顶点,嗯,它的容量。从每个学生到他的第一个、第二个和第三个选择做一个弧线。将首选弧的成本设置为 0;第二选择的成本为 1;第三选择的成本是 N + 1。

    找到一个移动 N 个单位流的最小成本流。假设您的求解器返回一个积分解(它应该;流动 LP 完全是单模的),每个学生将一个单元流向他指定的中心。成本最大限度地减少了第三选择分配的数量,打破了第二选择分配的数量。

    【讨论】:

      【解决方案3】:

      有一类算法可以解决这种分配有限资源的问题,称为拍卖。基本上在这种情况下,每个学生都会得到一定数量的钱(他们可以花费的数字),然后你的软件会在这些学生之间进行投标。您可以使用基于偏好的公式。

      一个例子是教程时间。如果您放下您的偏好,那么您将有效地为那些时间出价更高,而为您不想要的时间出价更少。所以如果你没有得到你的偏好,你就有更多的“钱”来竞标其他教程。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-25
        • 2012-01-14
        • 2012-01-24
        • 2016-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多