algorithm – 从有限的一组图块中找出最大二乘(近似值)

我有一套最终的瓷砖,每个边都可以有四种颜色.

任务是从这个图块的给定集合(有限)中找到最大可能的正方形构建.瓷砖可以旋转.

我需要设计3种算法来寻找这项任务的解决方案.一个完整的和两个aproximations.

显然,这是我的算法类的任务,所以我不是要求完整的解决方案(因为这是不公平的),而是针对某些方向.

我已经设计了一种完整的算法(使用回溯 – 搜索大小为sqrt(n)的正方形 – 如果找不到尝试寻找更小的等等)但我不知道如何创建aproximation算法.我认为一个人会有点愚蠢,只有在特定的情况下才能找到一个好的答案,只是为了证明它不是一个好的方法,但我仍然需要一个快得多的回溯和相当好的一个.

这也是NP难的问题吗?我的回溯算法是指数算法,但它并不意味着没有更好的算法……

编辑:我有完整的指数时间算法,有人能给我一些提示,如何用多项式时间或更好的指数形式建立这种问题的某种近似?

EDIT2:我认为这个问题可以改成将图形简化为方形网格图(http://mathworld.wolfram.com/GridGraph.html)的问题.如果可以以构建网格的方式排列图块,仍然存在问题,但这可能是一个很好的起点.有没有,例如,贪婪或任何其他aproximation算法,以减少图形到方格图?

最佳答案 假设您的回溯算法构造k-by-k平方以增加k的值.

您可以使用启发式扩展回溯算法.因此,不要随意选择下一个图块,而是选择并附加一个图块,使得免费图块的颜色“同意”广场上的颜色.最大的问题是找到“协议”启发式.一种可能的启发式方法是在免费瓷砖上找到最不常见的颜色并使用它.

点赞