переупорядочивание строк матрицы по последовательности данных внутри

В. У меня есть график erdos.reyni. Я заражаю вершину и хочу посмотреть, какой последовательности вершин последует заболевание? В igraph есть полезные функции, такие как get.adjacency(), Neighbours.

Это матрица смежности с именами вершин вместо флагов 0,1, и я пытаюсь вывести из нее цепочку заражения. Как поток/последовательность эпидемии через граф, если определенная вершина заражена. Давайте не будем беспокоиться о вероятности заражения (предположим, что все вершины заражены с вероятностью 1).

Итак, предположим, я попал в вершину 1 (здесь это строка 1). Мы видим, что у него есть исходящие ссылки на вершину 4,5,18,22,23,24,25. Таким образом, следующие вершины будут связаны с 4,5,18...25, то есть со значениями в row4, row5, row18,... row25. Затем, согласно модели, болезнь будет распространяться по ним и так далее.

Я понимаю, что могу передать строку, чтобы упорядочить строки матрицы. Моя проблема в том, что я не могу понять, как создать эту последовательность.

Матрица выглядит так.

    > channel
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
 [1,]    4    5   18   22   23   24   25   NA
 [2,]    6   10   11   18   25   NA   NA   NA
 [3,]    7   11   18   20   NA   NA   NA   NA
 [4,]   24   NA   NA   NA   NA   NA   NA   NA
 [5,]    1    3    9   13   14   NA   NA   NA
 [6,]    3    8    9   14   19   23   NA   NA
 [7,]    3    4    8   15   20   22   NA   NA
 [8,]    2    3   25   NA   NA   NA   NA   NA
 [9,]    3    4   11   13   20   NA   NA   NA
[10,]    4    5    8   15   19   20   21   22
[11,]    3   13   15   18   19   23   NA   NA
[12,]   11   13   16   NA   NA   NA   NA   NA
[13,]    4    6   14   15   16   17   19   21
[14,]    2    6   13   NA   NA   NA   NA   NA
[15,]    3   17   20   NA   NA   NA   NA   NA
[16,]    6   15   18   23   NA   NA   NA   NA
[17,]    2   25   NA   NA   NA   NA   NA   NA
[18,]    2    5   NA   NA   NA   NA   NA   NA
[19,]    3   11   NA   NA   NA   NA   NA   NA
[20,]    1    4    7   10   12   21   22   25
[21,]    2    4    6   13   14   16   18   NA
[22,]    1    3    4   15   23   NA   NA   NA
[23,]    1   16   24   NA   NA   NA   NA   NA
[24,]    7    8   19   20   22   NA   NA   NA
[25,]    7   12   13   17   NA   NA   NA   NA

Я хочу изменить порядок этой матрицы на основе критериев выбора следующим образом:

R был бы наиболее полезным (но меня интересует алгоритм, поэтому любой python, ruby ​​​​и т. Д. Будет отличным). Результирующий вектор будет иметь длину 115 (8x25 = 200 - 85 NAs = 115). и будет выглядеть так. Это в основном то, как болезнь будет распространяться, если вершина 1 заразится.

4,5,18,22,23,24,25,24,1,3,9,13,14,2,5,1,3,4,15,23,1,16,24,7,8,19,20,22,7,12,13,17,7,8,19,20,22, 4,5,18,22,23,24,25,7,11,18,20...

Что я знаю на данный момент: 1. В R есть пакет **igraph**, который позволяет мне вычислять соседей(graph, vertex, "out") 2. Этот же пакет также может генерировать get.adjlist(graph...), get.adjacency


person user2217564    schedule 27.03.2013    source источник