我正在创建一个10,000到10,000张地图的游戏.
我希望用户能够设置位置并让计算机立即找到最佳路径.
然而,由于地图是10,000乘10,000,有100,000,000个节点,并且通过诸如A*或Dijkstra之类的传统方法找到该路径将需要大量存储器并且需要很长时间.
所以我的问题是:我怎样才能找到最好的路径?
我正在考虑的算法将世界划分为100个部分,每个部分有1,000,000个节点.然后将每个部分分成100个小节.这将重复进行,直到每个子部分包含100个节点.然后,算法将找到段的最佳路径,然后是子段,然后是子子段,直到找到最佳节点集.这会有效吗?还有更好的方法吗?
我也在考虑跳点搜索,但我不知道,只是发现它无法做到这一点并不痛苦.
编辑:我试图添加A*.但是,运行大约需要5秒钟,比理想时间长约4秒.
我正在使用 BigInteger 对象。对于普通整数或长整数,我可以使用 Math.pow(number, 1/nth root) 来获得第 n 个根。但是,这不适用于 BigInteger。有没有办法做到这一点?
我其实并不需要根,只是想知道它是否是完美的力量。我用它来确定给定的 BigInteger 是否是一个完美的正方形/立方体/等。
我有一个用 C++ 编写的大型程序,我希望通过 Python 使其可用。我编写了一个 python 扩展来公开一个接口,python 代码可以通过该接口调用 C++ 函数。我遇到的问题是安装似乎很重要。
我能找到的所有文档似乎都表明我应该创建一个setup.py创建distutils.core.Extension. 在我发现的每个示例中,正在创建的 Extension 对象都有一个源文件列表,它会编译这些文件。如果我的代码是一两个文件,那就没问题了。不幸的是,它有几十个文件,我使用了许多相对复杂的 Visual Studio 构建设置。因此,至少可以说,通过列出 .c 文件来构建似乎具有挑战性。
我目前已将我的 Python 扩展配置为构建为 .dll 并链接到 python39.lib。我尝试将扩展名更改为 .pyd 并将文件包含在 manifest.in 中。创建 setup.py 并运行后,它创建了一个 .egg 文件,我验证该文件确实包含我创建的 .pyd。但是,安装后,当我将模块导入python时,模块完全为空(并且我验证了没有调用PyInit_[module]函数)。Python dll Extension Import说如果我将扩展名更改为 .pyd 并将文件放在 python 安装的 Dlls 目录中,我可以导入 dll。我遇到了两个问题。
首先,在我看来,它不是很容易分发。我想把它打包成一个 python 轮子,我不确定一个轮子是如何做到这一点的。第二个更有问题 - 它并不完全有效。它调用我的扩展程序的初始化函数,并且我已经在 WinDbg 中验证它正在返回一个 python 模块。然而,这是我总是从控制台得到的。
>>> import bluespawn
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
SystemError: initialization of bluespawn did not return …Run Code Online (Sandbox Code Playgroud) 我有一个BigDecimal a1
BigDecimal a1 = new BigDecimal("0");
System.out.println(a1) //"0.0"
Run Code Online (Sandbox Code Playgroud)
当我做
a1.pow(2)
Run Code Online (Sandbox Code Playgroud)
我打印我得到的值"0.00"
在我的程序中,我循环这个,这会导致问题,因为每次循环时,它会使尾随的0加倍.为了让我的程序按预期工作,它可能会得到2 ^ 100个尾随零,这会降低性能并占用大量内存.我试过了
a1.stripTrailingZeros();
Run Code Online (Sandbox Code Playgroud)
但它仍然存储无用的零,需要很长时间才能计算出来.
在这里,我需要最大化性能,因此转换为字符串并进行字符串操作可能不是最好的方法.我该怎么做才能解决这个问题?
我有一个ajax函数,返回一个看起来像这样的字符串:"[{property1: value1}, {property1: value1}]".我需要这个是一个数组.如何将其从字符串更改为数组?
我知道我可以在其中添加一个脚本标签,但我怀疑这样做是好的做法还是最有效的方式.
任何帮助表示赞赏.
java ×3
a-star ×1
ajax ×1
algorithm ×1
arrays ×1
bigdecimal ×1
biginteger ×1
c++ ×1
javascript ×1
math ×1
path-finding ×1
python ×1
square-root ×1
windows ×1