求有向图的一个小算法

wdgphc 2008-11-22 09:03:11
我有一个数组

string[] T ;

T中的成员大概是这样的:

a-b
b-c
c-p
e-p
c-e
e-g
g-d
d-e
f-e
f-c
c-a
... ...

求一个算法,找出所有从各个顶点出发能到达的所有不同的点(包括回到起点的环) 放到另一个数组中.
比如结果有
a-b a-b-c a-b-c-p a-b-c-e a-b-c-e-g a-b-c-e-g-d a-b-c-a
b-c ... ...
... ...
...全文
148 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
4L的效率已经很高了~

如果只记录可达到的点,不需要存储路径的话,对于顶点全是单个字母的图来说,开一个26*26大小的Bool数组就够了。
wdgphc 2008-11-25
  • 打赏
  • 举报
回复
想要时间复杂度低一些的算法啊,谁给个伪代码思路也可啊.谢谢了.
wdgphc 2008-11-23
  • 打赏
  • 举报
回复
要求结果不为环的只记录首尾即可,有多条可到达的路径只记一次.

为环的记录全路径,有多条到达的均需要(如果太难就先找到一条也行)
jolly_ye 2008-11-23
  • 打赏
  • 举报
回复
深度优先,广度优先都可以啊
jolly_ye 2008-11-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tailzhou 的回复:]
这题没什么复杂的吧,就是有向图的遍历而已;

[/Quote]

呵呵,借用一下哈。谢谢
tailzhou 2008-11-23
  • 打赏
  • 举报
回复
这题没什么复杂的吧,就是有向图的遍历而已;
只是比较烦琐,并且最终的结果集的数据量会比较大;

不考虑效率;
1)让结果集S等于T;
2)让S 跟T 做连接,得到中间结果S',然后合并S与S';
3)重复2) n次(n为顶点的个数);

实际做的时候,可以将t,s排序;
t按照起点排序;
s按照先终点后起点排序(若n不大,可以参照基数排序与计算排序,使排序的复杂度为o(n));
Super.Jiju 2008-11-23
  • 打赏
  • 举报
回复
采用一些 求交集 并集 异或的方法看看?
oyzdz1988 2008-11-22
  • 打赏
  • 举报
回复
不简单

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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