我有多个机器人,通过某种算法探索占用网格。我试图保存探索节点的顺序。但我不确定,哪种数据结构可以用来有效地保存它们。
我首先想到的是一棵树,但顺序可以重复,如1,2,5,1。所以,我觉得,以树形式存储这样的顺序可能太复杂了。然后,我想到了一个数组,但就大网格的内存而言,它可能过于昂贵。
我现在有点困惑。什么数据结构会更好(假设网格是10,000个节点)。但关键是在这种情况下探测节点的顺序将大于10,000,因为会有重叠。
谢谢!
答案 0 :(得分:0)
树在这里没有意义,需要保留插入顺序和允许重复的需要。基本上,据我所知,我们希望以最紧凑的形式存储机器人行进的路径。
紧凑的,连续的序列最终在这里最有意义(数组,例如)。它比任何链接结构(包括树)便宜,因为没有链接到商店。
我们可以做的很少,以进一步压缩内存使用。
但是,展开的列表在这里可能会有所帮助。由于它不是一个巨大的连续块,而是一系列较小的块(例如:每个4千字节)链接在一起,你可以开始,比如说,如果你想要将列表前面的块卸载到磁盘减少内存使用。链路开销很小,因为我们每N个元素只存储一个链接,其中N可能是一个大数字。