dijkstra算法 最短路径问题
话说dijkstra算法可以求解一个节点到其他各节点的最短路径,但是如果节点间存在多条等长的最短路径怎么对这个算法修改呢?不要floyd算法或者别的算法,就dijkstra算法.
人气:168 ℃ 时间:2020-06-21 19:27:46
解答
迪杰斯特拉算法在程序中对路径的权值相等时进行判断,根据条件进行保存特定的路径,要不你就把所有权值相等的路径都保存下来,最后再根据你的条件进行保留.如:用一个List来保存相同路径设A-B的最小权值为MinWeight,当前路径的权值为Weight,在进行路径计算时会有这样的判断,if(MinWeight>Weight){MinWeight=Weight,修改原有路径.},你可以再加一个判断,if(MinWeight==Weight){MinWeight=Weight,在List中Add这条新路径},这个List可以在节点的Class中定义
推荐
猜你喜欢
- 小东看叔叔锯木头,锯一次木头要2分钟,叔叔把木头锯成5段,叔叔请小东算一算需要几分钟?
- 一辆汽车从A地开往B地,前3小时行了180千米,照这样的速度,还要1.5小时才能到达,AB两地相距多远?
- 你让我感到害怕,英语怎么说?
- 某同学做了一次较为精确的测定匀加速直线运动的加速度的实验,实验所得到的纸带如图所示,设0点是计数的起始点,两计数点之间的时间间隔为0.1s,则第一个计数点与0点的距离s1应为__________cm,物体的加速度________
- “我”上学了,还是不断收到姥姥寄来的剪纸,其中表达姥姥对‘我’的期待的一副剪纸是这样的
- 三七五折等于几成
- 小红计算两个数的加法时,把其中一个加数个位上的0漏掉了,结果算出的和是37,已知正确答案是91,那么这
- 如图所示的是闭合电路的一部分导体在两磁极间的运动情形.图中小圆圈代表导体的横截面,a、b、c、d表示运动中四个不同位置.图中箭头表示在那个位置上的运动方向.导体在_位置会产