挑战您的智慧:路由选择算法??走过路过的都进来看看吧

tland 2004-04-30 04:32:30
如何实现这种路由算法,效率如何,大家多提建议啊,谢谢!

如,一个路径表中现有以下这些数据:
PathTbl Begin End (注:当然实际在数据库中存放的记录不会这么有序)
A I
I J
J F
A B
B C
C D
D E
E F
A G
G H
H F

现给出任意两节点,如给出A、F,列出所有A能到F的路径(SQL语句如何写?),则结果应为:
A-->I-->J-->F
A-->B-->C-->D-->E-->F
A-->G-->H-->F

大家多支持!!!!!!谢谢!
...全文
16 14 点赞 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
MountLion 2004-05-03
忘了附结果了:)
'A'||PATH
--------------------
A-->I-->J-->F
A-->B-->C-->D-->E-->F
A-->G-->H-->F
  • 打赏
  • 举报
回复
MountLion 2004-05-03
这样写就行了,哈哈:)

select 'A'||path from (
select
sys_connect_by_path(e_node,'-->') path
from pathtbl
start with b_node='A'
connect by b_node=prior e_node
)
where path like '%'||'F'
;
  • 打赏
  • 举报
回复
MountLion 2004-05-03
写了一个,效率可能比较低:),而且好像只有9i以上才支持:

create table pathtbl(
b_node varchar2(1),
e_node varchar2(1)
);

... import data ...;

select ltrim(path, ',') from (
select
sys_connect_by_path(b_node||'->'||e_node,',') path
from pathtbl
start with b_node='A'
connect by b_node=prior e_node
)
where path like '%'||'F'
;

结果好像还是不太像 :(
LTRIM(PATH,',')
------------------------
A->I,I->J,J->F
A->B,B->C,C->D,D->E,E->F
A->G,G->H,H->F
  • 打赏
  • 举报
回复
atao245993 2004-05-03
8i支持start with 吗?
用最基本的SQL可以实现吗?
  • 打赏
  • 举报
回复
ern 2004-05-01
应该算是图的遍历吧
  • 打赏
  • 举报
回复
skystar99047 2004-05-01
这可不是路由算法。:)
  • 打赏
  • 举报
回复
dybinchn 2004-04-30
glsensor(超能胶)∶ 写出来看看呀(不是不相信你,实在是想学学)
  • 打赏
  • 举报
回复
lvjack 2004-04-30
在数据库里实现比较麻烦吧,不如读到程序里在程序里搞应该好一些?
  • 打赏
  • 举报
回复
glsensor 2004-04-30
写存储过程不就行了
  • 打赏
  • 举报
回复
ern 2004-04-30
节日愉快
  • 打赏
  • 举报
回复
tland 2004-04-30
大家都过节啦!

唉,改天了


祝大家节日愉快
  • 打赏
  • 举报
回复
tland 2004-04-30
to ern
呵呵,谢谢你的UP

其实我这里说的路由算法并非是网络通信中的路由算法,只是算法类似而已,我现在的路径信息都存放在数据库里啊
  • 打赏
  • 举报
回复
ern 2004-04-30
up
但是不明白为什么要sql,路由算法完全是底层的事情,都是用C之类写啊
  • 打赏
  • 举报
回复
tland 2004-04-30
UP也感激不尽。。。。。。。
  • 打赏
  • 举报
回复
相关推荐
发帖
基础和管理
加入

1.7w+

社区成员

Oracle 基础和管理
申请成为版主
帖子事件
创建了帖子
2004-04-30 04:32
社区公告
暂无公告