将一个原本较为稀疏的图布局,进行压实操作,从而提高画布空间利用率,便于用户理解。
在压实操作中,可以通过控制以下因素来进行:
节点之间的间隔节点的大小节点的形状四、压实算法1. 算法种类算法根据考虑的因素不同分为两类:
第一类,基于最小化节点间的距离。
Constraint graph based,基于约束图Virtual grid based,基于虚拟网格第二类,基于节点的移动方向。
1-D compaction2-D compaction1/1/2-D compaction2. 基于约束图的压实将节点之间的关联,构建成一个约束图 。约束条件一般分为两种:
即两个元件之间的最小距离,需要大于指定值。
指定最小距离为b,节点的最小宽度为a,则需要满以下约束条件:
构建约束图,
如上图最终生成的约束图为:
即两个元件的距离,需要保持在一个指定范围内。满足,等价于
最大距离约束,在约束图中用反向边来表示。如下图:
假设,节点的布局是在网格上进行的。每一个元件都在网格线上,两条平行相邻轴线之间的距离为,两个轴线上元素之间的最大间距。
通过移动轴线距离,来达到压实的目的。缺点: 最终生成的图的紧密程度较差,不如约束图的结果。
基于网格压实的进一步改进,即同一行或同一列上的节点可以进行拆分,拆分到不同的行列上。从而增加图的紧密性。
效果:
即通过两次一维压实组合,先进行水平方向上的压实,再进行垂直方向上的压实。
每个节点大小都是2*2,节点间的最小间距是1,初始布局容器大小是11*11,优化完后大小是8*11即通过两次一维压实组合,先进行垂直方向上的压实,再进行水平方向上的压实。
每个节点大小都是2*2,节点间的最小间距是1,初始布局容器大小是11*11,优化完后大小是11*84. 二维每个节点大小都是2*2,节点间的最小间距是1,初始布局容器大小是11*11,优化完后大小是8*85. 一又二分之一维一维和二维方式的中间方案,在x轴压实操作中,考虑少量的y轴压实。
根据节点,以及节点之间的位置关系,构建X-Y邻接图。
上述布局是在电路排版中的应用到的算法,算法中会为了极致的缩小空间,从而损失掉一部分节点的相对位置信息,比如层次信息等。回归到正常图布局中(如建模ER图),可以借鉴一部分的方式,比如基于虚拟网格的一维压实操作。
http://cas.et.tudelft.nl/~nick/courses/eda-0809/slides/04_compaction.pdf
http://www.doe.carleton.ca/~pavan/Public/Courses_files/04%20layout_compaction.pdf
https://www.youtube.com/watch?v=JHDuTYeOTZg
人脸识别 是目前商业应用最成熟、最广泛的人工智能技术之一,成为开发者、企业接...
大家在开发Python的过程中,一定会遇到很多反斜杠的问题,很多人被反斜杠的数量...
阿里巴巴、腾讯、支付宝、网易、IBM、谷歌、京东、 百度、滴滴等一线互联网公司...
公司介绍 长沙营智信息技术有限公司旗下易撰网,2017年10月份上线以来,基于数据...
本月DataWorks产品月刊为您带来 产品活动 1.参与阿里云DataWorks问卷调研 (Aliyu...
操作场景 您可以删除不需要的私有镜像。 删除私有镜像后,将无法找回,请谨慎操...
案例背景 永安稻香小镇的体验式数字农业基地是余杭街道依托“阿里以西10分钟”的...
【51CTO.com快译】 数据分析是对数据进行判断、细化、更改和建模的过程,目的是...
大数据市场如今正在呈爆炸式增长。根据调研机构Markets and Markets公司的调查,...
【51CTO.com快译】不知道您是否听说过软件架构师最讨厌意大利面这个梗?它是指软...