算法:从邻接列表到可视化映射

时间:2011-02-22 04:33:43

标签: algorithm graph map

我正在编写一个类似风险的棋盘游戏。一个功能是玩家可以设计自己的地图,并将其存储在文本文件中。文本文件列出世界地图中的所有地区(==国家/地区),后跟其直接邻居。然后游戏扫描文件并创建一个区域集合及其相应的邻接列表。

下一步是将此图表转换为图形表示。这意味着我想用矩形或其他简单的形状来表示每个领域。我不想进入领土之间复杂,前卫的边界。因此,基本上这些地区看起来像一些具有水平和垂直边界的非洲或北美国家。

现在我的问题是:虽然可以很容易地想象一个图形,其中边界由它们之间的绘制边缘表示,但我发现很难将区域(==顶点)直接放在彼此相邻的位置。换句话说,领土应该像现实世界一样“互相接触”。

特别是,由于4个或更多地区相互接壤的地方很难(考虑美国的四个角落与亚利桑那州,科罗拉多州,新墨西哥州和犹他州)。

现在我想知道是否有人试图做类似的事情,或者是否有现有算法来处理这个问题。我将不胜感激任何帮助和创意投入。谢谢!

2 个答案:

答案 0 :(得分:1)

如果你可以使用graphviz这样的图形布局工具来获得图形的平面投影,那么你可以研究计算图形上点的voronoi图,然后你就可以扭曲它以使视觉上更有趣。 (您可能还需要注意确保在计算voronoi图时最终不会更改邻接属性,因为它取决于点的相对间距。您可能还必须检测到的位置必须插入“海洋”细胞才能使两个地区不相邻。)

答案 1 :(得分:1)

GMap正是我想要的。他们结合了各种技术,包括Voronoi图(here's a paper on the algorithm)。现在我只需弄清楚如何得到它......