RGL을 사용하여 Ruby에서 방향 그래프를 구현했습니다. 주어진 노드에서 들어오는 연결과 나가는 연결이있는 노드 만 찾는 방법을 찾는 데 어려움이 있습니다 . 아마도 나는 간단한 것을 놓치고 있습니다.Ruby에서 RGL을 사용하는 방향성 그래프로 작업하기
답변
방금이 문제가 발생했습니다.
require 'rgl/adjacency'
require 'rgl/bidirectional'
class RGL::DirectedAdjacencyGraph
def in_degree(v)
rdg = self.reverse
rdg.adjacent_vertices(v).size
end
def out_degree(v)
self.adjacent_vertices(v).size
end
end
dg=RGL::DirectedAdjacencyGraph[1,2 ,2,3 ,2,4, 4,5, 6,4, 1,6]
p dg.in_degree(2)
#=> 2
p dg.out_degree(2)
#=> 1
p dg.in_degree(1)
#=> 0
p dg.out_degree(3)
#=> 0
더 이상 대답은 아직 구현 될 것으로 보이지 않는다는 것입니다 : 그것은 가장 우아한 방법이 될하지 않을 수도 있지만, 일 수있는 reverse method 사용.
작동 방식은 RGL :: Bidirectional 모듈을 유향 그래프 클래스와 함께 포함하면 모든 중요한 each_in_neighbor 메서드를 제공합니다. 따라서이 같은 작업을해야합니다 (그러나하지 않습니다) :이 것이 얼마나 많은 일을 볼 수있는 코드로 파고하지 않은
require 'rgl/adjacency'
require 'rgl/bidirectional'
class RGL::DirectedAdjacencyGraph
include RGL::BidirectionalGraph
end
dg=RGL::DirectedAdjacencyGraph[1,2 ,2,3 ,2,4, 4,5, 6,4, 1,6]
dg.vertices
#=> [5, 6, 1, 2, 3, 4]
p dg.adjacent_vertices(2)
#=> [3, 4]
p dg.each_in_neighbor(2)
#=> NotImplementedError :(
#=> Should be: [1]
,하지만 사용자의 필요에 따라 더 좋은 옵션이 될 수 있습니다.
편집 : 소스 노드와 대상 속성에 하위 노드가 액세스 할 수 없다는 점을 잊어 버렸습니다. 그러나 대체 접근법은 그래프에서 관심있는 모든 모서리를 모으고 이들 중 어느 것이 관심 대상 노드를 목표로하는지 확인하기 위해 비교할 수 있습니다.
RGL :: DirectedAdjacencyGraph은 나가는 연결을 효율적으로 구현합니다. 들어오는 가장자리에 효율적으로 액세스하려는 경우 에 정의 된 개념을 효율적으로 구현해야합니다. RGL :: BidirectionalGraph 특정 지향 그래프 구현에서 RGL :: BidirectionalGraph # each_in_neighbor 메소드를 구현해야합니다.
외부 정점에 대해 DirectedAdjacencyGraph과 같은 목록에도 각 정점에 대한 이웃을 저장한다고 가정합니다. 그런 방법이 맘에 수 :
# Iterator providing access to the in-edges (for directed graphs) or incident
# edges (for undirected graphs) of vertex _v_. For both directed and
# undirected graphs, the target of an out-edge is required to be vertex _v_
# and the source is required to be a vertex that is adjacent to _v_.
def each_in_neighbor (v, &block)
in_neighbors = (@vertice_dict_for_in_neighbors[v] or
raise NoVertexError, "No vertex #{v}.")
in_neighbors.each(&block)
end
삽입하거나 가장자리와 정점을 제거 할 때 두 정점 사전을 관리하기 위해 당신이이 방법을 사용.
- 1. Ruby에서 여러 프로세스 작업하기
- 2. 브라우저에서 방향성 그래프 렌더링하기
- 3. Ruby에서 조인을 사용하는 SimpleDB 라이브러리
- 4. 우분투 9.10에 R 패키지 rgl을 어떻게 설치합니까?
- 5. R : x64 Windows에서 RGL을 사용할 수 있습니까?
- 6. 부스트 그래프로 이미지 분할
- 7. 도표를 그래프로 그려주는 튜토리얼
- 8. 액세스로 그래프로 Powerpoint 만들기
- 9. mysql에서 데이터를 그래프로 표시
- 10. 방향성 그래프를 디자인하기위한 오픈 소스 라이브러리
- 11. BigDecimal을 사용하여 통화로 작업하기
- 12. FORM으로 작업하기
- 13. cronjobs로 작업하기
- 14. 외국어로 작업하기
- 15. Ruby에서 블록을 사용하는 함수를 테스트하는 방법입니까?
- 16. Ruby에서 google place API를 사용하는 방법?
- 17. Ruby에서 추가 인수를 사용하는 setter 메서드 만들기
- 18. Ruby에서 sass-rails 도우미를 사용하는 방법?
- 19. Ruby에서 MySQL 모듈을 사용하는 쿼리가 부러 졌습니까?
- 20. jruby와 ruby에서 작동하는 프로젝트에 bundler를 사용하는 방법
- 21. Ruby에서 통계 그래프 작성
- 22. 해변 계속 작업하기
- 23. 단일 파일에서 공동 작업하기
- 24. $ _GET 함수에서 앰퍼샌드로 작업하기
- 25. 자바 처리로 데이터를 그래프로 표현하기
- 26. 새 오픈 그래프로 객체 연결
- 27. 종속성 그래프로 셀러리 작업 실행
- 28. C 코드를 자동으로 그래프로 만들기
- 29. 두 줄을 하나의 그래프로 플롯
- 30. android에서 카메라로 작업하기
RGL은 자체 태그로 생각합니다. 그래서 나는 당신을 위해 하나를 만들었습니다. – Earlz