|
|
1
5
您可以使用 Branch-and-bound 技巧:您可以以增量方式生成所有子集(生成已确定子集的超集),使用“如果根不满足约束,则不探索树的这个分支”作为修剪条件。 如果你想在约束方面通用,我认为这是最好的策略。 一定要以正确的方式编写生成子集的代码,否则您会多次生成相同的子集:为了避免内存化,由于映射查找和引入内存开销,内存化可能会很耗时,您可以以这种方式生成子集:
|
|
|
2
2
你可以递归地构造你的集合,从空集开始,尝试添加更多元素,如果其中一个子集(以及它的所有超集)不符合条件,就放弃递归执行。这里有一些伪代码,假设一个集合s的条件满足您想要列出的子集。为了方便起见,假设S的元素可以被索引为x(0)、x(1)、x。..
第一个调用将T作为空集。然后,将打印与条件匹配的S的所有子集。该策略主要依赖于这样一个事实,即不符合条件的S子集不能包含在符合条件的子集中。 |
|
3
1
为了 在1- n ),那么您最终将枚举所有子集。
n -1,当位i为1时,选择元素i作为子集。 |
|
|
4
1
我为一个生成课程表的算法做了类似的事情。我们的课程表有两个元素——一个是添加到课程表中的课程列表,另一个是可添加的课程列表。
修改它以解决你的问题应该很容易。 |
|
|
5
1
|
|
|
6
0
我认为在最坏的情况下,你仍然需要生成所有子集并计算每个子集的总和,以确定它是否合格。渐近地,它是子集生成过程的成本。
|
|
Triceratops · 从数据帧中选择不在子集中的索引 4 年前 |
|
|
Nate · 使用R中的多个条件删除df中的行 4 年前 |
|
|
RMacey · R中的矢量化(子集)赋值 8 年前 |
|
Andrea Neri · 提取数据行。表中的其他数据行。表[副本] 8 年前 |
|
|
MJZ · R: 有条件地应用于具有排除值的子集 8 年前 |
|
|
Jake · 使用for循环进行子集设置,并从该循环创建多个数据帧。 8 年前 |
|
|
Afke · 为绘图设置数据框导致找不到对象错误 8 年前 |
|
|
andemexoax · 当使用数字时,如何按名称删除R中的列? 8 年前 |