Advertisement
Guest User

Untitled

a guest
Apr 25th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. Mnn <- function(X,M){
  2. m <- matrix(0,nrow(X),nrow(X))
  3. m <- as.data.frame(as.matrix(dist(X)))
  4. m[row(m)==col(m)] <- Inf
  5. m <- t(apply(m,1,order)[1:M,])
  6. m <- as.matrix(m)
  7. return(m)
  8. }
  9. Mnn_graph <- function(S){
  10. m <- as.data.frame(S)
  11. m <- mutate(m,Id = 1:nrow(S))
  12. m <- reshape2::melt(m,id="Id")
  13. edges <- m[,c(1,3)]
  14. m <- as.matrix(get.adjacency(graph.data.frame(edges))) #otrrzymujemy macierz sąsiedztwa
  15. gra <- graph.adjacency(m) #robimy graf z tej macierzy
  16. com <- components(gra) #szukamy skladowych
  17. comp <- igraph::groups(com)#zwracamy skladowe
  18. if(length(comp)==1){
  19. m <- as.matrix(m)
  20. return(m)
  21. }
  22. elem <- lapply(comp, `[[`, 1) #bierzemy po jednym elemencie z kazdej skladowej aby uspojnic graf
  23. elem <- unlist(elem)
  24. for(i in 1:length(elem)){
  25. m[elem[i-1],elem[i]] <- 1
  26. m[elem[i],elem[i-1]] <- 1
  27. }
  28. m <- as.matrix(m)
  29. return(m)
  30. }
  31. Laplacian_eigen <- function(G,k){
  32. m <- graph.adjacency(G)
  33. laplace <- laplacian_matrix(m)
  34. v <- as.double(unlist(eigen(laplace)[2]))
  35. var <- sqrt(length(v))
  36. v <- matrix(v,var,var)[,2:k+1]
  37. return(v)
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement