想要代表这种情况的想法

时间:2012-05-10 07:50:05

标签: java data-structures graph

我正在设计一个飞行模拟程序,我正在寻找有关如何正确的想法 实施这样的要求。

请看下面的照片。这些点代表位置。

enter image description here

这个想法是这样的,我想正确地创建一个数据结构来最好地表示这种情况 在java这样

  • 当我在第1点时,我距离第8点的最后一点有多远?

    • 第2,3和5点距离Point 8
    • 的距离相同
    • 从第1点开始,我可以遍历第3点到第6点,然后是7点,然后是8点,相当于4步。
  • 当我在第0点时

    • 我可以遍历第4点,然后是5然后是7,然后到达第8点,这也相当于4个步骤。

我只是想帮助用户帮助他们找到不同的路线。

这是否可行以及哪种Java数据结构最适合此要求?还有任何设计思路如何实现这个?

很抱歉,如果我的问题可能含糊不清,我只是想尽可能多地获取正确处理此类要求的信息。

2 个答案:

答案 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解决。