У меня есть граф G и его матрица смежности. Я хочу преобразовать его в линейный граф L (G), так что узлы графа G становятся ребрами в L (G) и наоборот.
Есть ли какой-либо пакет в R, который может выполнять такую обмену от узлов к краям и кромкам к узлам?Как преобразовать граф в его эквивалентный граф Графа Графа/Границы Графа/Перемена в R?
1
A
ответ
4
я написал небольшую функцию, которая вычисляет матрицу смежности линейного графика:
LineGraph <- function(A) # A: adjacency matrix
{
n <- nrow(A)
m <- sum(A)/2 # m: number of edges
X <- lower.tri(A)*A # X: still the adjacency matrix,
X[which(X!=0)] <- 1:m # but edges are numbered
p <- which(X!=0)-1
edgeNames <- apply(matrix(c((p %% n)+1,p %/% n+1),m),1,
function(v){paste(sort(v),collapse=".")}) # names of the edges
X <- X + upper.tri(X)*t(X)
A.line <- matrix(0,m,m) # A.line will become the adjacency matrix of the line graph
rownames(A.line) <- edgeNames
colnames(A.line) <- edgeNames
apply(X,1,
function(x)
{
p <- which(x!=0)
q <- outer(x[p],m*(x[p]-1),"+")
A.line[c(q)] <<- 1
})
A.line[(1:m)+m*(0:(m-1))] <- 0
return(A.line)
}
Пример:
> A <- matrix(c(0,1,1,1,0,
+ 1,0,0,0,1,
+ 1,0,0,1,0,
+ 1,0,1,0,1,
+ 0,1,0,1,0), 5, 5)
> LineGraph(A)
1.2 1.3 1.4 2.5 3.4 4.5
1.2 0 1 1 1 0 0
1.3 1 0 1 0 1 0
1.4 1 1 0 0 1 1
2.5 1 0 0 0 0 1
3.4 0 1 1 0 0 1
4.5 0 0 1 1 1 0
>
1
make_line_graph
из igraph
пакета преобразует график в его соответствующий линейный график.
Таким образом, используя матрицу смежности сверху
library(igraph)
m <- make_line_graph(graph_from_adjacency_matrix(A, mode="undirected"))
as_adjacency_matrix(m, sparse=FALSE)
# [,1] [,2] [,3] [,4] [,5] [,6]
#[1,] 0 1 1 1 0 0
#[2,] 1 0 1 0 1 0
#[3,] 1 1 0 0 1 1
#[4,] 1 0 0 0 0 1
#[5,] 0 1 1 0 0 1
#[6,] 0 0 1 1 1 0
Смежные вопросы
- 1. Преобразование взвешенного прямого циклического графа в эквивалентный ациклический граф
- 2. Как преобразовать граф точек в график json?
- 3. Как вывести ориентированный граф в формате графа?
- 4. Как преобразовать неориентированный, очень циклический граф в направленный ациклический граф?
- 5. Граф словарь против графа Key
- 6. преобразовать событие графа узла активности в граф узла событий
- 7. Многомерный граф поверхности/граф граф
- 8. Как преобразовать граф объекта класса в Map
- 9. Как преобразовать граф в точки данных в R
- 10. Двусторонний граф в Gephi
- 11. R: Добавление шкалы в граф
- 12. граф строк в R data.table
- 13. Как преобразовать Doctrine2 граф сущностей в массив
- 14. раскраски граф соединений в R
- 15. Граф функции, ограниченной в R
- 16. Алгоритм преобразования списка смежности мультиграфа в эквивалентный неориентированный граф
- 17. R создать граф строк
- 18. Как преобразовать типизированную зависимость в семантический граф
- 19. как преобразовать направленный ациклический граф в дерево
- 20. Направленный граф и неориентированный граф - Java
- 21. Ациклический граф в Django
- 22. Как построить граф знаний?
- 23. Как создать кумулятивный граф в R
- 24. Как создать дерево граф в R
- 25. Преобразование простого ориентированного графа в простой неориентированный граф
- 26. удалить граф метки из GGPLOT2 графа
- 27. Преобразование решетки в граф?
- 28. Как построить граф в graphx
- 29. Как найти граф После регистрации в SQLAlchemy
- 30. Получить граф символ граф в javascript строк?
Я нашел line.graph (граф) в качестве общего кода для преобразования графа в его линейный график. Кстати спасибо. –