有一个包含大量节点的图表,它们之间的边缘非常少 - 问题是为节点分配数字,因此大多数节点从i到i + 1或以其他方式关闭。
我的问题是很好地打印图形数据,但是像这样的算法几乎是每个编译器的一部分(中间代码只是一个图形,生成的目标代码获取内存位置)。
我认为这只是简单的深度优先搜索,但结果并不那么好 - 它似乎可以最大限度地减少链接的数量,但它留下的链接往往很可怕(如1 - > 500 - > 1)。
有更好的想法吗?
答案 0 :(得分:4)
This paper讨论了这个问题,如果你使用Eyal Schneider的公式来最小化边缘增量的总和(端点标签之间差异的绝对值)。它在#2,最佳线性安排下。
遗憾的是,没有为实现最佳排序(或标记)而给出的算法,并且一般问题是NP完全的。但是,有一些关于树的多项式时间算法的参考。如果你想进入学术界,谷歌会为“最佳线性安排”提供大量点击。