我正在尝试解决与分发相关的以下问题 -
我有一个项目列表L(I1,I2,...... In)按重要性排序,I1是最重要的。每个项目都分配了多个标签,这些标签的组合在每个项目上可以不同,因此I1可以有标签T1和T2,I2可以有标签t2,t3和t4,I3可以有标签T1,依此类推。
现在,我必须从这个列表L中进行批量处理,并根据以下约束条件分配项目(根据标签) -
我在想一个解决方案,首先,我列出了与每个特定标签相对应的项目。我从列表中选择特定标签所需的最小项目。因此,我会从带有标签t1的项目列表中选择带有标签t1的x1项目,而不管这些项目是否包含任何其他标签。这样我就可以确保满足所有标签的“最小”标准。但是对于最大部分,每个标签肯定会过火。如何递归地将批次中的项目替换为L中的剩余项目以进行最终所需的分发?
任何其他解决方案都会很棒。或任何现有的算法,可以让我朝着正确的方向来解决这个问题。
我知道这个问题有点过于冗长,可能有点令人困惑,但我试图尽可能地解释它,当然,我想这个问题可能很有趣。
答案 0 :(得分:0)
这是一个NP难题。例如,您可以像这样减少图形着色。每个顶点对应于列表L中的元素,每个批对应一种颜色,每个边对应于仅存在于两个入射顶点上的标记。如果设置约束以使每个批次最多只能包含一个标记,则这相当于为每个顶点指定一种颜色,使得两个相邻顶点之间没有相同的颜色。
在这种情况下,你基本上有两个选择: