图的可视化

来源:10-1 看得见的算法,下一季再见!

JamesChi

2018-01-09

波波老师您好。我在自己用H5的canvas编写tree和graph的可视化,用一个个圆形表示每一个节点。tree比较好办,我是递归的计算出每个节点圆心的x, y值。但在画graph的各个节点时,我没有想到一个好的方法,根据什么规则把N个节点画到canvas上。波波老师有什么建议吗?有没有某一个算法能够比较优雅的画出N个节点?

写回答

1回答

liuyubobobo

2018-01-09

对于一个已知图将其“平面化”,是一个经典且复杂的问题。如果希望了解更多,可以搜索学习Planar Graph的相关理论。


我的建议是:如果是随机生成图,不要先生成图再平面化,而是直接在二维平面上随机生成节点的二维坐标,每一个节点只和离其最近的k个节点随机生成边。(k为超参数,可以自己指定,也可以在生成的时候判定边之间不相交即可。判定平面上线的相交,又是一个经典的计算几何的问题。)


如果图的规模比较小,手动指定图的每个节点在二维平面上的坐标和相应的边,也是一种选择。

0
1
JamesChi
感谢老师指点迷津
2018-01-09
共1条回复

7个经典应用诠释Java算法精髓

课程重应用、重实践、重思维,真正应用于实际工作开发中

1888 学习 · 112 问题

查看课程