达到所有叶子的最小节点数

时间:2019-02-18 08:38:31

标签: algorithm optimization graph-algorithm

假设我有一个列表,用于定义用户(A-G)是否具有对站点(1-6)的管理员访问权限:

 A: [1,2,3]
 B: [2,3,4]
 C: [3,4,5]
 D: [4,5,6]
 E: [1,2]
 F: [3,4]
 G: [5,6]

我想使用最少数量的不同用户凭据从每个站点获取一些数据。在上面的示例中,一种解决方案是使用用户A和C。

我已经考虑过将问题建模为图形,因此用户站点列表将是一个森林,其中每个站点都是一片叶子。

我已经考虑过添加一个连接到所有用户节点并运行BFS的根,但这并不能提供最佳的解决方案。我还考虑过使用联合查找,并且在我运行的某些示例中似乎可以使用,但是我不确定解决方案的正确性。

我也考虑过使用最大流量解决此问题,但这似乎不是正确的方向。

我也不认为贪婪算法会解决这个问题:(

可怕的可视化:

An awful visualization

0 个答案:

没有答案