算法求教

odbd 2004-04-18 11:33:35
我现在有一个数据库 结构很简单 一个father字段 一个son字段 分别放父节点和子节点
比如 father son
1 2
1 3
2 5
2 6
3 4
3 7
4 2
4 3
4 8
5 9
…………
这样
我要做的研究是定点到定点的最短路问题。
现在我想做的是在程序输入起始节点和终止节点后 得到连接的次数
比如输入1,3 则连接次数为1 ; 输入1,7 则连接次数为2;
输入1,4 则连接次数为2 ; 输入1,9 则无连接;

现在我有两个想法:
1、从起始节点开始搜索连接,直到搜索到终止节点为止。即先“select * where father=起始节点”,会有多条记录,然后再从每一条记录的son遍历下去,把son作为father,一直这样遍历下去,直到搜索到的son的值就是终止节点的值,返回这一条链的连接数。

2、从起始节点向后遍厉,方法同1,从终止节点向前遍厉,方法与1反过来,这样从链的两头向中间搜索,当到达某个共有的中间节点是说明连接成功,反之,则说明起始节点与终止节点间无连接。

先请教这两种算法可行否,或者有无更好的算法来实现。
...全文
29 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmqingfeng 2004-04-18
  • 打赏
  • 举报
回复
30万啊~~
连接次数最多可能为多少?不会也就是30万吧?

看来问题就是图在数据库里怎样存储,
节点有多少个?会再增加么?说废话了,肯定是会增加的。。。。

一个节点的最大通路是多少?
demoer 2004-04-18
  • 打赏
  • 举报
回复
本地数据库可以尝试着做存储过程,会快很多很多,不过恐怕30万的……效率还是很低
demoer 2004-04-18
  • 打赏
  • 举报
回复
如果有环路,方法1可能需要添加很多工作
建议看看数据结构中有关图的部分,目前好像除了遍历还没有特别出色的基础算法
odbd 2004-04-18
  • 打赏
  • 举报
回复
做的是本地数据库,不用网络的

数据量有30几万,不过实际做用不了那么多 做个几百次统计就够了
mmqingfeng 2004-04-18
  • 打赏
  • 举报
回复
做的是桌面程序的话还好说,
要是网络的话,效率太低了。

表里有多少数据?这样的查询多么?

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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