How to Draw Graph(一)

我們這裏討論的圖是圖論中的圖,主要是研究如何將圖顯示在一個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的設計我們將得到分子結構的啓發。 
發佈了71 篇原創文章 · 獲贊 3 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章