解决问题的直接方法是提出可能的解,然后检查每个提议,看是否有提议构成了解。人们称之为生成与测试范式。
本文用n皇后问题阐释这种方法,n皇后问题涉及将n个皇后放在n×n的棋盘上,任何两个皇后都不互相攻击。也就是说,任何两个皇后都不应该占据相同的行、列或对角线。这些条件被称为问题的约束条件。
在这个问题中,4个皇后需要放置在4×4棋盘上。总共有 或1820种方法来实现这个目标。这些提议的解中,有许多提议的解违反了问题的一个或多个约束条件。但是,如果为了不丢失解,一个可靠的生成器必须提出满足问题约束的、大小为4的任何子集。更一般地说,如果这个生成器提出了每个可能的解,那么这个生成器就是完备的。此外,如果提出的解被拒绝了,那么这个方案就不会再次被提议(事实上,每个成功的提议都只能提出一次)。换句话说,一个好的生成器应该是非冗余(noredundant)的。最后,回想一下,将4个皇后放置在一个4×4棋盘上有1820种方法。如果生成器没有提出明显不可行的解,那么这个生成器会相对有效。可以说,如果生成器拥有一些信息,允许其对提案做出一些限制,那么这个生成器就是知情的(informed)。
求解4皇后问题的第一种方法是采用生成器,在最坏的情况下,这个生成器检查1820种将4个皇后放在4×4棋盘上的每一种方式。
完全枚举法是一种搜索方法,它将查看所有位置,寻找问题的解。甚至在已经发现了这组位置不可能成功得到解的情况下,完全枚举法还是进一步得到了部分解。我们可以使用带有生成与测试范式的回溯。在推进过程中,允许测试模块查看一个可能的解。
luobengseng1 发布的最新帖子
-
生成与测试范式
-
win10风格的OA管理系统win10-skyeye
skyeye是win10 风格的一套管理系统,前端采用 layui 作为前端框架,后端采用 SpringBoot 作为服务框架,采用自封装的 xml 对所有请求进行参数校验,以保证接口安全性。
skyeye的服务器部署注意事项:ActiveMQ 链接地址、账号、密码的修改;Redis 集群的修改;MySQL 数据库链接地址、账号、密码的修改;webSocket 的 IP 地址修改;图片资源路径存储的修改。
skyeye的管理系统包含菜单管理,管理系统中的菜单和权限点;员工管理,管理系统中的员工;用户管理,管理所有系统的登录用户;角色管理,管理系统中的所有角色;权限管理,给角色进行赋权;资源图标,系统中允许使用的font图标库;日志管理,所有接口请求信息;APP菜单管理,手机端菜单以及权限管理。
skyeye实现多个桌面程序,用户可通过鼠标滚动进行切换;可以设置系统的基础信息设置(考勤事件,邮箱信息等);拥有代码生成器,但是只能适用于该框架的代码生成器,配置模板即可生成,然后下载压缩包解压复制到项目中即可 小程序管理 微信小程序、H5手机自适应页面拖拽生成,可自定义配置小程序组件。
skyeye拥有在线性能监控,监控jvm缓存、redis集群信息等 流程图规划 规划项目的流程图;问卷调查,拖拽式生成问卷,可分页、复制、查看统计信息等多桌面演示;
skyeye可以自定义桌面菜单,用户可将自己常用的网站添加到系统中方便记录;skyeye属于多系统集成可以将多个系统进行应用集成,无需多次登陆,无需记录多个网址
轻应用,系统中提供各种小应用,如快递查询、高德地图等,用户可添加到自己的桌面上。
win10-skyeye开发文档,系统支持二次开发,包含开发文档;记录每个员工的日报,周报,月报等,可同时发送多人,按时间轴查看等 考勤管理,记录每个员工的考勤打卡信息,包含报表;员工可记录自己日常的笔记,目前支持MD,富文本,表格操作 报表管理 统计功能信息,可根据客户自定义免费定制;公司内部、员工个人的文件管理,支持多格式文件在线查看,文档多人协作,在线解压缩等 附件管理 保留员工所有上传过的附件,方便下次使用;win10-skyeye目前打通与QQ邮箱的交互,可以发邮件,收邮件,保存为草稿等。