【发布时间】:2017-05-27 01:37:31
【问题描述】:
我有一组房间,每个房间都通过基本方向(北、南、东、西)连接到一个或多个其他房间。房间的连接方式是,如果 A 在 B 的西边,那么 B 在 A 的东边;因此无向图。现在我需要收集这些房间并在坐标平面上绘制它们。所有边必须平行于 X 或 Y 轴。
我尝试了一些不同的方法,但我认为目前最有效的方法如下:
- 找到“中心”并将其指定为 (0,0)(到其他房间的最短路径的长度总和最小的房间)。我不知道这是否真的有必要,但它使输出居中变得更容易。
- 从中心 C 走出来,为遇到的每个房间 R 分配一个坐标 (X, Y),其中 P 是连接 C=>R 的路径,导致坐标平面上的最大位移,X 是净水平沿 P 的运动,Y 是沿 P 的净垂直运动。
假设方向的向量如下: 北 = [0,1] 南 = [0,-1] 东 = [1,0] 西 = [-1,0]
【问题讨论】:
标签: algorithm graph path shortest-path undirected-graph