【问题标题】:Dynamic Programming Tiles动态规划图块
【发布时间】:2012-04-26 15:22:40
【问题描述】:

http://www.spoj.pl/problems/GNY07H/ 在这个问题中,我们必须找到在 4Xw (w >=1) 矩形中排列 2X1 瓷砖的多种方法? 我已经尝试过这个问题,并为此付出了很多时间,但未能提出任何解决方案。如何解决这类问题。意思是如何让 dp 为他们重复。 ?

【问题讨论】:

  • @RBarryYoung 描述什么?
  • tl;dr 计算 n*4 网格图中完美匹配的数量。 FKT 适用于所有平面图。
  • @uts 你正在寻求帮助的问题。

标签: c algorithm dynamic-programming


【解决方案1】:

您可以逐行构建 4xW 矩形。当您构建下一行时,上一行可以处于 6 种不同的状态:

XXXX (1 - filled)
XX-- (2)
-XX- (3)
--XX (4)
X--X (5)
---- (6 - empty)

比如上一行是(5),你要放两张垂直的骨牌,然后下一行就是(3):

XXXX
XABX
-AB-

X(W,q) 表示一个 4xW 矩形的可能组合,其中最后一行处于状态 q,其余的被完全填充。

如果您知道所有 6 个q 状态的X(W-1,q),则可以轻松计算出X(W,q)

您知道初始状态 X(1,q)(q=1..6 -> 1, 1, 1, 1, 1,无效)。所以你可以增加 W 并得到每个 W 的这些数字。

最终结果是X(W,1)(最后一行填满)。

【讨论】:

  • 在示例中,您的意思是上一行是 5,下一行是 3?还是我错了?
  • 你是如何实现的。你能举个例子解释一下吗?
【解决方案2】:

我也是这种动态编程变体的初学者,但此链接提到 http://apps.topcoder.com/forums/;jsessionid=A5053396424C9F9BBB9337ECAC9C6C17?module=Thread&threadID=770579&start=0&mc=2#1643035 您需要应用“使用配置文件进行动态编程”,并且该链接还指向教程 http://apps.topcoder.com/forums/?module=Thread&threadID=697369&start=0&mc=19 特别是“层数+层配置文件”。

从上面的链接: “这是DP状态域中最棘手的类型。它通常用于特殊图形上的平铺或覆盖问题。经典的例子是:计算用多米诺骨牌(某些单元格)平铺矩形板的方法数不能使用);或在棋盘上放尽可能多的棋子,以免它们相互碰撞(同样,某些格子可能会受到限制)。”

有关此技术的其他更平易近人的教程可在以下位置获得:

http://sk765.blogspot.in/2012/02/dynamic-programming-with-profile.html

http://sk765.blogspot.in/2012/02/dynamic-programming-with-profile_13.html

http://sk765.blogspot.in/2012/02/dynamic-programming-with-profile_7469.html

http://sk765.blogspot.in/2012/02/dynamic-programming-with-profile_6894.html

我也在努力解决它们。

这不是对您提出的特定问题的回答,而是人们在解决此类问题时遵循的一般技术。

【讨论】:

    【解决方案3】:

    我会尝试回溯算法:首先将所有图块水平放置,然后回溯,直到您可以放置​​垂直图块(然后水平分层向前)——最终您将枚举所有可能的解决方案,并且每个解决方案仅列举一次(在最后一个回溯阶段将包含一个水平或垂直的瓦片,如果存在,它将给出唯一的解决方案。

    我不知道,但这是否是解决问题的最佳算法。

    【讨论】:

    • 平铺2*4的方法有五种。您无法及时枚举 n = 1000 的 >5**500 个解决方案。
    【解决方案4】:

    如果通过删除任何 2*1 块产生了一个模式(gemoetry),它又是中间结果,则只需设置该模式,然后它会给出递归函数。从中创建 DP。

    对于您的问题,只需查看链接。它会解释一切

    https://math.stackexchange.com/questions/664113/count-the-ways-to-fill-a-4-times-n-board-with-dominoes

    更多参考文献见IOI培训链接

    http://www.iarcs.org.in/inoi/online-study-material/topics/dp-tiling.php

    【讨论】:

      猜你喜欢
      • 2016-03-19
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多