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

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

大家多支持!!!!!!谢谢!
...全文
65 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
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也感激不尽。。。。。。。

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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