- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试找到以尽可能低的成本将元素分配给多个目标的最佳算法。
要激活目标(大写),您需要使用 colour theory logic 的 1 或 2 个特定元素(小写) :
把这个问题想象成必须用一次性 key 打开的门。所有门都必须用 1 把相同颜色的 key 或 2 把原色 key 打开。 key 在迷宫中,成本是 key 到门的距离。
一旦您拥有包含所有可能组合的数组(非常简单的示例)并应用您拥有的算法:
//Doors: G (GREEN), B (BLUE), Y (YELLOW)
//Keys: b, (blue), y (yellow), g (green)
Input:
[{Door: G, Keys: [b,y], cost: 1},
{Door: G, Keys: [g], cost: 10},
{Door: B, Keys: [b], cost: 5},
{Door: Y, Keys: [y], cost: 3}]
Output:
[{Door: G, Keys: [g], cost: 10},
{Door: B, Keys: [b], cost: 5},
{Door: Y, Keys: [y], cost: 3}]
Total cost: 18
(请注意,即使使用蓝色+黄色 key 打开绿色门的成本也较低(1),它使用其他门所需的 2 把 key ,因此不能成为最终解决方案的一部分)
如果出现以下情况,这可能是找到成本更低的组合的最佳方法:
我在另一部分代码中使用了 A*,并且我已针对此建议对其进行了调整,但我认为它不够高效(我需要使用此算法数千次来解决迷宫问题)。我还探索了另一个 combinational optimization solutions ,但我不确定要使用哪个女巫。
任何帮助或方向将不胜感激。谢谢!
最佳答案
我第一次尝试提高速度是坚持使用您已有的分支定界解决方案(您的 A*)。
与国际象棋或围棋或类似的东西相比,这个问题可以用蛮力的方式解决。搜索树中的节点数量足够少,您可以将它们全部保存在内存中。
因此,我的第一个尝试是向您的 A* 添加一个转置表,它存储节点的已找到值。
我曾经写过一个程序来解决一个游戏(bunny bashing)。没有换位表,需要 10 秒才能解决。使用转置表,它在 35 毫秒内完成。
然后,可能会添加修剪技术(alpha beta,mayhaps)。
此外,它可能会加快用在树上运行的搜索算法替换 A*(在图上运行)的速度。
关于algorithm - 以较低的成本将元素分配给多个目标的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28069158/
面对这样的事实,MatPlotlib 在使用 self.frame.canvas.draw() 时,我在一个简单的图表上仅获得了 12 FPS。我发现一篇关于加速MatPlotlib的好文章:http
我的问题是我的 GameScene 以大约两倍的节点开始,并在几秒钟内绘制计数和 40 fps。这个问题仅出现在我的 iPad(迷你视网膜)上,而在我的 iPhone(5)上,游戏从一开始就运行得很顺
好吧,我开始理解 Android Fragments,但这仍然让我感到困惑。我需要一点帮助。正如它所说,Android fragment 从 API 级别 11 开始受支持,但您可以为较低级别的 AP
我正在尝试在 iPhone 上进行一些图像处理。我正在使用http://developer.apple.com/library/ios/#qa/qa2010/qa1702.html捕获相机帧。 我的问
如果我没有以某种方式更新屏幕,对 canvas.repaint() 的几次调用似乎会被完全跳过。移动鼠标时,一切都很好。 我的代码如下: package yeet.gfxTut; import jav
我知道 android.utils.Base64 仅在 API level8 上可用,但我也听说过这个 Bouncy CaSTLe Base64(org.bouncycaSTLe.util.encod
也许我的逻辑暂时停止工作了,但我发现这种行为令人困惑。假设我有一个 TreeMap 如下: TreeMap map = new TreeMap(Collections.reverseOrder()
关于我的导航,我遇到的问题是第二层被视频或其他由 javascript 创建的元素覆盖(当您将鼠标悬停在“Hier lebe ich”或“Am Meer”时可见): http://www.ulrich
我最初在使用纹理时遇到了颜色困惑的问题,但我设法修复了它(问题是我没有在需要时禁用纹理)。完成此操作后,颜色发生了变化,但仍然不是我想要的颜色 - 白色而不是纯蓝色 (0,0,255) RGB。完整的
在我的游戏中,我在 render 中创建了许多循环和方法。我笔记本电脑的 FPS 范围从 56 到 60,没问题。但是,当我在 Galaxy Note 4 的 Android 操作系统中运行它时,FP
所以我今天一直在试验 z-index,我真的不明白这里发生了什么。 这是一个非常简化的 HTML 版本: // content has z-index of 30, pos abs // c
我用 2 个线程编写了小 WPF 应用程序 - 主线程是 GUI 线程,另一个线程是工作线程。 应用程序有一个带有一些控件的 WPF 表单。有一个按钮,允许选择目录。选择目录后,应用程序会扫描该目录中
我正在努力寻找适合我的数据集的学习算法。 我正在处理一个典型的回归问题。数据集中有 6 个我关心的特征。我的数据集中大约有 800 个数据点。这些特征和预测值具有很高的非线性相关性,因此这些特征并非无
这个问题在这里已经有了答案: Are Activity/Fragment Transitions compatible with pre-Lollipop devices? (4 个回答) 关闭 7
我正在尝试创建一个具有云形成的 AWS S3 存储桶。 S3 存储桶名称需要小写,但我想使用参数来组合该名称。该参数为大写。 我找到了一条路。 我读过这篇文章。 https://github.com/
这太奇怪了,尽管复制粘贴了代码,但我什至无法在 jsfiddle 中复制错误。 基本上我是这样的: 使用这个 CSS: .container { background: t
我是一名优秀的程序员,十分优秀!