还是先上昨天鬼画符的图,有点改变
今天来谈谈两个站点之间的路线查找问题。
假设一个情景,你现在在站点A,你现在想去站点J。你输入了两个站点的A->J,然后我们的系统开始工作。
站点J在线路2和3上,而我现在在线路1和4上,我该乘那辆车啊?
在这本人引入了一个概念,叫做线路相关联度。我是这样来表示的(1,4)->1(个站点),(2,4)->1(个站点),(3,4)->0,我只是使用的两个路线的共同经过的站点的个数,如果在严格一点,应该向概率论那边考虑,不过我只是乱弹没那么严格,真做了在想想。
以此类推
(2,1)->2,(3,1)->2,(4,1)->1
(1,2)->2,(3,2)->3,(4,2)->1
(1,3)->2(2,3)->3,(4,3)->0
其实很多重复了,可以简化下,(1,4)和(4,1)是一样的。
我们在A上车,我要去J,在2,3号线,A在1,4号线,而(1,2)->2,(1,3)->2,(4,2)->1,(4,3)->0,你可能应该不怎么会上4号线,因为前面上1号线加起来的值是4而后面是1,如果在恨点,改一下图,(4,2)->0,那你就肯定乘一路车。
引入这个值是为了在向下深度查询的时候可以舍弃掉一些线路,不过这里面的关系还好好好研究研究,特使是进入一层后没有直接答案,在下一层时怎么取舍。
比如:与上图无关
需要A->K,比如A在线路a,K在线路k。小写的是线路,大写为站点
a->b=2
b->c=4
b->d=3
c->f=2
c->h=1
h->k=2
d->k=1
就是多层次的时候,在线路选择上怎么取舍,还有现在考虑的都时单向的,在路径查询时,加入反向时,数据结构又是怎么设计的,很多问题。
头有点大了,今天就讨论到这。