2012-03-27 3 views
4

효율을 원하고 효율 (= 0.9 * 속도 + 0.1 * 기타)이 높으면 혼자서 코드를 작성하려고합니다. LEDA 그래프 또는 Boost 그래프 중에서 선택해야한다면 어느 것을 선택해야합니까?LEDA 그래프 v/s 부스트 그래프 라이브러리

내 알고리즘은 큰 그래프에서 작동하는 시간이 많이 걸리는 경우가 있습니다 (일부 알고리즘은 시간에 비 다항식입니다).

답변

5

부스트는 일반적으로 좋은 라이브러리입니다하지만 여러 가지 이유로 부스트 그래프를 제시하지 않을 것입니다.

BGL 문서는 쉽게 읽을 수 있고 사용자 가이드를 따르기가 쉽지 않습니다. 나는 내 자신의 문제와 관련된 특성을 가진 그래프를 정의하는 것이 매우 어렵다는 것을 발견했다.

당신은 종종 템플릿 내에서 템플릿 내의 템플릿을 보여주는 거대한 컴파일러 오류로 끝납니다.

내가 찾은 유일한 해결책은 Boost Graph와 함께 제공되는 간단한 예제로 시작하여 원하는대로 수행 할 때까지 적용하는 것입니다.

나는 이러한 이유로 부스트 그래프를 버린 많은 유능한 사람들을 알고 있습니다. 매우 효율적인 알고리즘이 있기 때문에 슬픈 일이 있습니다. 나를 위해 BGL 템플릿 과용의 교과서 예제입니다. Boost Graph는 포인트를 완전히 놓치지 않아 실패하는 좋은 아이디어입니다. 코드를 읽거나 유지 관리하거나 확장하거나 디버깅 할 수없는 경우 쓸모가 없습니다.

LEDA/부스트 구현의 대안이 있습니다. 는 https://stackoverflow.com/questions/510758/can-you-suggest-a-good-book-on-graphs-and-graph-algorithms (링크가 더 이상 유효)

3

부스트는 지속적으로 그것의 부분이 표준으로 이동 얻을 수 있도록 리팩토링되고, 공급 업체의 그것을 최적화하기 위해 계속 그 후에이 비슷한 소리가 나는 포스팅을 조사하는 것보다 당신은 더 악화 할 수 그들이 지원하는 목표 시스템에 대해. 드문 사용 시나리오에서 개발자는 상속을 사용하여 특정 경우에 대해 일부분을 조정할 수 있습니다.

작업이 C++에만 국한되어있는 경우 Boost의 일부가 표준에 통합되기를 원할 경우 이러한 장점이 있습니다. 독점적 인 LEDA를 사용하는 특별한 이유가있을 수 있습니다. 예를 들어 테스트로 오류가 발생하지 않도록 보장 한 다음 의사 결정자 만 이러한 기준을 준수해야합니다.

+0

+1. 아무도 이것을 언급하지 않았습니다. Boost는 미래의 표준 구성 요소를위한 경기장뿐만 아니라 매우 활발한 프로젝트로서 계속 향상되었습니다. –

관련 문제