Я создал случайную сеть (Erdos-Renyi), которая имеет 100 узлов. Я установил значение атрибута для всех 100 узлов как 0. Я нахожу узел с максимальной степенью (большинство соседей) и изменяю его значение атрибута от 0 до 1. Затем, используя узел в качестве корневого узла, я делаю первый поиск по ширине (BFS) в сети.Изменение значений атрибутов узлов в сети при первом поиске по ширине в R
Вот мой код, чтобы сделать это до сих пор:
# Loads the igraph package
library(igraph)
# Creates a random (Erdos-Renyi) network with 100 nodes and edges with p = 0.2
graph <- erdos.renyi.game(100, 0.2, type = c("gnp", "gnm"), directed = FALSE,
loops = FALSE)
# Sets the attributes of all the nodes to 0
graph <- set.vertex.attribute(graph, "value", value = 0)
# Determines the maximum degree
max_deg <- max(degree(graph))
# The node with the maximum degree becomes the root node for the BFS, and changes
# its value from 0 to 1
root_node <- which(degree(graph) %in% c(max_deg))
V(graph)$value[root_node] = 1 - V(graph)$value[root_node]
# BFS on the network
bfs <- graph.bfs(graph, root = root_node, unreachable = FALSE, order = TRUE,
dist = TRUE)
Как проходит через каждый узел сети, я хочу, чтобы изменить значение атрибута узла он смотрит на от 0 до 1. Я не уверен, как это сделать.
Любая помощь будет высоко оценена.
Заранее спасибо.
Что вы подразумеваете под термином "it is looking at"? BFS «смотрит» на все вершины, доступные из корня. –
@GaborCsardi - Я хочу изменить значение атрибута узла, на который он смотрит в данный момент, прежде чем он перейдет к следующему узлу. Должен ли я использовать обратный вызов для этого? Если он не может этого сделать, есть ли другой способ достичь этого без использования BFS? – LoneWolf
Вы не можете изменить график во время работы BFS. igraph объекты неизменяемы, как и большинство объектов в R. –