繁体   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