Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Language agnostic 多层平面图映射_Language Agnostic_Graph_Map_Logic_Graph Theory - Fatal编程技术网

Language agnostic 多层平面图映射

Language agnostic 多层平面图映射,language-agnostic,graph,map,logic,graph-theory,Language Agnostic,Graph,Map,Logic,Graph Theory,这里有一个建筑群,每个建筑都有多个楼层,通过楼梯和电梯相互连接。目前,我正在尝试设计一个系统,该系统将在任何一栋建筑的两点之间找到最短路径,无论是同一栋建筑还是另一栋建筑 目前,每个楼层都在一个图表中建模,如下所示: 每个房间的门都是一个顶点。将房间连接到主边缘(走廊)的边的交点也是一个顶点。 楼层之间的楼梯是边缘 剩下的问题是,我应该如何表示电梯(电梯)(就在楼梯旁边)? 将它作为一条边让我想知道它应该有多大的权重,因为在找到最短路径之后,我必须运行一个图遍历算法 提升(电梯)是作为边还是作为

这里有一个建筑群,每个建筑都有多个楼层,通过楼梯和电梯相互连接。目前,我正在尝试设计一个系统,该系统将在任何一栋建筑的两点之间找到最短路径,无论是同一栋建筑还是另一栋建筑

目前,每个楼层都在一个图表中建模,如下所示: 每个房间的门都是一个顶点。将房间连接到主边缘(走廊)的边的交点也是一个顶点。 楼层之间的楼梯是边缘

剩下的问题是,我应该如何表示电梯(电梯)(就在楼梯旁边)? 将它作为一条边让我想知道它应该有多大的权重,因为在找到最短路径之后,我必须运行一个图遍历算法

提升(电梯)是作为边还是作为顶点?这就是问题所在。
谢谢

如果电梯是从一层到下一层的可能最短路径,那么它们必须是有重量的边缘。每个标高的入口都是顶点。如果离楼梯足够近,则可以与楼梯顶点共享这些顶点。

我选择边

假设你选择使用电梯。你们走到它跟前,按下按钮,再等一会儿。然后你进去,再等一会儿,出来继续走。现在,虽然你的身体不怎么动,但随着时间的推移,你也在动。在两层楼之间搭电梯就像走50米

我的意思是,站在电梯周围的时间相当于你行走时所走的距离。因此,在使用电梯的过程中,将电梯视为您行走的边缘。用这个距离来比较,比如说,走下楼梯。

使用边是最直接的答案,就像对楼梯那样。然而,虽然楼梯只能从X层走到X+1层,但电梯可以从任何一层走到任何一层,时间略有不同——我通常发现两层楼的楼梯走得更快,但两层楼以上的楼梯走得更慢。为了反映这一点,你需要从每一层楼到另一层楼都有一条边,每层楼都有权重

顶点 您可以使用一些附加顶点和边。如果在提升轴的每一层都有一个顶点,那么只需要一条连接所有层的边路径,而不是一组边

如果还在每个楼层的门外添加了一个额外的顶点,则可以添加进入电梯的平均延迟,从而反映电梯可以快速通过多个楼层的事实。然而,电梯最多需要平均的时间。在繁忙的时候,它们最终可能会停在几乎每一层楼,所以对于繁忙的校园来说,你不会真正从这些额外的顶点中获益


我的投票结果是电梯的每一层都有一个顶点,并有一条边连接相邻的楼层。由于路径较少,因此应简化图形并减少任何路径优化算法的工作量。此外,它更准确地反映了现实情况,并最大限度地减少了设置边缘权重的工作量