DanceLink
DanceLink是一个可以解决精确覆盖和重复覆盖的搜索算法
重复覆盖就是在精确覆盖的remove等处做改变 都是十字循环链表
精确覆盖
给出一个01矩阵 要求选择几行 使每一列都有且仅有一个1
在求所得行尽量小的视乎 f()函数可以进行一个剪枝
可以用来解决数独 并且速度很快
本质还是搜索 但是由于数据结构的本身性质致使remove和resume相当快捷 使搜索速度很快
重复覆盖
用来解决 给出一个01矩阵 使选择最少的行数 使每一列都至少有一个1
类似于解决 二分图中选择最少的左边节点 使能覆盖连接的所有右边节点
remove中不将该列的所有行数都清楚就好了
Link 是将每一行的每一个1元素嵌到链表上 这个1元素直接嵌入到该列的最上面 本身的数据结构看起来不是很横平竖直 然而由于RL数组建立了行的连接 扯直了还是一样的 UD上的顺序不重要
Dance 就是每一次的dfs时对这个链表的操作 移除类似于将一些元素按下去 元素本身不变 但是相邻的元素的LR改变 恢复是将元素浮上来 并恢复相邻的元素的LR
DanceLink的更多相关文章
随机推荐
- 边双联通问题求解(构造边双连通图)POJ3352(Road Construction)
题目链接:传送门 题目大意:给你一副无向图,问至少加多少条边使图成为边双联通图 题目思路:tarjan算法加缩点,缩点后求出度数为1的叶子节点个数,需要加边数为(leaf+1)/2 #include ...
- 数组中binarySearch 中小小的误区! 用的时候大家要注意点
- 回顾: Python面向对象三大特性
继承 待整理^_^ 封装 待整理^_^ 多态 待整理^_^
- python cookbook第三版学习笔记二十一:利用装饰器强制函数上的类型检查
在演示实际代码前,先说明我们的目标:能对函数参数类型进行断言,类似下面这样: @typeassert(int, int) ... def add(x, y): ... return x + y ...
- 5 Best VPNs for Ubuntu
https://www.bestvpn.com/blog/6268/5-best-vpns-for-ubuntu/?nabe=6412130213429248:0&utm_referrer=h ...
- springboot springmvc 支持 https
Spring Mvc和Spring Boot配置Tomcat支持Https 背景 最近在项目开发中需要让自己的后端Restful接口支持https,在参考了很多前辈们的博客后总结了一些. Spring ...
- 基于CentOS的SSHD服务的Docker镜像
原文地址 1.Dockerfile文件 FROM registry.aliyuncs.com/acs-sample/centos:6 MAINTAINER xuqh "xqh_163@163 ...
- MFC实现文字随鼠标移动
1 实验介绍 此实验是在刚开始接触MFC时做的.它要求实现的功能如下: 文字跟随鼠标动态移动(跟随移动方式自定) 修改图标为自己喜欢的图标 修改窗口标题 修改文档名称 可以用菜单项选定指定的颜色显示文 ...
- docker commit
不能将挂载的外部volume修改的内容一块commit
- 如何安装/更新ruby,安装cocoapods,为开发做好准备!(2016年12月07日更新内容)
一:首先来说一下如何安装/更新ruby: 一般情况下,即使是新买的Mac电脑也会安装有ruby,可以在终端中键入一下命令查看ruby版本 ruby -v 正常情况下下面会打印出ruby的版本信息,如果 ...