DanceLink
DanceLink是一个可以解决精确覆盖和重复覆盖的搜索算法
重复覆盖就是在精确覆盖的remove等处做改变 都是十字循环链表
精确覆盖
给出一个01矩阵 要求选择几行 使每一列都有且仅有一个1
在求所得行尽量小的视乎 f()函数可以进行一个剪枝
可以用来解决数独 并且速度很快
本质还是搜索 但是由于数据结构的本身性质致使remove和resume相当快捷 使搜索速度很快
重复覆盖
用来解决 给出一个01矩阵 使选择最少的行数 使每一列都至少有一个1
类似于解决 二分图中选择最少的左边节点 使能覆盖连接的所有右边节点
remove中不将该列的所有行数都清楚就好了
Link 是将每一行的每一个1元素嵌到链表上 这个1元素直接嵌入到该列的最上面 本身的数据结构看起来不是很横平竖直 然而由于RL数组建立了行的连接 扯直了还是一样的 UD上的顺序不重要
Dance 就是每一次的dfs时对这个链表的操作 移除类似于将一些元素按下去 元素本身不变 但是相邻的元素的LR改变 恢复是将元素浮上来 并恢复相邻的元素的LR
DanceLink的更多相关文章
随机推荐
- 【BZOJ2226】[Spoj 5971] LCMSum 莫比乌斯反演(欧拉函数?)
[BZOJ2226][Spoj 5971] LCMSum Description Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n ...
- 借助EasyNTS云组网,无需拉专线,也能解决设备现场无公网固定IP的问题
一.产品背景 为了帮助企业和个人用户解决网络访问和设备控制的问题,我们研发了一款创新型产品:EasyNTS云组网系统.什么是EasyNTS,什么是云组网呢? 在解释之前,我们先来了解几个在凡是涉及网络 ...
- 任务05—学习 MARKDOWN 语言
我的简历地址: https://github.com/jinxiaohang/MyResume/blob/master/ForJavaJob.md 本任务主要目的掌握markdown. 1.首先是工具 ...
- Python3.6全栈开发实例[010]
10.有字符串 "k:1|k1:2|k2:3|k3:4" 处理成字典 {'k':1,'k1':2....} s = "k:1|k1:2|k2:3|k3:4" d ...
- document write & close
在载入页面后,浏览器输出流自动关闭.在此之后,任何一个对当前页面进行操作的document.write()方法将打开—个新的输出流,它将清除当前页面内容. 必须确保调用document.close() ...
- 003-ARP地址解析协议
一.概念 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的ARP请求广播到网络上的 ...
- 使用Kotlin开发Android应用(III):扩展函数和默认值
通过前面两篇文章,我们学习了Kotlin的基本知识,并知道如何配置工程,本文将接着介绍Java没有的而Kotlin实现了的有趣的特性.记住当你对Kotlin语言有任何疑问时,请参考官方指南.该指南组织 ...
- 瑞丽熵(renyi entropy)
在信息论中,Rényi熵是Hartley熵,Shannon熵,碰撞熵和最小熵的推广.熵能量化了系统的多样性,不确定性或随机性.Rényi熵以AlfrédRényi命名.在分形维数估计的背景下,Rény ...
- hadoop学习(一)概念理解
1.概念 1.1什么是hadoop? hadoop 是大数据存储和处理的框架,主要组成为文件存储系统hdfs和分布式计算框架mapreduce. 1.2能做什么,擅长做什么,不擅长做什么? 1.2.1 ...
- 解决svnserve: Can't bind server socket: Address already in use
最近在忙着搭建jenkins系统集成版本控制和git分布式版本控制,其中涉及到了点svn方面的,由于自己也是第一次搭建svn,挺顺利的,中间遇到点小问题: 我使用的是yum安装的svn,安装完成配置结 ...