作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要对有向图的节点进行排序,以使向后流动(与排序顺序相反)的箭头数量最少。
我可以想到算法(例如,不断交换节点,直到没有交换会改善事情)但我不确定它们运行的速度有多快或者它们是否达到了最佳解决方案。
这个问题的名称和复杂性是什么?
最佳答案
可以使用 topological sort. 来按深度顺序对节点进行排序但是,这仅适用于不包含循环的图形。你的问题听起来像图中有循环。一种选择是找到循环(请参阅 Tortoise and Hare algorithm 了解执行此操作的方法)并打破循环,记录你在哪里打破它。然后对节点进行排序并重新链接。
如果您这样做是为了可视化目的,可以使用一个名为 GraphViz 的图形渲染库。它做的事情与您所描述的非常相似,然后布置节点。它易于集成和使用,可以呈现到屏幕或各种不同的输出格式。
关于algorithm - 对图表进行排序以使尽可能多的箭头指向前方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/771570/
我知道在 KDB 中,如果您有一个列表,例如... l:`apples`oranges`pears` 您可以像下面这样进行 N 次随机选择: 9?l 但是如何尽可能均匀地选择列表中的每个项目? 最佳答
我真的厌倦了它。我有一个高级 Web 应用程序依赖于大量 Javascript 库(jQuery、jQueryUI、OpenLayers、highcharts、EJSChart 等等)。不用说,Int
我是一名优秀的程序员,十分优秀!