DanceLink是一个可以解决精确覆盖和重复覆盖的搜索算法

重复覆盖就是在精确覆盖的remove等处做改变 都是十字循环链表

精确覆盖

给出一个01矩阵 要求选择几行 使每一列都有且仅有一个1

在求所得行尽量小的视乎 f()函数可以进行一个剪枝

可以用来解决数独 并且速度很快

本质还是搜索 但是由于数据结构的本身性质致使remove和resume相当快捷 使搜索速度很快

重复覆盖

用来解决 给出一个01矩阵 使选择最少的行数 使每一列都至少有一个1

类似于解决 二分图中选择最少的左边节点 使能覆盖连接的所有右边节点

remove中不将该列的所有行数都清楚就好了

Link 是将每一行的每一个1元素嵌到链表上 这个1元素直接嵌入到该列的最上面 本身的数据结构看起来不是很横平竖直 然而由于RL数组建立了行的连接 扯直了还是一样的 UD上的顺序不重要

Dance 就是每一次的dfs时对这个链表的操作 移除类似于将一些元素按下去 元素本身不变 但是相邻的元素的LR改变 恢复是将元素浮上来 并恢复相邻的元素的LR

DanceLink的更多相关文章

随机推荐

  1. poj2528

    Mayor's posters Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 56864   Accepted: 16445 ...

  2. 【BZOJ3995】[SDOI2015]道路修建 线段树区间合并

    [BZOJ3995][SDOI2015]道路修建 Description  某国有2N个城市,这2N个城市构成了一个2行N列的方格网.现在该国政府有一个旅游发展计划,这个计划需要选定L.R两列(L&l ...

  3. Cocos2d-x Lua中生命周期函数

    场景(Scene)以及所有节点(Node)的生命周期事件如下:enter.进入场景时候触发.enterTransitionFinish.进入场景而且过渡动画结束时候触发.exit.退出场景时候触发 . ...

  4. 浅谈Spring框架注解的用法分析

    原文出处: locality 1.@Component是Spring定义的一个通用注解,可以注解任何bean. 2.@Scope定义bean的作用域,其默认作用域是”singleton”,除此之外还有 ...

  5. 数组中binarySearch 中小小的误区! 用的时候大家要注意点

  6. CodedUI Test 测试WPF程序,无法获取控件属性值的解决方法

    注意注意!ItemStatus 在VS2010的CUIT里面是没有的!需要2013以上的版本才可使用. 公司新程序使用WPF制作,但使用CodedUI Test进行自动化测试的时候,很多控件抓取不到其 ...

  7. 博文分类索引--Python

    Python 基础 [python]-- 初识python [python]-- 基本语法.循环 [python]-- 列表 [python]-- 元组.字典 [python]-- 字符串.字符编码与 ...

  8. 内置函数:sorted 用法

    内置函数——sorted  对list.dict进行排序,Python提供了两个方法 对给定的List L进行排序,方法1: 用List的成员函数sort进行排序,在本地进行排序,不返回副本方法2: ...

  9. win7安装laravel

    使用Packagist 镜像 建立一个composer.json文件,内容如下: { "name": "laravel/laravel", "desc ...

  10. 卷积神经网络(CNN)的训练及代码实现

    本文部分内容来自zouxy09的博客.谢谢.http://blog.csdn.net/zouxy09/article/details/9993371 以及斯坦福大学深度学习教程:http://ufld ...