我正在设计一个飞行模拟程序,我正在寻找有关如何正确的想法 实施这样的要求。
请看下面的照片。这些点代表位置。
这个想法是这样的,我想正确地创建一个数据结构来最好地表示这种情况 在java这样
当我在第1点时,我距离第8点的最后一点有多远?
当我在第0点时
我只是想帮助用户帮助他们找到不同的路线。
这是否可行以及哪种Java数据结构最适合此要求?还有任何设计思路如何实现这个?
很抱歉,如果我的问题可能含糊不清,我只是想尽可能多地获取正确处理此类要求的信息。
答案 0 :(得分:5)
你所拥有的是weighted graph,其中权重代表节点之间的距离(这是非常常见的)。你可以自己轻松地实现它(这是一个很好的学习方法!),但是有很多java源代码可以用于此。
当然,这不是 java 数据结构。它只是一个数据结构(或概念),每个人都在使用它。
一旦实施了加权图,计算步数和距离就非常容易了。
所有这些都有大量的文档,特别是在Stackoverflow上。
答案 1 :(得分:1)
这是一个最短路径问题,一个常见的Graph问题。表示数据的常用方法是Adjancency List或Matrix:
adjancency list为每个节点保留所有一步可达目的地。这通常实现为链接列表。如果你的图表相对稀疏(即每个节点的目的地很少),这是正确的选择。
adjancency matrix用于(非常)密集图。基本上,您保留NxN值的矩阵(权重/成本,或是/否布尔值)。然后,distance [i] [j]表示从i前往j的成本。不可用的弧的成本为INF(或某个误差值)。
问题本身通常由Dijkstra's Algorithm解决。