2011-04-13 9 views
1

그래프 알고리즘을 구현하기위한 C++ 라이브러리를 만들고 있습니다. 나는 클래스 "그래프"의 적절한 표현에 대해 생각하고 있습니다.데이터 모델, 그래프 라이브러리, C++

두 가지 주요 유형의 그래프 (방향/방향 없음) 및 표현 (목록/매트릭스)입니다.

저는 알고리즘에 문제가 없습니다 ...하지만 필요한 경우 클래스의 상속 시퀀스를 포함하여 적절하고 강력한 데이터 구조를 제안하고 싶습니다.

현재 그래프를 나타내는 특수 데이터 구조를 사용하지 않으며 정적 메서드는 입력 매개 변수로 입수, 인접성 ... 행렬을 갖습니다.

이러한 클래스는 그래프의 표현을 유지하거나 두 표현 사이의 변환 함수가있는 하나의 표현 만 유지해야합니까? 어느 것이 더 좋을까요?

이 문제는 다양한 접근 방식을 사용하는 많은 사람들이 해결했습니다.

답변

3

휠을 다시 만들기 전에 boost::graph을 살펴보십시오. bundled properties을 잊지 마세요.

+0

아주 좋은 작동하지만 코드가 많은 일부 경우에 복잡하다. – xis

+0

@ xis19 : 아, 조금 복잡합니다. 일반적으로 유연성/보편성을위한 트레이드 오프 중 하나입니다. – genpfault

+0

미안하지만, 내 질문에 대답하지 않았다 : -) ... 부스트가 너무 많이 불만을 제기하고 그래프 알고리즘에서 기능이 매우 적다. – Johnas

2

수업 중 또는 연습 중입니까? 왜냐하면 당신이 지적했듯이,이 문제는 여러 번 해결되었습니다. 하나는 다양한 솔루션을 통해 보이는 그리고, 하나는 문제가 실현 하나가되지 비록의 같은 :

  • 감독/무향 그래프
  • 사용자 노드 데이터와 조밀 한 대
  • 스파 스 가장자리를 연결
  • 템플릿 다른 패키지에
  • 종속 기반 템플릿이 아닌 대 작은 그래프 VS
  • 큰 그래프

등등 ...

을 시도해보십시오 가장 인기 구현의 일부보고 :

https://stackoverflow.com/questions/2751826/which-c-graph-library-should-i-use

+0

고마워,하지만 내 질문을 작성하기 전에이 주제를 읽었 ... – Johnas

+0

사실이 문제는 많은 C 언어로 된 템플릿 그래프 라이브러리가 아닌 것 같은 의미에서 여러 번 풀린 것 같습니다. – einpoklum

관련 문제