Algorithm 将评论员分配到有关其首选主题的论文的算法

Algorithm 将评论员分配到有关其首选主题的论文的算法,algorithm,Algorithm,我们将收到180篇关于不同主题的论文。每篇文章都有一个或多个标签,表明文章的主题:历史、诗歌、艺术、哲学等 这些论文将由15名评审员进行评审。所有的评论者都喜欢阅读某些主题,因此他们也会附上一个或多个标签 然而,所有人都愿意阅读和评论那些标有他们不喜欢的主题的文章。 每篇文章将由两名评论员阅读。每位评论员将阅读24篇文章 我如何确保论文的分发方式,使每位评论员都能获得关于他/她最喜欢的主题的最大论文量 列出评论者及其标签,如:诗歌/艺术;鲍勃:诗歌;辛迪:艺术/哲学 除去该列表中不在文章标签列表

我们将收到180篇关于不同主题的论文。每篇文章都有一个或多个标签,表明文章的主题:历史、诗歌、艺术、哲学等 这些论文将由15名评审员进行评审。所有的评论者都喜欢阅读某些主题,因此他们也会附上一个或多个标签

然而,所有人都愿意阅读和评论那些标有他们不喜欢的主题的文章。 每篇文章将由两名评论员阅读。每位评论员将阅读24篇文章

我如何确保论文的分发方式,使每位评论员都能获得关于他/她最喜欢的主题的最大论文量

  • 列出评论者及其标签,如:诗歌/艺术;鲍勃:诗歌;辛迪:艺术/哲学
  • 除去该列表中不在文章标签列表中的所有标签
  • 现在从只剩下一个标签的评论员开始,在他们中间均匀地分发带有该标签的文章
  • 接下来,请对两个主题感兴趣的评论者分发它们
  • (缺少这些步骤)
  • 最后一步:将所有无法与评论者匹配的文章,用它们来填补评论者列表中剩余的空白,从而确保所有评论者都有24篇文章要读

  • 我想我知道算法的第一步,但是我如何确保每个评论员的分布最大化他们最喜欢的主题的文章量?

    你可以使用最小成本流公式来解决这个问题

    这样做的目的是建立一个图表,其中沿边缘的流动表示将一篇文章分配给特定的评论者

    边缘具有容量,这意味着沿边缘的最大流量。在这种情况下,能力可以用来控制每篇文章需要多少评论,以及每个评论人可以处理多少篇文章

    边缘还具有权重,允许您为特定组合分配成本。在这种情况下,如果有人正在阅读他们不喜欢的主题,我们可以有1的成本。权重可以任意调整,例如,如果有人真的不想阅读关于算法的文章

    一旦形成一个图表,就有标准的算法来寻找最小成本流。我最喜欢的库是Networkx for Python

    Python代码 此代码打印出分配:

    An E1
    An E0
    An E3
    An E2
    Bob E0
    Bob E2
    Cindy E1
    Cindy E3
    

    你的要点描述相当不完整,困难隐藏在单词后面。例如,当有多个单主题评论员A、B和C,以及多篇主题为ABC、AB和A的文章时,你如何在步骤3中平均分配主题?你是对的。我没有充分考虑这一步。啊,对不起,我误解了,我认为给你的要点是任务的一部分,你的问题只是关于第5步。一般来说,通过分而治之的方法来解决问题是一种很好的方法,它通常会导致贪婪的最优解。然而,在大多数情况下,类似的问题已经得到解决,您可以巧妙地将该解决方案应用到您的具体问题实例中,正如Peter De Rivaz在下面的回答中所演示的那样。感谢这个漂亮的解决方案!我在ipython笔记本上试用过,效果非常好。我不得不嘲笑你提到了为不愿意阅读算法的评论者调整权重的能力。如果图表提供了这些解决方案,我肯定会仔细阅读。
    An E1
    An E0
    An E3
    An E2
    Bob E0
    Bob E2
    Cindy E1
    Cindy E3