Как Igraph справиться с весами?

  1. , когда вы хотите использовать строки Unicode, а не только ascii, полезно для интернационализации
  2. да, но это не очень хорошо работает с 0
  3. , не зная о каких-либо что не
  4. широкий символ является специфичным для компилятора способом обработки представления фиксированной длины символа Юникода, для MSVC это 2-байтовый символ, для gcc я понимаю, что это 4 байта. и +1 для http://www.joelonsoftware.com/articles/Unicode.html
0
задан S. Mrtz 17 January 2019 в 09:33
поделиться

2 ответа

Если вы посмотрите официальную документацию в пакете R igraph - https://igraph.org/r/doc/strength.html

вы обнаружите, что веса именуются:

«Вектор веса. Если график имеет атрибут« край веса », то он используется по умолчанию. Если график не имеет атрибута« весовой край »и этот аргумент равен NULL, тогда предупреждение дается и степень называется. "

Но также:

https://igraph.org/r/doc/edge_attr.html

объясняет, что ребра заданы как весовой атрибут

0
ответ дан Data Science 17 January 2019 в 09:33
поделиться

В igraph веса - это атрибуты ребер, которые представляют собой трение или стоимость перемещения этого ребра в полутоне, а не пропускную способность или . полоса пропускания края. Малый вес обеспечивает низкую весовую сумму пути, а get.shortest.paths() возвращает путь с наименьшей весовой суммой при запуске без отключения весов на взвешенном графике.

Этот пример кода показывает график с различными кратчайшими путями в взвешенном и невзвешенном режиме и объясняет, почему путь вычисляется по-разному.

library(igraph)

# Colours for the weighted edges
N <- 22
set.seed(7890123)

# Make a random graph with randomly weighted edges coloured in gray
g <- erdos.renyi.game(N, .2, type="gnp", directed=F, loops=F, weighted=T)
E(g)$weight <- sample(1:40, length(E(g)), replace=T)
#E(g)$weight <- E(g)$weight/10
E(g)$color <- "gray"
V(g)$size <- 4
V(g)$size[c(1,N)] <- 12

# Look how the shortest path is calculated differently when taken the graph weihgt into acocunt
(weighted.path <- unlist(get.shortest.paths(g, 1, N)$vpath) )
(unweighted.path <- unlist(get.shortest.paths(g, 1, N, weights=NA)$vpath) )

# Set weights and colours of shortest paths to visualise them
E(g, path=weighted.path)$color <- "red"
E(g, path=unweighted.path)$color <- "green"

# plot the graph with red shortest weighted path, and green shortest path
same.sahpe <- layout_with_fr(g)
plot(g, vertex.color="white", vertex.label=NA, edge.weight=2, edge.width=(E(g)$weight/5), layout=same.sahpe)

# The two paths look like this. Even though path-length might be longer, a weighted
# shortest path is determined using the sum of path-weights. As with path-lengths, the
# lowest value is the path most easily travelled by. In this case, the weighted alternative
# has a longer path but with lower friction.
data.frame(path.length=c(length(weighted.path),
                        length(unweighted.path)
                        ),
           weight.sum=c(sum(E(g, path=unlist(weighted.path))$weight),
                        sum(E(g, path=unlist(unweighted.path))$weight)
           )
)

Посмотрите, что кратчайший невзвешенный путь между двумя большими вершинами имеет длину 4, но проходит по довольно густо взвешенным зеленым краям. Кратчайший взвешенный путь имеет самую низкую весовую сумму и проходит больше шагов (5), но проходит по клиньям с меньшим весом, что приводит к более низкой весовой сумме или более низкой стоимости поездки по парту, если хотите. [ 1111]

enter image description here

0
ответ дан nJGL 17 January 2019 в 09:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: