真心求解答,很有挑战性

ididfqfq 2011-07-22 04:15:40
朋友之间的关系,例:
A 认识 B,B 认识 C,C 认识 D,D 认识 E
B 认识 F,B 认识 G,C 认识 F
在数据库中有很多条这样的记录


我想得到一条路径,比如我想查找出 如果A想认识D的话,需要通过的人(B,C)

苦思冥想三天了,还是没有特别好的办法

需求其实就是希望找到 任意一个人,到另外一个人 之间经过了多少人

然后,取得最短的那条路径


分实在不多,为了这个题目,在CSDN上下载了太多的东西,对不住各位
...全文
247 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
powerchuangwai 2011-07-31
  • 打赏
  • 举报
回复
类似于拓扑中的连通性问题。。。可以查查相关资料。
wziyx513225244 2011-07-30
  • 打赏
  • 举报
回复
看看图论的知识,广度遍历搜索,深度遍历搜索,迪杰斯特拉最短路径,弗洛伊德算法等等,估计研究完这些,你的问题也就ok了吧
odp_denden 2011-07-26
  • 打赏
  • 举报
回复
不知道能否用二叉树,路过进来看看。
绿色夹克衫 2011-07-25
  • 打赏
  • 举报
回复
to:ls几位提到Dijkstra的哥们

Dijkstra本质也是广搜(BFS),稍有不同的是,他是利用优先队列实现的广搜,在LZ的这个问题里,所有路径的权值都是1,因此优先队列可以省了,也用不着Dijkstra,直接用广搜就可以,同时考虑到数据量较大,建议LZ使用双向广搜,以这类应用的数据量来看,就算是用Dijkstra,也需要双向Dijkstra。
雪融无声 2011-07-25
  • 打赏
  • 举报
回复
可以用最短路径算法, 现在的数据形式已经是一个二维数组了,,我觉得的可以用迪杰斯特拉
雪融无声 2011-07-25
  • 打赏
  • 举报
回复
最短路径,我感觉你现在的数据结构已经是一个二维数组了
weike021996 2011-07-25
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 gdstfox 的回复:]

引用 5 楼 dongxinxi 的回复:

其实结帖率往往比分数更让人关注
玩运筹学?


这个好
[/Quote]+1
gdstfox 2011-07-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dongxinxi 的回复:]

其实结帖率往往比分数更让人关注
玩运筹学?
[/Quote]

这个好
ididfqfq 2011-07-24
  • 打赏
  • 举报
回复
感谢各位了,
ll986244053 2011-07-23
  • 打赏
  • 举报
回复
我总觉得和运筹学很像呢。。。。。。。。楼主去看看吧 对你有好处咯。。
huayy 2011-07-23
  • 打赏
  • 举报
回复
最好能够把数据库结构贴出来。
秋的红果实 2011-07-23
  • 打赏
  • 举报
回复
有向图最短路径问题,看看数据结构,最基本的,但很费时间,弄个图结构(在内存里表示),就好费劲
永动bug制造机 2011-07-23
  • 打赏
  • 举报
回复
+1[Quote=引用 3 楼 litaoye 的回复:]
广搜可以解决,把搜到的做一个标识,避免重复搜索,不知道这个数据量有多大?弄不好得双向搜。
[/Quote]
  • 打赏
  • 举报
回复
其实结帖率往往比分数更让人关注
玩运筹学?
pinyu 2011-07-22
  • 打赏
  • 举报
回复
这似乎是图求最短路径吧,去看看数据结构中的图论部分,估计能给你提示
绿色夹克衫 2011-07-22
  • 打赏
  • 举报
回复
广搜可以解决,把搜到的做一个标识,避免重复搜索,不知道这个数据量有多大?弄不好得双向搜。
  • 打赏
  • 举报
回复
凡是你遇到了“最”这个字,这其实就没有什么技术含量了!

比如打仗,都是创造一个相对有利的态势,如果真的是创造什么“最好”的态势,那么就是纸上谈兵、书生误国了!
ididfqfq 2011-07-22
  • 打赏
  • 举报
回复
顶出来

110,556

社区成员

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

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

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