- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我一直在研究数独求解器,我目前的求解器使用回溯算法,但它仍然需要很长时间。
在大多数情况下,我希望将时间缩短到不到一秒。因此,我决定用 dancing links 算法重写它,理解它是更好的暴力破解方法之一,尤其适用于数独难题等约束问题。
我尝试阅读 Wiki 和 Knuth's paper在上面,但是它们都有点难以理解并且非常冗长。
我也看了数独的版本,好像到了数独的实现,就太抽象了。
有人可以尝试不根据推导而是根据实现来解释 Dancing Links 算法吗? (以数独为例会很棒)
谢谢!
最佳答案
您可能对 my implementation in javascript 感兴趣.
首先你必须了解Exact Cover。精确覆盖问题是给你一堆选择和一组约束的问题,你的挑战是选择一堆将恰好满足每个约束一次的选项。
例如,考虑某人创建他们的冰舞套路的情况。他们有许多技巧需要向评委展示,并且不想重复表演任何技巧。他们有许多序列,这些序列是可以放在一起的技巧组,他们想要选择理想的序列选择来一次涵盖所有技巧。在这个例子中,约束是他们必须执行每一个技巧。这些选择是他们可以纳入日常工作的可能顺序。
表示此类问题的一个好方法是绘制一个表,其中约束是列,选择是行,并且在特定选择满足该约束的单元格中有一个大 X。
事实证明,给定正确的约束和选择,数独可以描述为精确覆盖问题。
好吧,假设你已经明白了,现在你需要理解算法 X。Knuth 谈到它“算法 X 只是一种明显的试错法的陈述。(事实上,我想不出一般来说,任何其他合理的方式来完成这项工作。)”。所以这是我对算法 X 的描述:
既然你明白了,你就可以理解舞蹈链接了。 Dancing Links 是一种有效实现该算法的方法。跳舞链接的关键点在于,在链表中,当您删除一个节点时(这可以通过修改其邻居的指针来有效地完成),您删除的节点具有您需要添加回来的所有信息到链接列表(如果你猜它是解决方案的一部分,结果证明你错了)。再加上如果您将所有链接列表设为循环,那么突然之间您会丢失很多特殊情况,这几乎就是所有跳舞链接。
关于algorithm - The Dancing Links Algorithm - 一种解释性较差但更多关于实现的解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1518335/
我正在开发一个 Flask 应用程序,允许用户使用 OAuth(以 Github 作为提供者)和 Flask-dance 库登录。由于某种原因,我无法在成功登录后重定向到我将用户发送到登录页面的页面。
想象以下使用手动内存管理(也称为非 ARC)的场景: 我有一个将 block 传递给类方法的 VC。在执行 block 之前,VC 从 UINavigationController 中弹出。 __bl
所以我在使用 FancyBox 时遇到了这个问题,当滚动页面主体(主页)时,框会随机向左和顶部移动位置。 附上 GIF 演示问题: 据我所知,我正在使用 Fancybox v2。 网址是here (在
我使用flask-dance库来处理自定义OAuth,这里是一个代码示例: oh = OAuth2ConsumerBlueprint( "oh", __name__, client_i
问题如下:输入: 3 10 1 2 3 12 11 101 其中 3(n) 是男孩和女孩的数量 10(k) 是可接受的高度差接下来两行分别是女生和男生的高度 1 2 3 是三个男孩的高度 12 11
我们想在一个特殊的网格中找到两点之间的最短路径。我们可以一次在相邻的方格之间移动,但我们也可以一次移动在相同类型的单元格(有 10 种类型)之间移动,无论它们之间的距离有多远。 对于最大 100x10
我一直在研究数独求解器,我目前的求解器使用回溯算法,但它仍然需要很长时间。 在大多数情况下,我希望将时间缩短到不到一秒。因此,我决定用 dancing links 算法重写它,理解它是更好的暴力破解方
经过this question之后我尝试实现 Dancing Links 以仅解决确切的封面问题,以下是取自 here 的代码并修改(它是Column-Row结构,我需要Row-Column结构)。它
能否使用 Knuth 算法 X 的 Dancing Links 实现来解决 this CSP ?在这个游戏中,第一个和最后一个数字总是已经在棋盘上,我相信每个精心设计的问题只有一个解决方案。 最佳答案
现在我正在研究 D.Kuth DLX 算法/数据结构的实现。 我知道什么是确切的封面以及 Dancing 链接的工作原理。但我对 his paper: 有疑问 在第 5 页,他描述了算法的实现。在那里
如果我的问题听起来很愚蠢,我很抱歉,因为我对数据结构的理解不是很好。 我一直在阅读 Knuth's Dancing Links算法并且非常了解它的基本工作原理。提到 dancing link 的数据结
我正在尝试用 Java 实现 Knuth 的 Dancing Links 算法。 根据 Knuth 的说法,如果 x 是一个节点,我可以通过 C 中的以下操作完全取消链接节点: L[R[x]] set
我正在测试一个 Azure Web 应用程序,该应用程序将使用 Flask Dance 通过 Microsoft 帐户向用户授权。我直接从 Azure 的文档中获取了代码: blueprint = m
这是我的第一个问题,请不要吃我!我完全是新手,出于 OAuth 的原因,我尝试使用 Flask-dance 编写一个 Flask 应用程序。似乎我做了一些愚蠢的事情,因为当我尝试从flask_danc
我正在尝试构建一个简单的原型(prototype),它将具有登录名/密码身份验证和 OAuth2 身份验证,后者使用 Flask-Dance。那么将 current_user.is_authentic
我正在尝试的内容和摘要: 我有一个包含 MKMapView 和子 UITableView 的 UIViewController。 表格 View 中的每个单元格都包含一组坐标。 我希望在 map 上顶
我很难用 Flask-Dance 实现 Google OAuth。这是交易。为了使一切正常,我需要设置 offline=True创建 Google 蓝图时 reprompt_consent=True:
我在 Heroku Stack 上运行 Rails 应用程序(包括 Memcached、DJ 异步工作器、MongoDB 持久存储)。 现在我们使用 Twitter Oauth 作为我们网站上唯一的身
我尝试在我的应用程序中实现 OAuth2.0,但遇到了问题,但现在无法修复。 错误是: Traceback: File "/home/i159/Envs/photorulez/lib/python2.
好吧,强弱舞的道理我明白了。 一个例子是,假设 B 强引用一个 block ,我们在 B 中设置该 block 以强引用自身 (B)。我们现在有 B 强引用我们的 block ,也许我们的 block
我是一名优秀的程序员,十分优秀!