主动路由的寻路一开始发起的洪泛改成深度优先算法,是否可行

我认为不可行。因为有环的话,DFS会陷入死循环,除非你有记录哪些节点已经访问过了。路由协议了这要这么做也可以,就是每通过一个节点,消息里就把节点编号加进去,消息会越来越长的。同时,肯定也要花更多时间啊,找到的还可能是一条延时无比长的路径。有很多关于如何避免flooding的研究。比如Scalable Source Routing。主要思路借鉴自DHT。现在考虑一种简化的DHT。DHT是为了在N个节点上存储好多Key -\u0026gt; Value的数据。假如你的节点编号为 1 2 3 4 5 ,那么 hash(Key) 为 1 的那就存到节点1,依次类推。假如你其实只有2 4两个节点在工作。你要把1 2 3 4 5看成一个环,也就是5的下一个节点是1。此时,把hash(Key)为5 1 2的数据存在节点2,把hash(Key)为3 4的数据存在节点4。不过怎么存数据和你没什么关系。把这种思路用于路由协议的时候,现在假设有7个节点1 2 3 4 5 6 7。比如节点3要记住一条到节点2的路径和一条到节点4的路径。这样,比如节点1要找到节点4的路径,因为节点1知道一条到节点2的路径,所以节点1可以问节点2,节点2可以问节点3,节点3知道一条到节点4的路径,把这几条路径串起来,就是一条从节点1到节点4的路径,当然了,你得去掉这中间出现的环,不然就是在兜圈子嘛。假如只剩下1 3 5 7,那么1要记住到3和7的路径,也就是要记住按逻辑编号排成一圈之后你的neighbour的编号。一个个节点问过去是很慢的,所以你还需要从真正的DHT,比如Chord, Kademlia里借鉴点东西来加快找路径的速度。这样就能避免flooding了。当然了这样做经常不能返回当前的延时最短路径。据说这里也有个三角关系,(图片来自 http://www.net.t-labs.tu-berlin.de/talks/2010-01-13-fuhrmann.pdf) 【主动路由的寻路一开始发起的洪泛改成深度优先算法,是否可行】 主动路由的寻路一开始发起的洪泛改成深度优先算法,是否可行


■网友
网络我已经忘了……不过只从图算法的角度讲,题主你想没想过万一DFS把整个网络搜遍了才找到你要的节点的情况?或者DFS出现回路怎么办(假如不记录路径的话)?floodfill算是BFS吧,找的是最短路。


    推荐阅读