Sad*_*ser 4 algorithm data-structures
这是编程面试要素中的一个变体问题,没有附带解决方案。
您如何计算可以放置以攻击每个未覆盖的正方形的最小皇后数量?
问题是要在图形中找到最小的控制集(在您的情况下是女王图形http://mathworld.wolfram.com/QueenGraph.html),这个更普遍的问题是NP-Hard。即使这种减少(在这种特定类型的图上)不太可能是NP-Hard,您也可能希望找不到任何有效的(多项式)算法,而实际上,到目前为止,没有人找到一个。
作为面试问题,我认为可以接受的答案是回溯算法。您可以添加一些小的改进,例如,如果您已经在板上放置了(n-2)个女王,则始终停止搜索。
有关该算法的更多信息和伪代码以及更复杂的算法,我建议阅读:
Fernau,H.(2010年)。皇后区的最小主导集:简单的编程练习?离散应用数学,158(4),308-318。 http://www.sciencedirect.com/science/article/pii/S0166218X09003722