2012-04-10 4 views
2

У меня есть следующий граф,Как получить фундаментальные циклы с R + Igraph

library(igraph) 
library(Cairo) 

g<-graph(c(0,1,0,4,0,9,1,7,1,9,2,9,2,3,2,5,3,6,3,9,4,5,4,8,5,8,6,7,6,8,7,8),n=10,dir=FALSE) 
V(g)$name<-c(1:10) 
V(g)$label<-V(g)$name 
coords <- c(0,0,13.0000,0,5.9982,5.9991,7.9973,7.0009,-1.0008,11.9999,0.9993,11.0002,7.9989,13.0009,10.9989,14.0009,5.9989,14.0009,7.0000,4.0000) 
coords <- matrix(coords, 10,2,byrow=T) 
plot(g,layout=coords) 

Я хотел бы получить циклы 4, 5 ... п вершин, например, в этих графе я хотел бы чтобы получить циклы 5,

1 10 3 6 5 
2 8 7 4 10 
3 4 7 9 6 

Я не хочу циклов, как

1 2 8 9 5, которые Vertex внутри этого цикла.

+0

ты изучал страницу справки для 'графа? '? –

+2

Очевидно, я изучил руководство и график, почему? вы что-то видели по этому поводу? благодаря – user1310873

ответ

3

Я думаю, для начала, давайте немного изменим ваш код, чтобы облегчить кому-то создание графика «из коробки».

Для этого кода Cairo не требуется, поэтому давайте удалим его. Заменить строку создания граф с этими двумя линиями:

your.nodes<-c(0,1,0,4,0,9,1,7,1,9,2,9,2,3,2,5,3,6,3,9,4,5,4,8,5,8,6,7,6,8,7,8) 
g<-graph(your.nodes+1,dir=FALSE) 

your.nodes+1 что существует потому, что граф()/igraph обрабатывает 0 ID в особым образом. Возможно, тема для другого времени.

На этом этапе вы можете построить график из своей последней строки. Plot of igraph

Теперь, глядя на участок, мне интересно, почему 1 2 8 9 5 не нужен. Наверное, я не уверен, что вы подразумеваете под «вершиной внутри цикла». Что касается получения фундаментального цикла, посмотрите на fundCycles() от ggm.

(PS:.. Кроме того, извините за размещение этого в качестве ответа у меня нет достаточного количества очков репутации, чтобы задать это в комментариях, и вставлять изображения)