그래프 자동 레이아웃 알고리즘
문제를 단순화하기 위해 2D 평면에있는 노드와 간선을 포함하는 그래프가 있습니다.
내가 할 수 있기를 원하는 것은 버튼을 클릭하는 것입니다. 그러면 자동으로 그래프 레이아웃이 깔끔하게 보입니다. 즉, 최소한의 모서리 교차, 노드 사이의 좋은 공간, 어쩌면 그래프 스케일 (가중 된 모서리)을 나타낼 수도 있습니다.
나는 이것이 깨끗한 그래프가 무엇인지에 대해 완전히 주관적이라는 것을 알고 있지만, 바퀴를 재발 명하지 않고 시작할 알고리즘을 아는 사람이 있습니까?
감사.
graphviz 살펴보기를 제안합니다 . 이 dot
프로그램은 그래프의 사양을 가져 와서 "깨끗하게"네트워크 이미지를 생성 할 수 있습니다. 해당 페이지의 "이론"링크는 이론적 배경에 관심이있는 경우 관련 될 수있는 링크를 제공합니다.
당신은 발견 할 것이다 : // HTTP graphdrawing.org / 과 이 자습서 에 의해, 로베르토 타마 시아 , 브라운 대학 교수, 아주 도움이 있습니다.
저는 Spring Embedder 와 같은 Force-Directed Techniques (튜토리얼의 66-72 쪽)를 많이 좋아합니다 .
인접한 두 노드 사이에 스프링 또는 다른 힘이 있다고 가정하고 자연 (시뮬레이션)이 작업을 수행하도록합니다. :)
또한 Java 레이아웃을 원한다면 JGraph (나는 프로젝트에서 일함 ).
Noufal Ibrahim이라고 말하고 싶지만 graphviz 프로젝트 의 C API를 더 정확하게 볼 수도 있습니다 . 여기에는 모든 노드와 가장자리로 그래프를 빌드하는 lib ( libgraph.pdf )와 그래프 레이아웃을위한 lib ( libgvc.pdf ) (각 노드 위치 만 계산)가 포함되어 있으므로 사용자 고유의 UI에 표시 할 수 있습니다. 예를 들면.
가장 인기있는 레이아웃이 실제로 어떻게 보이는지 좋은 시각적 가이드 : 링크를 따라 가십시오.
참고 URL : https://stackoverflow.com/questions/5028433/graph-auto-layout-algorithm
'UFO ET IT' 카테고리의 다른 글
아코디언 테이블 셀-uitableviewcell을 동적으로 확장 / 축소하는 방법은 무엇입니까? (0) | 2020.12.04 |
---|---|
관리 빈과 백업 빈의 차이점 (0) | 2020.12.04 |
프리 페치 예? (0) | 2020.12.04 |
파이썬을 사용하여 한 쌍의 비선형 방정식을 푸는 방법은 무엇입니까? (0) | 2020.12.04 |
크롬 : 포스트 데이터의 출처? (0) | 2020.12.04 |