|
|
1
1
我认为这主要取决于如何量化一个可接受的解决方案,以及如何定义诸如
假设您需要显示
跳到 太长,读不下去了 在底部的部分跳过细节。 解决方案1:便宜且(通常)有效:100%随机
你可以选择
现在这并没有解决问题
分开,这样我们可以做得更好一点
这是第一个解决方案的一个稍微修改的版本。在本例中,您沿着数据集进行迭代,从最新的“ReferenceId”开始,按照“ReferenceId”的降序进行。每一项都有一个概率
在Java中,这看起来像:
但是如果你的数据 不 均匀分布(这可能是因为你在问这个问题),你不能仅仅依靠随机性来生成你的项目集。在继续解决方案3之前,请检查此解决方案是否适用于您。如果没有, 解决方案3:制定约束条件并试图满足它们,贪婪的方法
你必须知道,由于你在调整每一个特定项目在最后一盘中被选中的几率,你可能无法真正做到这一点
所以你现在很平静,不一定总是有
随机性
和
说“给定元素的当前子集,这个约束满足了吗?”。您还可以评估一个元素是否有助于满足约束,例如“给定元素的当前子集,如果添加此项,是否更接近于满足此约束?”。
如果没有实现细节,您将得到如下结果:
这是一个贪婪的方法,你不能保证最终的结果将是100%完美。如果某些约束在最后仍然没有得到满足,那么尝试在约束中强制优先。 太长,读不下去了这种方法很简单,应该给你 够了
|
|
|
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 9 月前 |
|
|
Alisa Petrova · 在有向图中更改一对顶点以创建循环 9 月前 |
|
|
Pengcheng · 这个简单的递归函数的输出是什么?你能详细解释一下吗? 10 月前 |
|
|
b39b332d · 使用C++标准库实现高效间隔存储 1 年前 |
|
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 1 年前 |
|
|
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 1 年前 |