我正在解决用户提供可以转换为不同最终产品的输入产品列表的问题。每个输入产品都有一组特定的输出。用户还提供了预期输出产品的列表以及他们想要的每个产品的数量。我正在寻找是否有一种已知的算法可以将各种输入与输出相匹配,以尽可能地满足需求。
示例:
产品A可以成为产品X和Y
产品B可以成为产品Y和Z有5 A和7 B. 你能制作3 X,4 Y和6 Z吗?
我想要一种可以帮助我找到输出的方法:
3 A - > X
2 A - > ÿ
2 B - > ÿ
5 B - > ž
缺少1 Z
答案 0 :(得分:0)
您可以通过将任何max flow algorithms应用于如下构造的流网络来解决此问题:
以下是网络如何查找您的示例。
如果最大流量等于进入T的总容量,则解决方案由min cat定义;否则,解决方案是不可能的。
注意:如果您只需要是/否答案,则可以删除A i 节点,并将S中的边添加到Z j ,容量等于所有输入产品的输出总和(即X = 5,Y = 12,Z = 7)。这将产生相同的决策结果,但您无法确定在此过程中需要消耗多少种类型的输入产品。