急急急!求助!如何建立一张无权无向图求最短路径

sasafly 2010-06-25 01:13:15
首先我的数据是以结构体存储的:
struct stationinfo{
CString num;//编号
CString name;//名字
int flag;//如果这一站可以换乘,flag=0,否则=1
};
stationinfo sta[100];
然后读TXT存放到sta[100],比如sta[0].num="001",sta[0].name="莘庄",sta[0].flag=1;
我试过几种比较笨的方法来求最短路径,因为不带距离,所以其实也就是求换乘经过的站最少的路线。
我想可以用深度优先来做,可是邻接矩阵我却不清楚要怎么建,因为比如有人民广场站,因为它经过了1号线也经过2号线,所以在sta[100]中,有两个的name都为人民广场,num却不一样,呃,说的我自己都有点混乱了,所以拜托大家帮帮忙,给指条明路吧,谢谢!
...全文
268 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Aniao 2010-06-25
  • 打赏
  • 举报
回复
可以的,你不要只找最短路径,应该找最短的N个路径,因为有可能最短的路径经过N站却要转N-1次车,这明显不是最优解,所以还要在足够短的一部分里找转车最少的。

最后最优解的评估上你要有个自己的公式,比如路径乘以转车数最小为最优等等呢个。


还有同种路径可能有几种转车法,要找出里面转车次数最少的为这个路径的解。


sasafly 2010-06-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 aniao 的回复:]

邻接矩阵不要考虑线路,只考虑站,然后用排名靠前的路线中找转车最少的(其基本思路可以走最懒惰方式,能不转车就先不转)
[/Quote]
请问可不可以具体一点,就是这个邻接矩阵要怎么实现,因为我如果按sta[]的顺序写入矩阵,肯定会有重复的站出现
sasafly 2010-06-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 aniao 的回复:]

我这怎么说得清楚,你可以去多查查最短路径的文章,算法还不少。

至于重复站出现的问题那是最基本的问题,很容易解决的。
[/Quote]
我邻接矩阵已经建好了,是无向图,而且将权值都设为1,然后用folyed可以求最短路径吗?
Aniao 2010-06-25
  • 打赏
  • 举报
回复
邻接矩阵不要考虑线路,只考虑站,然后用排名靠前的路线中找转车最少的(其基本思路可以走最懒惰方式,能不转车就先不转)
Aniao 2010-06-25
  • 打赏
  • 举报
回复
我这怎么说得清楚,你可以去多查查最短路径的文章,算法还不少。

至于重复站出现的问题那是最基本的问题,很容易解决的。

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧