Mark
Mark

Reputation: 1769

How does ` igraph` calculate the shortest path in a weighted directed network, using Dijkstra's Algorithm?

I would like to calculate the betweenness of a network like e.g.

>dput(relations)
structure(list(From = c("France", "Italy", "Malta", "Spain", 
"Germany", "Austria", "Luxembourg", "Luxembourg", "Luxembourg", 
"Greece", "Slovakia", "Belgium", "Luxembourg", "Estonia", "Germany", 
"Netherlands", "Netherlands", "Cyprus", "Greece", "Lithuania", 
"Estonia", "Greece", "Lithuania", "Slovakia", "Netherlands", 
"Luxembourg", "Estonia", "Malta", "Belgium", "Cyprus", "Austria", 
"Estonia", "Austria", "Germany", "Austria", "Netherlands", "Portugal", 
"Portugal", "Estonia", "Italy", "Spain", "Finland", "Belgium", 
"Spain", "Estonia", "Latvia", "Luxembourg", "Luxembourg", "Netherlands", 
"Italy", "Lithuania", "Cyprus", "Ireland", "Luxembourg", "Ireland", 
"Spain", "Belgium", "Latvia", "Netherlands", "Italy", "Slovenia", 
"Netherlands", "Greece", "Spain", "Austria", "Finland", "Malta", 
"Spain", "Austria", "Lithuania", "France", "Portugal", "Cyprus", 
"Finland", "Spain", "Spain", "Belgium", "Germany", "Germany", 
"Greece", "Netherlands", "Luxembourg", "Estonia", "Ireland", 
"Italy", "Portugal", "Greece", "Estonia", "Belgium", "Germany", 
"Slovenia", "Slovakia", "Lithuania", "Slovenia", "Portugal", 
"Portugal", "Slovakia", "France", "Portugal", "Netherlands"), 
    To = c("Slovakia", "Germany", "Portugal", "Austria", "Latvia", 
    "Cyprus", "Portugal", "Greece", "Italy", "Slovenia", "Ireland", 
    "Malta", "Ireland", "Germany", "Cyprus", "Portugal", "Slovenia", 
    "Italy", "Luxembourg", "France", "Slovakia", "Netherlands", 
    "Greece", "France", "Ireland", "Netherlands", "Cyprus", "Germany", 
    "Portugal", "Austria", "Luxembourg", "Austria", "Spain", 
    "Netherlands", "Belgium", "Cyprus", "Cyprus", "Luxembourg", 
    "Finland", "Belgium", "Lithuania", "Austria", "Spain", "Slovenia", 
    "Luxembourg", "Finland", "Slovenia", "Germany", "Austria", 
    "Slovenia", "Slovenia", "Portugal", "Finland", "Lithuania", 
    "Latvia", "France", "Netherlands", "Cyprus", "Spain", "Malta", 
    "France", "Finland", "Belgium", "Latvia", "Slovenia", "Slovenia", 
    "Cyprus", "Slovakia", "Slovakia", "Latvia", "Austria", "Ireland", 
    "Luxembourg", "Belgium", "Italy", "Estonia", "Greece", "Slovakia", 
    "Belgium", "Italy", "Latvia", "Malta", "Greece", "France", 
    "Greece", "Netherlands", "France", "Slovenia", "Latvia", 
    "Finland", "Austria", "Slovenia", "Belgium", "Cyprus", "Greece", 
    "Slovenia", "Cyprus", "Finland", "Malta", "Germany"), `1995` = c(274959716, 
    42345007970, 52361033, 784003104, 363593773, 26339142, 70240364.9716237, 
    66160839.8751728, 570402199.020507, 48087089, 7213761, 51841984.7433951, 
    17654753.3588222, 172147969, 510653861, 1490942352, 236034017, 
    21599848, 8237002.21796104, 78753113, 1785782, 317673116, 
    1997651, 191502494, 1085060805, 397894640.417207, 3278854, 
    311533699, 1120849630.02838, 16319437, 83172852.11371, 7429991, 
    1130916439, 37969299820, 893625108.88629, 85666548, 20013832, 
    34463454.0875298, 391203046, 6317180664.31942, 19705368, 
    392268361, 4455785372.87273, 222358956, 411505.596673383, 
    52421883, 15725678.4821813, 1822047157.86885, 2459346931, 
    1876562166, 808113, 1124090, 266044676, 2248412.10389544, 
    7378082, 18441136707, 20732500726.5828, 2916590, 4946996508, 
    1165517054, 737293168, 1253219429, 234340068.782039, 10770159, 
    966929910, 40043392, 1231347, 76204779, 564056237, 152914849, 
    3269662990, 108614454, 2313081.15506869, 1189550231.54615, 
    8097112911, 15174304, 877483944.124827, 2135381409, 28188202490.5877, 
    1524668022, 84865417, 1965397.25660491, 1384674, 3699841535, 
    4383865473, 1233064242, 664865392, 183091, 42970685.557638, 
    4742184966, 550250520, 102947427, 49519226.4265594, 5273729, 
    105863344, 5888705, 10907803, 1170153350, 20869834, 43104477514
    )), row.names = c(NA, -100L), class = c("tbl_df", "tbl", 
"data.frame"))
> dput(actors)
c("Slovakia", "Germany", "Portugal", "Austria", "Latvia", "Cyprus", 
"Greece", "Italy", "Slovenia", "Ireland", "Malta", "Luxembourg", 
"France", "Netherlands", "Spain", "Belgium", "Finland", "Lithuania", 
"Estonia")
>g <- graph_from_data_frame(relations, directed=TRUE, vertices=actors)

I would like to use the command provided by the package: betweenness(g). But I don't know how the distance between two nodes in igraph is calculated. Is it the sum of the weights? Or is it the sum of the reciprocals of the weights?

Upvotes: 0

Views: 72

Answers (1)

Szabolcs
Szabolcs

Reputation: 25703

In all igraph functions, the "length" of a path is considered to be the sum of the weights of edges making up that path.

Upvotes: 2

Related Questions