求源码,生成一个城市到另一个城市的通道的源码。

swain 2001-11-10 10:47:49
在一张地图上,各个城市之间的道路是错综复杂的,我现在知道两个城市的点,我要找出所有能走通的道路。
我知道要用dfs算法,但我找不到好的标记来标记是否走过的路和循环的路,请大家帮个忙!有源码最好,没源码可以讲个思路给我。

我只能给这么多分,我通过问同样的问题给大家加分。一定一定!
...全文
85 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
swain 2001-11-12
  • 打赏
  • 举报
回复
谢谢两位,我已经拜读过海星的文章了,但我还是想问一下,在我的无向图中,搜索时怎样控制循环搜索呀,比如有五个城市(A、B、C、D、E、F),中间三个城市(A、B、C)形成三角形形式,起点和终点在三角形外,我怎样控制呀?
按深度优先如下
E连结在A上、F连结在B上。我先找E->A->B->F;E->A->B->C->A在A这个时候怎么办,如果退出循环,那么就有E->A->C->B这个时候怎么控制,实际上我们都知道有两条路,当就是不好标记B点和A点。
我只是有限,请多多指教,我应该多看哪些方面的书。谢谢海星大哥!




tarkey 2001-11-12
  • 打赏
  • 举报
回复
无向图如果要用标号法的话,需要建一个列阵保存已访问过的节点。
对了,上面我说的是在路径权值相等的情况下搜索。如果权值不等的话,
则最好用二维数组来保存节点数据。

tarkey 2001-11-11
  • 打赏
  • 举报
回复
不是单向图就不要用标号法。
我是这样做的,从起点开始用广度优先搜索。
搜索第一层的时候,同时获取第二层的节点。
然后通过获得的第二层节点搜索第二层,同时获得第三层节点。
搜索的同时,给每个节点标记上它的父节点。

当找到符合条件的目标节点以后跳出循环搜索。
while(n.father不为空)
n = n.father;
就可以获得一条从起点到目标点最近的路。

这个方法需要注意的是,需要设置一个temp保存已经访问过的节点。
如果一个节点的子节点中含有已经访问过的,就不访问该节点。

具体代码也有,不过不是标准语言的,是基于解释性语言PIKE的代码。
要代码的话mail me:superboy@0733.com
starfish 2001-11-11
  • 打赏
  • 举报
回复
你在这个论坛搜索一下,这个问题我以前解答过,而且写过代码。

33,010

社区成员

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

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