我一直在尝试使用R中的igraph包来简单地获得图表的最小化。我从UCI数据集中可用的“种子”数据集中读取了大约60行,用于在Clustering,Classification类别下进行机器学习。我只是想实现一种半监督的方法来对未标记的点进行分类(我在数据集中做了一些改变,以满足我的需要)。
我使用一些启发式构建了一个图形,我觉得heauristic正常工作。但是当我使用graph.mincut函数计算min-cut时会出现问题。
当我运行此行时
# g is the graph I am using
graph.mincut(g, value.only = FALSE)
完美回归
$value
[1] 1
$cut
[1] 144
$partition1
[1] 24
$partition2
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
但是当我给出源和目标变量时,即
graph.mincut(g, source = 1, target = 30, value.only = FALSE)
我收到一条错误消息
Error in graph.mincut(g, source = 1, target = 30, value.only = FALSE) :
Calculating minimum s-t cuts is not implemented yet
如果我给出以下行
graph.mincut(g, source = 1, target = 30, value.only = TRUE)
我得到答案
[1] 11
如果有人可以通过告诉我哪里出错,我将非常感激。
答案 0 :(得分:2)
您应该可以使用stMincuts
包中的igraph
函数获取最小值:
library(igraph)
set.seed(144)
g <- erdos.renyi.game(10, .5, directed=TRUE)
cut <- stMincuts(g, source=1, target=4)
现在您可以访问以下值:
cut$value
# [1] 4
被切割的边缘:
E(g)[cut$cuts[[1]]]
# Edge sequence:
#
# [8] 1 -> 3
# [15] 1 -> 4
# [24] 1 -> 6
# [30] 1 -> 7
和一个分区中的顶点:
V(g)[cut$partition1s[[1]]]
# Vertex sequence:
# [1] 1
如果有多个剪辑(我在此处提供的示例中有两个剪辑),您可以使用例如cut$cuts[[2]]
和cut$partition1s[[2]]
获取边/顶点,... < / p>