我的项目是关于在 java 中实现 hyperGraph
我的 hyperGraph 包含各种类型的 hyperEdge,具体取决于我拥有的顶点类型
顶点类型:图像,标签...
HyperEdge =同质(相同类型的相关顶点)/异构(不同类型的相关顶点)
同构HyperEdge = Image-image HyperEdge/Tag-tag hyperEdge
这是一个快速绘制的 UML 图
这是我的代码
public interface HomogenousHyperedge< T extends Vertex<L>, L> extends Hyperedge {
public abstract List<T> searchNearstNeighborsVertex(
Hypergraph hypergraph, T vertex);
}
public class ImageImageHyperedge implements
HomogenousHyperedge<ImageVertex, Map<String,Instance>> {
@Override
public List<ImageVertex> searchNearstNeighborsVertex(Hypergraph hypergraph,
ImageVertex vertex) {
return null;
}
}
问题出在 ImageImageHyperEdge 类中我应该知道基于它的特征类型是什么我将搜索 ImageVertex 最近邻居我无法将其传递给超级接口的抽象方法,因为 TagTagHyperEdge 类不需要它
如果我用 {featureOneHyperEdge class ,...featureFiveHyperEdge class } (我知道特征类型)替换 ImageImageHyperEdge 类,它将是重复的代码,因为它是相同的最近邻搜索算法
特征=图像的低级特征(例如颜色直方图)
我有 5 种低级特征
我将使用每一种来搜索我当前图像的最近邻居
所有特征都存储在一个简单的文本文件
中使用相同的算法搜索最近的邻居
,每次只更改文件