Coffman-Graham Layering Graph Draw分层图布局展示工具

分层图布局的利器coffman-graham-layering-graph-draw,挺适合你拿来快速试算法或者展示流程图。它用的是 Coffman-Graham 分层算法,图层清晰、结构美观,还顺带优化了交叉点,图看起来舒服多了。你只要把图文件路径丢进去,命令一跑,图就出来了,连手都不用多动。

直接在 Replit 上就能用,main.jar打包好了,省得你自己折腾依赖,命令如下:

kotlin -classpath main.jar MainKt "examples/flow-from-lesson"

输出的是两张图:一张原始的 Coffman-Graham 布局图,一张是优化过交叉点后的图。看对比图的时候,体会一下“少一个交叉点,图就清爽一大截”。

算法实现集中在几个关键文件里,建议你可以翻翻:

  • CoffmanGrahamLayeringAlgorithm.kt:主算法逻辑
  • IntersectionOptimizer.kt:交叉点优化
  • AdjacencyMatrix.kt:邻接矩阵
  • ReadGraphml.kt:图数据读取

如果你图是从其他格式来的,比如graphml,直接用内置的ReadGraphml就能读,挺省事的。而且examples文件夹里有现成的图例,没时间建图可以直接跑。

图结构这块你要再深入,可以顺带看看这篇 基于邻接矩阵的图数据结构实现,里面讲得蛮系统的。

如果你正在做流程图、任务调度图、数据流之类的东西,可以考虑把这个算法套进自己的工具里。

zip 文件大小:19.53KB