Algorithm 在纸上打印图形的布局

Algorithm 在纸上打印图形的布局,algorithm,printing,graph,Algorithm,Printing,Graph,我们的应用程序显示具有大量节点和边的潜在大型图。当然,我们使用点这样的东西来布局图形,它们在屏幕上看起来很好。但是,用户希望将它们打印到纸上。现在技术上我们可以这样做了,我们将图形分割成小图像,用户可以打印出来。但是,不能保证通过按页面大小剪切,我们不会剪切节点,不同页面之间不会有大量的边等。我正在寻找一种算法,可以改变图形的布局,以便在打印时更可用: -确保没有节点落在页面边界上 -尽量减少页面之间的边缘 这看起来像是找到密集相关节点的“集群”放在同一个页面上,很少有边缘交叉到其他页面或其他集

我们的应用程序显示具有大量节点和边的潜在大型图。当然,我们使用点这样的东西来布局图形,它们在屏幕上看起来很好。但是,用户希望将它们打印到纸上。现在技术上我们可以这样做了,我们将图形分割成小图像,用户可以打印出来。但是,不能保证通过按页面大小剪切,我们不会剪切节点,不同页面之间不会有大量的边等。我正在寻找一种算法,可以改变图形的布局,以便在打印时更可用: -确保没有节点落在页面边界上 -尽量减少页面之间的边缘 这看起来像是找到密集相关节点的“集群”放在同一个页面上,很少有边缘交叉到其他页面或其他集群。有人能告诉我做这类事情的相关文献/工具吗


谢谢

聚类分析是一个好的开始

我建议采用以下方式进行处理:

首先定义成本函数:

给定页面重新分区:成本(重新分区)=f(边界附近的节点,多页边缘)

目标是使该功能最小化

选择了一种聚类分析算法:

定义集群算法(您可以查看我在DBSCAN上的帖子: 并向集群添加“页面”约束。(页面大小)

由于“页面限制”,结果将不同,这取决于你将通过你的点的顺序

选择成本最低的,或者在找到可接受的成本时停止

这个算法的复杂性是O(n!)…对于大图来说有点大。 因此,您需要考虑更多的聚类约束,或者只进行部分搜索(首先测试n2,使其位于O(n2)中),以获得良好的近似值。 根据可接受的成本,您可以在合理的时间内获得结果