How to Draw Graph(一)
来源:互联网 发布:网站cms 编辑:程序博客网 时间:2024/04/30 13:50
我们这里讨论的图是图论中的图,主要是研究如何将图显示在一个2D的平面上。首先举一个例子,考虑一个随机图:
我们定义3n个顶点,分成3个团(Group),我们定义:
p(vi,vj)为vi和vj有边的概率,如果vi,vj属于同一个团,我们去比较大的概率,否则取比较小的概率。这样我们定义了一个有3个Group的随机图。
如果我们想把这个图在2D平面上显示出来,我们希望显示出来的图也能够显示出这种Group的结构。下面就是我们根据一定算法画出来的图:
对于画图的问题,我们可以如下定义:
给定一个图G{V,E},我们的任务是为每个顶点选择2D坐标vi(x,y),以最小化一个我们定义的能量函数E(V,E)。
首先我们考虑最小化的算法,我们可以用经典的梯度下降法,算法如下:
1. 对顶点vi,i=1,2,......,|V|,随机生成每个顶点的坐标。
2. for t = 1 to T:
for i = 1 to |V|:
计算E相对于vi的梯度下降方向ei,并产生vi的下一个位置 vi(t+1) = vi(t) + alpha * e,alpha是步长
这就是梯度下降法的步骤,当然还可以用很多优化算法,比如共轭梯度法,或者进化计算的方法。下面我们主要考虑如何设计能量函数E,E的设计我们将得到分子结构的启发。
我们定义3n个顶点,分成3个团(Group),我们定义:
p(vi,vj)为vi和vj有边的概率,如果vi,vj属于同一个团,我们去比较大的概率,否则取比较小的概率。这样我们定义了一个有3个Group的随机图。
如果我们想把这个图在2D平面上显示出来,我们希望显示出来的图也能够显示出这种Group的结构。下面就是我们根据一定算法画出来的图:
对于画图的问题,我们可以如下定义:
给定一个图G{V,E},我们的任务是为每个顶点选择2D坐标vi(x,y),以最小化一个我们定义的能量函数E(V,E)。
首先我们考虑最小化的算法,我们可以用经典的梯度下降法,算法如下:
1. 对顶点vi,i=1,2,......,|V|,随机生成每个顶点的坐标。
2. for t = 1 to T:
for i = 1 to |V|:
计算E相对于vi的梯度下降方向ei,并产生vi的下一个位置 vi(t+1) = vi(t) + alpha * e,alpha是步长
这就是梯度下降法的步骤,当然还可以用很多优化算法,比如共轭梯度法,或者进化计算的方法。下面我们主要考虑如何设计能量函数E,E的设计我们将得到分子结构的启发。
- How to Draw Graph(一)
- HOW TO DRAW UML DIAGRAMS
- How to draw image to screen directly
- How to Draw with HTML 5 Canvas
- How to Draw a Binary Tree ?
- How to Draw a Balanced Binary Tree ?
- A Reusable Class to Draw a Simple Graph
- How to draw bitmap on the form - 如何在窗体上画(贴)位图
- How to draw on a canvas in rap applications
- Java : how to draw a line in thickness
- Review:how to draw a mesh in xna
- XNA How To: Draw a Model with a Custom Effect
- HDU 4723 How Long Do You Have to Draw
- hdu-4724-How Long Do You Have to Draw-贪心
- How to Draw Waveform While Recording Using NAudio and WPF
- How To Draw Graphs with Core Plot, Part 1
- How To Draw Graphs with Core Plot, Part 2
- OpenCV怎么画箭头(How to draw an arrow)
- 天下大同
- 由理想主义到机会主义?我变了吗?
- 曼陀罗思考法
- 数据库表映射Delphi类的一个小程序
- 《 JavaScript高级程序设计》 第1章 学习
- How to Draw Graph(一)
- 清华VS麻省:对比后,才知道我们的教育是多么失败
- 中国十大最狠的流氓网站曝光!
- 《 JavaScript高级程序设计》第二章ECMAScript基础
- 中国黑客谱系
- 有关oracle data block的英文解读
- 为什么要学习SOAP/WebService?
- ddfg
- sequence与会话有关--oracle一个比较烂的特性