- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在用 Java 创建一棵树来为 AI 的游戏的广泛形式建模。这棵树将是一棵 25 元树(每个分支最多有 25 个子分支的树),因为在游戏的每一轮都有 25 种不同的移动。因为必须在树的每个新层中创建的新分支数是 25^n,所以我非常关心如何提高效率。 (我打算毫不留情地砍掉 Twig 以防止它们生长,以免事情陷入困境)。当效率如此重要时,对这种树建模的最佳方法是什么?我的第一印象是有一个节点对象,其中每个节点都有一个父节点和一个子节点数组,但这意味着要创建很多对象。最后这些是我的问题:
这是创建和管理我的树的最快方式吗?
计算程序中任何给定算法或过程将花费多少时间的好方法是什么? (到目前为止我唯一想到的是在进程之前和之后创建一个日期并比较已经过去的毫秒数)
也欢迎任何其他想法。我希望我的问题暗示并与许多其他问题相关。如果我一直模棱两可或不清楚,请发表评论让我知道,而不是因为这没有成效而否决和愤怒地离开。
最佳答案
实际上,您描述的方式是最好的方法。与您可以做的任何其他事情相比,它的表现会相当好,而且实现起来很简单。
人们一次又一次地询问如何“高效”地做某事。最好的答案几乎总是“别费心去尝试”。除非您的改进是算法改进,否则它不太可能产生太大影响,尤其是在这种情况下,额外的努力和复杂性不值得您可能获得的任何微不足道的 yield 。
换句话说,借用一句(虽然我不记得原作者),优化的第一条规则是:不要。
话虽如此,如果您真的觉得有必要竭尽全力提高速度,您可以尝试缓存和重新使用对象(而不是完全丢弃它们,在一个免费的对象存储中跟踪它们,然后什么时候您需要创建一个新对象,首先检查自由对象存储以检查是否存在现有对象)。与往常一样,您需要在前后测量性能以查看它是否真的有帮助(很可能它不会有多大帮助,除非物理内存确实受到限制,在这种情况下垃圾收集会变得昂贵)。
关于java - 在 Java 中创建树的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5892031/
我是一名优秀的程序员,十分优秀!