簡體   English   中英

如何使用Jung定義邊或頂點的屬性?

[英]How can i define the attributes of edges or vertices by using Jung?

可能這是一個幼稚的問題,但實際上我沒有定義圖中邊或頂點屬性的函數。

鑒於我的圖是DirectedSparseGraph。

先感謝您

在JUNG中,可以使用幾種不同的方式來處理邊/頂點屬性。

(以下材料摘自《 JUNG手冊》,目前位於http://sourceforge.net/apps/trac/jung/wiki/JUNGManual 。)

JUNG的許多方法都要求用戶指定圖形元素(頂點或邊緣)與某種數據之間的關聯:標簽文本,邊緣權重,顏色等。按照慣例,這通常是通過Transformer完成的。

Transformer是具有單個方法transform(I input)的commons-collections接口,該方法為任何輸入返回一些輸出類型(O)的對象。 這實質上定義了輸入和輸出類型的元素之間的關系。 從某種意義上說,它類似於Map,除了它更輕巧並且是只讀的。

有幾種不同的方法可以編寫其中一個變壓器。 這適用於要求您提供變壓器的任何地方。

(1)恆定值。 為此,實際上有一個ConstantTransformer類(在commons-collections中)。 這在要求您提供“變形金剛”但實際上所有元素應獲得相同值的情況下很有用(例如,在未加權圖形時提供邊緣權重)。

(2)支持地圖的地圖-新地圖或基於現有地圖的地圖。 有一個MapTransformer類(同樣是commons-collections)可以處理這種情況。 當您擁有與元素一樣多的不同值時,或者在沒有將元素與值/輸出相關聯的明顯模式時,這很有用。

(a)新地圖:為每個元素在地圖中創建一個(元素,值)對。 如果這些值與其他任何內容都不相關,那么這可能是合適的……盡管這可能很少見。

(b)現有的Map:通常您會擁有一個可以滿足您需要的現有查詢表(請參見下面的注釋); 無需創建一個新的。

(3)元素實例支持變量。 這與基於Map的支持幾乎相同,但是具有不同的存儲模型。

(4)基於即時函數調用(計算,狀態報告等)。

(5)以上的組合或變體,例如,使用拾取信息來確定要使用兩種顏色中的哪一種的變壓器。

請注意,在任何這些情況下,轉換器都可以采用一個過程(映射,實例變量,函數調用),該過程輸出除所需內容之外的其他內容(例如浮點值)並將其轉換為適當類型的值(例如,油漆)。 例如,假設您想將具有高PageRank的頂點繪制為紅色,將其具有適中的PageRank繪制為黃色,將具有低PageRank的頂點繪制為黑色。 您可以輕松構造一個Transformer類,該類獲取PageRank數據(可能本身由您提供給構造函數的Transformer提供),找出所需的三個間隔中的哪個,然后在為其指定頂點時輸出適當的顏色。 更進一步,編寫基於閾值的通用Transformer甚至很容易,它將基於閾值到顏色的Transformer作為其構造函數參數。

這確實是在JUNG中使用變形金剛的關鍵見解:我們正在嘗試以某種方式使用它們,例如,您需要做的工作最少,以便運行一種算法,其中算法的邊權重基於由事件頂點(代表作者)共同撰寫的論文數,或者創建可視化,其頂點顏色是活動級別的函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM