我需要一些帮助为以下问题find一个好的启发式: 给你一个R by- C格子和一个六面骰子。 让start和end在这个网格上是两个不同的单元格。 从头到尾找出一条path,使得当死亡沿path转向时,抬头的面的总和最小。 模具的起始方向如下(“2”朝南): 我模拟这个问题的方式是将模具面部的价值作为graphics边缘的成本。 graphics的顶点的forms是(row, col, die) (即网格中的一个位置和die的当前状态/方向)。 顶点不是简单的(row, col)的原因是因为你可以结束在同一个单元与多个configuration/方向的骰子。 我用A *find解决问题的办法; 给出的答案是正确的,但效率不够高。 我确定问题是我正在使用的启发式。 目前我使用曼哈顿距离,显然是可以接受的。 如果我将启发式乘以一个常量,那么它就不再是可以接受的了:它的运行速度要快得多,但并不总能find正确的答案。 我需要一些帮助来find一个比曼哈顿距离更好的启发式。
我正在OpenStreetMap地图上写一个快递/物stream模拟,并已经意识到,如下图所示的基本A *algorithm对于大型地图(如大伦敦)来说速度不够快。 绿色节点对应于放置在开放/优先级队列中的绿色节点,由于数目庞大(整个地图大概是1-2百万),需要5秒左右的时间才能find所画的路线。 不幸的是每条路线100毫秒是我的绝对限制。 目前,节点既存储在邻接列表中,也存储在空间100×100二维数组中。 我正在寻找的方法,我可以权衡预处理的时间,空间,如果需要路线的最佳性,更快的查询。 对于启发式成本的直线Haversine公式是根据轮廓仪最昂贵的函数 – 我尽可能地优化了我的基本A *。 例如,我想如果我从2D数组的每个象限中select一个任意节点X并在每个象限之间运行A *,则可以将path存储到磁盘以便后续模拟。 在查询时,我只能在象限中运行A *search,以便在预先计算的路线和X之间进行search。 有没有我上面描述的更精致的版本,或者我应该追求的另一种方法。 非常感谢! 为了logging,下面是一些基准结果,用于任意加权启发式成本,并计算10对随机挑选的节点之间的path: Weight // AvgDist% // Time (ms) 1 1 1461.2 1.05 1 1327.2 1.1 1 900.7 1.2 1.019658848 196.4 1.3 1.027619169 53.6 1.4 1.044714394 33.6 1.5 1.063963413 25.5 1.6 1.071694171 24.1 1.7 1.084093229 24.3 1.8 1.092208509 22 1.9 1.109188175 […]
我目前正试图将ac应用程序移植到AIX,并且感到困惑。 什么是.a和.so文件,以及在构build/运行应用程序时如何使用它们?
我有一小段代码依赖于许多静态库(a_1-a_n)。 我想将这些代码打包在一个静态库中,并将其提供给其他人。 我的静态库,让它叫X,编译好。 我创build了一个使用X函数的简单示例程序,但是当我尝试将它链接到X时,出现了许多有关从库a_1 – a_n中丢失符号的错误。 有没有一种方法可以创build一个新的静态库,Y包含X和X所需的所有function(从a_1 – a_n中select的位),这样我就可以分发Y,让人们将它们的程序链接到? 更新: 我已经看过只是倾销所有与AR和一个超级图书馆,但是,最终包括了很多不需要的符号(所有.o文件大约700 MB,但是,一个静态链接的可执行文件是7 MB)。 有没有一种很好的方法来只包含实际需要的东西? 这看起来与如何将几个C / C ++库合并为一个密切相关? 。