我在leetcode中遇到了一个名为“二叉树照相机”的问题。
我想知道如何解决这个类似的问题:-
您必须将摄像机放置在图的节点上,以便覆盖整个图。节点上的摄像机监视其所有直接邻居节点及其自身。找到覆盖所有节点所需的最少摄像机数量。
答案 0 :(得分:0)
这是set cover problem,有许多众所周知的算法。要将其建模为集合覆盖问题的一个实例,请将每个节点映射到该节点处的摄像机将覆盖的节点集。选择最少数量的节点的最初问题等同于选择那些集合中最少的节点。
通常,这是一个“ NP Hard”问题,这意味着没有已知的算法总是能够提供最小的覆盖率,并且可以很好地扩展到问题的大实例。由于问题要求最小值,因此启发式算法不适合,因此您需要执行类似backtracking search的操作。
答案 1 :(得分:0)
此问题称为最小值Dominating Set,对于一般图形而言,它是NP难的。存在通过逼近,参数化或限制图类来解决该问题的算法。有关详细信息,请参见Wikipedia链接。