В моем коде построение всего двудольного графа занимает гораздо меньше времени, чем построение одной из проекций (которые, конечно, имеют меньше узлов, чем двудольный граф, поскольку он является только частью двудольного графа).Как это может быть?
Вот код:
rm(list=ls())
library(igraph)
library(tictoc)
nodes <- read.csv("./ma_nodes.csv", header=T, as.is=T)
links <- read.csv("./ma_edges.csv", header=T, as.is=T)
nodes$type <- as.logical(nodes$IsInvestor)
net <- graph_from_data_frame(d=links, vertices=nodes, directed=T)
net.bp <- bipartite_projection(net, multiplicity=F)
net.prj1 = net.bp$proj1
net.prj2 = net.bp$proj2
tic("Plotting bibpartite net")
plot(net)
toc()
tic("Plotting prj2")
plot(net.prj2)
toc()
tic("Plotting prj1")
plot(net.prj1)
toc()
Вот результат:
Plotting bibpartite net: 5.04 sec elapsed
Plotting prj2: 0.21 sec elapsed
Plotting prj1: 77.9 sec elapsed
Также обратите внимание, что для измерения используется Sys.time ()время (и принимая разницу времени окончания - время начала), этот эффект не фиксируется.Но это не так: построение последнего графика занимает гораздо больше времени, чем построение двух других.Это проблема sys.time (), которая не в состоянии уловить это (но, вероятно, это для другого вопроса)
Что здесь происходит?