镝赋洧 发表于 2025-10-23 18:55:00

利用排列组合法实现TOPN路径计算

本文分享自天翼云开发者社区《利用排列组合法实现TOPN路径计算》.作者:罗****斌
1 背景

        在进行TOPN选路性能摸底时,发现其在100*100节点级别以上的两两互相探测情况下的选路性能不太理想,整体压测后分析发现,选路算法部分是整个处理流程的瓶颈点。对此,我分析了下目前计算TOPN路径所使用的深度优先遍历算法,为了收敛计算量,我们添加了路径深度来控制计算量,效果是显著的,这是一期的优化方案。但是在此过程中为了控制路径的深度也产生大量的回溯逻辑,计算量会比理论值多出不少,所以一定程度上产生了性能上的损耗。如果我们继续在深度优先遍历算法上进行优化,其效果不会太明显(深度优先遍历是使用穷举法深入相邻可达点,直到不可达时再回溯上一个访问点)
2 方案

        从以上分析得知,在深度优先遍历方向继续优化空间有限,我们需要探寻另一种可用于求解TOPN路径的算法。从路径结构上分析可知,其首尾固定,变动的只是在中间节点上,我们可以通过选取中间节点个数来控制路径深度。因为经过中间节点的顺序不同,产生的路径也不一样,那么我们在选取中间节点的同时也要对其进行全排序。那么这个求解TOPN路径问题就转化为组合排列问题,只要实现排列组合算法就能满足我们的需求,其不存在空跑的回溯计算量,理论计算量与实际一致,损耗更小
        此次优化将更换路径计算算法,我们将从以下两方面进行优化:
  一 性能优化点
      1)TOPN路径计算由之前的深度优先遍历改为通过 组合排列 方式求解
      2)路径中各点构成的有向图使用 二维数组 表示可达性(之前是哈希map),提高读写速度
      3)组合排列算法优化,清理冗余逻辑,减少遍历次数,减少拷贝次数,并预先分配内存防止自动扩容等(提升2倍以上)
      4)迪杰斯特拉和深度遍历底层改造为使用二维数组获取两点之间的权重值(之前是哈希map)
      5)使用高性能json库提升速度
  二 内存优化点
      1)减少不必要的数据冗余拷贝,减少数据的使用空间
      2)减少map使用,大量map在gc时情况不太理想

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

廖雯华 发表于 2025-11-27 10:36:53

新版吗?好像是停更了吧。

湛恶 发表于 2025-12-17 23:34:42

热心回复!

亢安芙 发表于 2025-12-23 02:46:58

谢谢分享,试用一下

甘子萱 发表于 2025-12-26 10:19:40

yyds。多谢分享

各卧唯 发表于 2026-1-13 18:00:24

这个好,看起来很实用

歇凛尾 发表于 2026-1-14 12:58:03

感谢分享,下载保存了,貌似很强大

班闵雨 发表于 2026-1-14 18:34:02

收藏一下   不知道什么时候能用到

铵滔 发表于 2026-1-14 23:36:56

过来提前占个楼

印萍 发表于 2026-1-16 19:02:22

用心讨论,共获提升!

鞍汉 发表于 2026-1-17 03:51:13

收藏一下   不知道什么时候能用到

纪睐讦 发表于 2026-1-17 22:27:26

这个有用。

肿圬后 发表于 2026-1-21 03:01:50

懂技术并乐意极积无私分享的人越来越少。珍惜

荦绅诵 发表于 2026-1-21 14:49:00

东西不错很实用谢谢分享

恿深疏 发表于 2026-1-22 16:03:12

谢谢分享,试用一下

甘子萱 发表于 2026-1-27 05:22:00

感谢分享,下载保存了,貌似很强大

益竹月 发表于 2026-1-29 03:58:46

鼓励转贴优秀软件安全工具和文档!

咒卖箴 发表于 2026-1-30 04:38:46

谢谢分享,试用一下

陆菊 发表于 2026-2-2 02:19:05

热心回复!

恶凝毛 发表于 2026-2-2 02:21:55

前排留名,哈哈哈
页: [1] 2 3
查看完整版本: 利用排列组合法实现TOPN路径计算