- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
以下是 Donald Knuth 论文中的伪代码:Dancing Links
If A is empty, the problem is solved; terminate successfully.
Otherwise choose a column, c (deterministically).
Choose a row, r, such that A[r, c] = 1 (nondeterministically).
Include r in the partial solution.
For each j such that A[r, j] = 1,
delete column j from matrix A;
for each i such that A[i, j] = 1,
delete row i from matrix A.
Repeat this algorithm recursively on the reduced matrix A.
Knuth 然后写道:
The nondeterministic choice of r means that the algorithm essentially clones itself into independent subalgorithms; each subalgorithm inherits the current matrix A, but reduces it with respect to a different row r.
我认为 c 的选择是确定性的,因为精确约束矩阵 A 中的列数是事先已知的。
我认为这种 r 的选择是不确定的,因为事先不知道可用行的数量。可用行集取决于求解器的当前状态。例如,对于求解器的特定状态,满足 A[r, c] = 1
的下一行可能就在附近。在另一个州,它可能会更远。
我通过阅读 Wikipedia entry on nondeterministic algorithms 得出上述假设,具体来说:
An algorithm that solves a problem in nondeterministic polynomial time can run in polynomial time or exponential time depending on the choices it makes during execution.
算法的不确定性如何使其“本质上是 self 克隆”?这看起来更像是递归的属性,而不是确定性算法的属性。
最佳答案
c 的选择是确定性的,因为没有错误的选择(但做出该选择的某些规则比其他规则更好;请参阅 Knuth 的文章中伪代码后不久的讨论)。该算法做出任意选择并继续前进。在递归调用中,矩阵中剩余的列数是事先不知道的。
r 的选择是不确定的,因为算法需要尝试所有可能的选择以找到所有的解决方案。 Knuth 可能是这样描述的,因为(1)他是一个老派的 CS 理论家,这就是自动机/形式语言理论中的描述方式(2)它强调了一个事实,即非确定性分支彼此不依赖,因此适合并行处理。
关于algorithm - 在精确覆盖问题中,是什么导致 r 的选择具有不确定性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55272269/
我有一个非常简单的目标:编译一个 Scala 类,然后从另一个 Scala 脚本中加载它。问题是 Scala 似乎缓存了(不确定在哪里)我创建的类,并且不尊重后续更改。 以下几行创建一个包含两个 .s
我在 WebSphere 上运行的 Java EE 应用程序发生了一种非常非常奇怪的情况。 EAR --someJar.jar ----config/propfile.properties
我在使用 python 不确定性包时遇到了困难。我必须用python评估实验数据,我已经这样做了一段时间但从未遇到以下问题: >>>from uncertainties import ufloat >
我有phabricator设置。作为 git 的新手,确保我自己的配置文件(可能还有其他文件中的一些 hack)与来自上游的配置文件共存的理智/正确方法是什么? 最佳答案 将您的更改保存在单独的分支上
我今天花了一些时间,试图制作我的第一个 maven 管理的 Google 应用引擎 1.5.4 + GWT 2.4.0 构建。 我终于进入了所有内容都可以编译并且 gae:run 目标起作用的阶段。这
在类中,您可以在其中创建字段,如以下示例中的 int bar 。 Class foo{ int bar; foo(int bar){ bar = bar; }
我正在尝试运行我的程序,但在几次运行中我遇到了一个错误: terminate called after throwing an instance of 'std::system_error' wh
我必须制作具有 epsilon 转换的非确定性有限自动机。我更像是一个 c、c#、JavaScript 的人,但我的大学出于某种原因认为 python 是唯一的出路,所以今天我学习了 python,但
你怎么得到sklearn's SGDClassifier以显示其预测的不确定性? 我正在尝试确认 SGDClassifier 将报告不严格对应于任何标签的输入数据的概率为 50%。但是,我发现分类器始
下面是我导出的 java headless selenium 测试用例代码,可以在 IDE 中正常运行。 package pack; import java.util.regex.Pattern; i
我是一名优秀的程序员,十分优秀!