搜索和动态规划.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Amazing Robots: IOI2003 已知条件: 迷宫 i(i=1,2) (每个不会大于20*20) 守卫 Gi(0=Gi=10) (守卫循环移动进行执勤) (守卫巡逻的方格数(2..4)) 求: 两个机器人都离开迷宫所用的最少指令数目 和离开制指令序列(10000 步以内)。 每一步可以发出的命令可以是N, E, S, W中的一种,有4种选择。 对每一步具体发出哪个命令,直接搜索。 假设最后结果是T。(也就是最少出宫时间) 时间复杂度是O(4T) 这种方法时间复杂度太高,绝对不可行!! 5*4和4*4的迷宫 第一个机器人的位置是(2,2) 第二个机器人的位置是(3,2) 当前时间是0。 状态((2,2),(3,2),0) 状态表示: (第一个机器人位置,第二个机器认位置,时间) E ((2,2),(3,2),0) ((2,3),(3,3),1) 时间已知,则所有Guard的位置可知。 Guard、Robot的位置均已知,所以状态可以转移 0时刻 1时刻 2时刻 3时刻 0时刻和2时刻是一样的 1时刻和3时刻是一样的。 稍加分析:此Guard循环以2为周期循环。 状态转移,需要的信息是:Robot位置,Guard位置。 Position of Robot1, 2是的作用就是记录Robot位置。 Time的作用就是为了计算Guard的位置 状态:(position of Robot1, position of Robot2, Time) Time=10000,这是状态数过多的罪魁祸首! 题目说:Guard巡逻经过的格子数只可能是2, 3, 4。 也就是说机器人巡逻周期只能是2, 4, 6。 [2, 4, 6]=12,所以第0时刻、12时刻、24时刻……Guard的状态完全相同。 12可以看作Guard的周期。Time只要记录当前是第几个周期。因为周期确定了,Guard的位置也完全确定了! 0=Time=11 状态数(n*n)*(n*n)*12=12n4。 用BFS算法,标志数组判重。 时间复杂度O(12n4)。 n=20 完全可以承受 ^-^ 深度优先遍历 从某个未被访问的顶点v出发,深度优先遍历图,直到和v有路径的顶点都访问到. PROC dfs(v); visite(v);visited[v]=true; w:=FIRSTADJ(v); while w0 do [ if not visited[w] then dfs(w) w:=NEXTADJ(v,w); ] ENDP 讨论:虫食算问题 给出一个N进制的虫食算式,相同的字母代表相同的数字,不同的字母代表不同的数字。要求求出满足这个算式的唯一一组解,也就是字母和数字的一一对应关系. 解决方案1: 要求一一对应的关系,就可以枚举这些一一对应的关系,找出符合的一项。这样,关系总数有O(N!)个,最坏情况下必须枚举所有的关系,并且加以判断,复杂度高达O(N*N!)! 解决方案2: 大体上,从算式最后一位开始模拟运算情况,当可递推时递推,不可递推则枚举。 对于一竖列,先处理两个加数,当遇到的字母的值不确定时,则枚举当前位(注意与前面的情况判重);否则不作为处理和,当遇到的字母的值不确定时,可从加数部分确定的值来确定(注意与前面的情况判重和进位);否则看加数部分确定的值是否能得到和部分(注意进位)。引出矛盾就回溯。 如题目的样例: 5 ABCED BDACE EBBAA 它最后一位的情况是(D+E) mod N=A, 对于最后一位只要枚举D,E的情况;A 则可以由D,E的值递推而来。对于倒2位, (E+C+最后一位进位) mod N=A ;E的值可以用前面的结果;枚举C;判断A是否为(D+C+最后一位进位) mod N…… 虽然复杂度还是O(N!),但这种方法限制很多(相当于剪枝)。 解决方案3: 观察题目的条件已经限制得很苛刻:N个变量,每个至少出现一次;而且正好一共有N位的算式。这样就构成了解方程的动机。这N个变量的对应N个未知量,有N位的算式对应N个方程;N个未知量,N个方程,正好可以得到唯一解。这里要注意,对解的要求很严格:必须是0至N-1的每个整数都正好出现一次。 但对每位式子的进位关系并不清楚,而进位关系正好影响了方程的常数项。枚举每位是否进位。用时O(2n), (因为首位不可能进位,无须枚举)。然后,用高斯消元法来解方程。可以在枚举之前先解出方程,枚举的时候再把参数带入。带入求解的复杂度是O(n2) 。 解决方案4: 在解决方案3的基础上,我们可以对进位的枚举

文档评论(0)

sxjctywd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档