首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >铁路线路的数据结构

铁路线路的数据结构
EN

Stack Overflow用户
提问于 2011-12-12 17:30:19
回答 2查看 2.7K关注 0票数 1

什么是好的铁路线路数据结构?我有关于所有火车的信息,它们经过的所有车站。给定两个站点,我需要想出所有可能的路径。

我想出了一个图,其中key是起点桩号,邻接列表表示它正在经过的桩号。

但我认为这不会给我正确的答案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-12 17:33:39

听起来像是一个直截了当的图问题,(对我来说)用图对铁路网络实际看起来的方式建模听起来很直观。

也就是说,每个桩号都有一个图形节点,其中的边表示它们之间的铁路连接。

然后问题就变成了图搜索,有很多算法可供选择。

票数 4
EN

Stack Overflow用户

发布于 2011-12-12 23:14:45

首先,您有铁路网:这是非常自然地表示为图中的节点的车站和连接节点的边的铁路连接。

其次,你有火车,或者换一种说法,就是线路。这最自然地表示为通过上图的一组路径,每条路径对应于不同的列车。

我假设您需要所有可能的路由,其形式为

在S0站乘坐T1列车,前往S1车站,转乘T2列车,前往S2,等等。到达目的地。

在这种情况下,我将在单个多图结构中对铁路网和火车进行建模,从车站Sn到车站Sm有多条边,每条边对应于从SnSm的不同列车。它的结构是一组节点,每个节点都有一个传出边的列表。

然后执行简单的深度优先搜索,标记单个边以确保不会遍历一条边两次,如下面的生成器伪代码所示:

代码语言:javascript
运行
复制
// path is a list of edges
// src,dst are nodes

procedure generate_route (path, src, dst)
  if src == dst
    yield path
  else
    for e in all outgoing edges of src
      if e is not visited
         mark e as visited
         generate_route (path + e, e.dst, dst)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8472251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档