我有这个问题,我没有看到有效的解决方案,但采取蛮力的方法。有人会介意借给我一个手吗?
问题包括图G =(V,E)有向,加权和非循环。边缘具有权重w(u,v)。 w(u,v)的值仅取决于原点的顶点(w( u ,x)= w( u ,y)if(u,x) (u,y)存在)。最初,每个顶点可以具有多个传入和/或传出边缘。目标是以总剩余重量最大的方式保持每个顶点的一个输出边缘最多。具有传出边的顶点不能具有传入的边。例如,考虑图1.左侧图是原始图。最多保留一个输出边缘,右侧图表代表最大总重量的解决方案,17。
然而,这个问题还有另一个限制因素。为每个顶点分配2个值,容量和负载。容量表示它可以附加多少负载。在找到最大总重量配置时,还必须考虑容量。图2显示了与图1相同的图表,但现在容量约束起着决定性的作用。请注意,在这种情况下,最大总重量配置是不同的(右侧图,图2)。
总之,为了获得最大总重量,有3个限制:
我提出的唯一解决方案是测试所有可能的配置,检查它是否有效并跟踪最大值。有没有人有更好的方法来解决这个问题?
答案 0 :(得分:0)
您的问题对我来说似乎有knapsack问题:选择一组边缘以最大化利润。
您可以肯定做的是使用constraint satisfaction方法。例如,选中解决背包问题的this code。使其适应您的需求应该是一项相当简单的任务。
您不需要使用此方法的任何匹配算法 - 解决过程将直接构建最佳解决方案。但是,对于较大的图形(数千个边/节点),可能需要花费大量时间/内存。