用Java实现L型骨牌覆盖问题的分治算法分析

来源 :硅谷 | 被引量 : 0次 | 上传用户:jiaxing19871215
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要]采用分治法解决L型骨牌覆盖问题,给出了逻辑结构清晰的递归算法,并用Java语言加以实现。
  [关键词]Java 分治 递归 L型骨牌
  中图分类号:TP309.05 文献标识码:A 文章编号:1671-7597(2008)0910087-01
  
  一、引言
  
  分治算法是算法设计与分析中用的较多的一种有效算法,它的基本思想是将问题分解成若干子问题,然后求解子问题,子问题较原问题无疑是要容易些,由此得出原问题的解,就是所谓“分而治之”的意思。分治策略还可以递归进行,即子问题仍然可以用分治策略来进行,最后的问题是非常基本且简单的。解决L型骨牌覆盖问题就是分治算法的典型应用。
  
  二、问题的提出
  
  在一个个方格组成的棋盘中,若恰有一个方格与其他方格不同,则称该方格为一特殊方格,且称该棋盘为一特殊的棋盘,这种特殊方格的位置有种。如图1就是当时的特殊棋盘。棋盘覆盖问题中,我们要用图2所示4种不同形态的L形骨牌覆盖一个特殊棋盘,且任何2个L型骨牌不得重叠覆盖。
  
  图2四种不同形态的L型骨牌
  
  三、分治算法及分析
  
  当时,将 棋盘分割为4个子棋盘,特殊方格必位于4个子棋盘之一,其余3个子棋盘中无特殊方格,为此将剩余3棋盘转化为特殊棋盘,用一个L型骨牌覆盖这3个较小棋盘的结合处,如图3所示。这3个子棋盘上被L型骨牌覆盖的方格就成为该棋盘上的特殊方格,原问题转化为4个较小规模的棋盘覆盖问题。递归地使用这种分割,直至棋盘简化为
  棋盘。
  
  
  设为覆盖特殊棋盘的时间,当时覆盖它需要常数时间
  ,当时,测试哪个子棋盘特殊以及形成3个特殊子棋盘需要时间,覆盖4个残缺子棋盘需四次递归调用,共需 ,所以
  
  四、Java实现
  
  二维数组Board表示棋盘;全局变量title初始值为0表示骨牌编号;tr,tc分别表示棋盘左上角的行/列号;dr,dc表示特殊方格所在的行/列号;size表示棋盘的大小。
  (一)源代码
  private void ChessBoard(int tr, int tc, int dr, int dc, int size) {
  if (size > 1) {
  int s = size / 2, t = ++tile;
  //涂第一象限
   if (dr < tr + s && dc < tc + s) {// 特殊方塊就在第一象限
  ChessBoard(tr, tc, dr, dc, s);
  }
  else {//特殊方块不在第一象限
  // 第一象限的右下角方块赋值为t(tile)
  Board[tr + s - 1][tc + s - 1] = t;
  // 涂第一象限其余的方块
  ChessBoard(tr, tc, tr + s - 1, tc + s - 1, s);
  }
  //涂第二象限
  if (dr < tr + s && dc >= tc + s) {// 特殊方块就在第二象限
  ChessBoard(tr, tc + s, dr, dc, s);
  }
  else {//第二象限的左下角方块赋值为t(tile)
  Board[tr + s - 1][tc + s] = t;
  //涂第二象限其余的方块
  ChessBoard(tr, tc + s, tr + s - 1, tc + s, s);
  }
  //涂第三象限
  if (dr >= tr + s && dc < tc + s) {// 特殊方块就在第三象限
  ChessBoard(tr + s, tc, dr, dc, s);
  }
  else {// 第三象限的右上角方块赋值为t(tile)
  Board[tr + s][tc + s - 1] = t;
  //涂第三象限其余的方块
  ChessBoard(tr + s, tc, tr + s, tc + s - 1, s);
  }
  //涂第四象限
  if (dr >= tr + s && dc >= tc + s) {// 特殊方块就在第四象限
  ChessBoard(tr + s, tc + s, dr, dc, s);
  }
  else {// 第四象限的左上角方块赋值为t(tile)
  Board[tr + s][tc + s] = t;
  //涂第四象限其余的方块
  ChessBoard(tr + s, tc + s, tr + s, tc + s, s);
  
  }
  }
  }
  (二)运行结果
  本文选取时L型骨牌覆盖问题的运行结果,分别如图4,图5,图6所示。
  
  五、结束语
  
  本文给出了L型骨牌覆盖问题的分治算法的详细设计过程,并给出源代码和运行结果图。由此我们可以总结出分治法所能解决的问题一般具有以下几个特征:①该问题的规模缩小到一定的程度就可以容易的解决;②该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质;③利用该问题分解出的子问题的解可以合并为该问题的解;④该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。
  
  参考文献:
  [1][美]Adam Drozdek. 数据结构与算法(Java 语言版)[M]. 周翔, 王建芬, 黄小青等译,北京:机械工业出版社,2003.
  [2]电子科技大学数学实验精品课程:图论实验三个案例.http://202.115.
  21.138/wlxt/ncourse/mathlab/web/jp2/3B.asp.
  
  作者简介:
  崔建弘,女,河北石家庄人,教师,硕士,主要研究领域为系统优化。
  
  注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”
其他文献
[摘要]伴随着信息技术的高速发展,我国的教育信息化进程不断推进。教育资源建设是教育信息化的基础,为新形势下的信息化课堂教学、远程教育、网络教育等教学模式提供最为基础的资源支持。而要整合众多的教育资源,实现对教育资源的有效管理,建立教育资源管理系统是十分重要的。结合J2EE技术,探讨ERMS资源管理子系统的设计与实现。  [关键词]J2EE 教育资源管理系统 资源管理  中图分类号:TP2 文献标识
期刊
[摘要]介绍一种通过逻辑芯片控制多组电容的VHF接收机预选滤波器,以实现中心频率可调谐,从而达到对宽频带的覆盖,并且有较好的选择性。采用专用软件ADS对所设计的滤波器进行仿真,并通过理论与实验的方法研究其性能。实验表明,测试结果与仿真结果基本吻合。  [关键词]预选滤波器 接收机 选择性  中图分类号:TN713 文献标识码:A 文章编号:1671-7597(2008)0910021-02    
期刊
[摘要]阐述Java垃圾回收的作用。介绍垃圾回收算法的优缺点,基于垃圾回收提出调优方法。最后给出编码建议。  [关键词]Java虚拟机 垃圾回收 性能调优  中图分类号:TP309.05 文献标识码:A 文章编号:1671-7597(2008)0910044-01    垃圾回收(Garbage Collection,GC)是Java程序设计中内存管理的核心概念,Java虚拟机(JVM)的内存管理
期刊
[摘要]智能天线技术对提高频谱利用率、消除多址干扰、提高系统容量发挥着重要作用,主要对智能天线原理及其常用算法进行分析,讨论其在SCDMA系统中的应用。  [关键词]智能天线 波束 SCDMA 自适应  中图分类号:TN821+.91文献标识码:A 文章编号:1671-7597(2008)0910011-02    一、前言    随着无线通信技术的发展,频率资源愈显珍贵。智能天线技术较好解决了复
期刊
[摘要]通过对盐田港2.5万吨码头高喷灌浆工作的总结介绍,希望达到提高高喷灌浆,特别是在巨厚抛填石层海水贯通等复杂的工程地质条件下的工程施工水平。  [关键词]概况 成孔 搭台 堵漏  中图分类号:TS3 文献标识码:A 文章编号:1671-7597(2008)0910086-01    一、前言    深圳盐田港2.5万吨码头始建于上个世纪90年代,码头为采用方块的重力式结构,其基础为抛石基床,
期刊
[摘要]随着地理信息系统(GIS)技术在各个应用领域的广泛使用,GIS技术与地理空间信息的表示、处理、分析和应用手段的不断发展紧密相连,形成了各种不同功能的GIS 系统软件。针对目前我国许多高校在对校园导航系统上的不足,采用先进的组件式GIS 技术开发实用校园导航系统。简要介绍MapObjects 2.0 控件,论述Visual Basic 2005编程环境和MapObjects 2.0 的结合实
期刊
[摘要]ASP与ADO是一种完全的Web数据库访问解决方案,使用它可以很容易地对数据库进行访问,首先对ASP与ADO进行了简单介绍,接着说明基于ASP的Web数据库访问的工作过程及原理,在此基础上给出基于ASP与ADO的Web数据库连接的具体实例。  [关键词]ASP ADO Web 数据库 动态连接  中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)0910039-0
期刊
[摘要]简单介绍SF6气体的基本特性,分析其优点和缺点,阐述其在电力系统中的应用和对SF6气体的监测和处理。  [关键词]SF6 绝缘 监测  中图分类号:TM7 文献标识码:A 文章编号:1671-7597(2008)0910103-01    一、引言    随着我国社会经济的不断发展,以及电力需求的快速增长,电力工业也不断地适应社会发展而发生着巨大的变化。用SF6气体作为绝缘介质的开关、变压
期刊
[摘要]DNA测序是遗传工程的重要技术之一。自从1977年Sanger 发明双脱氧DNA测序方法以来,近20年来DNA测序技术发展很快,经过不断改善的自动化操作已经大大加速了测序的速度,使科学家们测出了几百种生物的基因组。但当前普遍使用的测序仪,一次只能读取1,000 个左右的碱基,且DNA样品需要长时间的制备和分析,因而高速测序技术就显得尤为重要。综述DNA测序技术的发展历程及国际最先进技术So
期刊
[摘要]通信网的演进和发展,要求在下一代网络中提供具有QoS保证的电信级业务。在对基于SIP的VoIP系统的QoS控制技术进行研究的基础上,深入研究SIP协议支持QoS控制功能的扩展机制,分析利用SIP/SDP进行QoS预置条件设置和协商的模型,给出基于状态表的生成规则和实现机制。  [关键词]会话启动协议 服务质量 IP语音通信 下一代网络  中图分类号:TP3 文献标识码:A 文章编号:167
期刊