假设我有一个列表,用于定义用户(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的根,但这并不能提供最佳的解决方案。我还考虑过使用联合查找,并且在我运行的某些示例中似乎可以使用,但是我不确定解决方案的正确性。
我也考虑过使用最大流量解决此问题,但这似乎不是正确的方向。
我也不认为贪婪算法会解决这个问题:(
可怕的可视化: