2013-04-09 3 views
5

Graphviz의 여러 버전이 라이브러리로 있다는 것을 알고 있습니다. 그러나 나는 어느 것이 현재의 것으로 간주되는지 + 조금은 혼란 스럽다. 나는 생성하고 리눅스 GUI 응용 프로그램에서 몇 가지 그래프를 표시하고 싶습니다.그래프를 생성해야하는 C++ 프로젝트에 권장되는 graphviz 라이브러리 API는 무엇입니까?

페이지 22의 http://www.graphviz.org/doc/libgraph/Agraph.pdf에 따르면, Libgraph는 Cgraph로 대체되었습니다. 그러나이 문서는 Agraph라고 불리며 이상하게 보입니다.

23 페이지에서 Lgraph는 Cgraph의 C++ 후속 버전이며 C++을 사용하고 있기 때문에 더 많이 알고 싶지만 Lgraph를 어디에서나 찾을 수는 없다고 말합니다.

아마 관련이 있습니다. BGL이라는 Boost 라이브러리가있어 그래프 파일 가져 오기 및 내보내기를 지원합니다. Graphviz에 직접 또는 Lgraph를 사용하는 것이 바람직한 지에 대한 의견을 찾으십시오.

내가 우분투처럼 보입니다. sudo apt-get install libgraphviz-dev 나는 Cgraph를 얻습니다. 어떤 경우,이 질문은 Cgraph가 권장 라이브러리인지 확인하고, Lgraph 또는 BGL 중 어느 것이 고려 가치가 있는지 질문하는 것입니다.

+0

cgraph (http://www.graphviz.org/doc/libguide/libguide.pdf)의 C API는 너무 나빠 보이지 않습니다. C로 작성된 경우를 제외하고는 거의 고전적으로 객체 지향입니다. –

+0

막연한 질문입니다. "그래프 생성"- 이것은 무엇을 의미합니까? Graphviz는 명확하게 표시 될 수 있도록 그래프를 배치합니다. BGL은 최단 경로와 같은 질문에 응답하기 위해 그래프를 처리하기위한 프레임 워크입니다. 하지만 그래프를 생성하고 싶습니다 ... 무엇부터? – ravenspoint

+0

@ravenspoint : 예를 들어 .gv 파일로 출력 할 수있는 내부 데이터가 있습니다. 수동으로 여러 .gv 파일을 만든 다음 system() 호출을 사용하여 도트를 그래프로 변환하도록 요청할 수 있습니다. 그러나 대신 Graphviz API를 사용하여 외부에서 Graphviz를 호출하는 것보다이 모든 작업을 수행하기를 바랬습니다. –

답변

2

BGL은 Graphviz에 대화 형 인터페이스를 제공하지 않습니다. 필요한 경우 cgraph와 같은 Graphviz의 기본 라이브러리 중 하나를 사용해야합니다. BGL은 Graphviz 형식의 파일을 읽고 출력 할 수 있지만 찾고있는 것과 같지 않습니다. 그것 자체의 일부 레이아웃 알고리즘을 가지고 있지만 Graphviz 에서처럼 정교하지는 않습니다.

+0

"Graphviz에있는 것만 큼 정교하지는 않습니다."절은 Boost 1.59 (http://www.boost.org/doc/libs/1_59_0/libs/graph/doc/topology.html)에서 여전히 보유하고 있습니까? – AlwaysLearning

관련 문제