Q.I有一个erdos.reyni图。我感染一个顶点,并想看看疾病会出现什么样的顶点序列? igraph有像get.adjacency(),neighbors()这样的函数。获取邻接矩阵的传染链,r,igraph
详情。这是带有顶点名称而不是0,1标志的邻接矩阵,我试图从中得到传染链。如果某个顶点被感染,就像通过图形的流行病的流程/顺序一样。我们不必担心这里的感染概率(假设所有顶点命中都被概率1感染)。
因此,假设我点击顶点1(这是第1行)。我们看到它有到4,5,18,22,23,24,25顶点的传出链接。那么接下来的顶点将是那些连接到4,5,18 ... 25的顶点,即那些在第4行,第5行,第18行,...第25行中的值。然后,根据该模型,疾病将穿过这些等等。
我明白我可以传递一个字符串来排列矩阵行。我的问题是,我无法弄清楚如何生成该序列。
矩阵看起来像这样。
> channel
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 4 5 18 22 23 24 25 NA
[2,] 6 10 11 18 25 NA NA NA
[3,] 7 11 18 20 NA NA NA NA
[4,] 24 NA NA NA NA NA NA NA
[5,] 1 3 9 13 14 NA NA NA
[6,] 3 8 9 14 19 23 NA NA
[7,] 3 4 8 15 20 22 NA NA
[8,] 2 3 25 NA NA NA NA NA
[9,] 3 4 11 13 20 NA NA NA
[10,] 4 5 8 15 19 20 21 22
[11,] 3 13 15 18 19 23 NA NA
[12,] 11 13 16 NA NA NA NA NA
[13,] 4 6 14 15 16 17 19 21
[14,] 2 6 13 NA NA NA NA NA
[15,] 3 17 20 NA NA NA NA NA
[16,] 6 15 18 23 NA NA NA NA
[17,] 2 25 NA NA NA NA NA NA
[18,] 2 5 NA NA NA NA NA NA
[19,] 3 11 NA NA NA NA NA NA
[20,] 1 4 7 10 12 21 22 25
[21,] 2 4 6 13 14 16 18 NA
[22,] 1 3 4 15 23 NA NA NA
[23,] 1 16 24 NA NA NA NA NA
[24,] 7 8 19 20 22 NA NA NA
[25,] 7 12 13 17 NA NA NA NA
我想基于一个选择标准来重新排序这个矩阵如下:
R.将是最有帮助的(但我感兴趣的算法中,因此任何Python和Ruby,etc.will很大)。所得到的载体将具有115的长度(8×25 = 200-85NA = 115)。看起来像这样。基本上,如果顶点1被感染,疾病会如何传播。
4,5,18,22,23,24,25,24,1,3,9,13,14,2,5,1,3,4,15,23,1,16,24,7,8,19,20,22,7,12,13,17,7,8,19,20,22, 4,5,18,22,23,24,25,7,11,18,20...
我知道到目前为止什么: 1. R的包**igraph**
它让我算算邻居(graph, vertex, "out")
2.同一个包还可以生成get.adjlist(graph...), get.adjacency
有趣的评论。现在你们坚持。该矩阵是具有向量名称而不是二进制标志的邻接矩阵。 输出将是流行病流模型,但它不是模拟疾病而是银行违约! :) 至于提示......从编码的最后2周开始,我收集了像R/java这样的高级语言,它比C++中的旧学校字符类型更好地操纵矢量。 – user2217564 2013-03-27 22:44:19
等等,这不是基本上是通过图形的广度优先搜索吗? – Marius 2013-03-27 23:38:08
查看'graph.bfs()',特别是'order'参数。 – Marius 2013-03-27 23:47:10