혼합 된 구성 요소 / 종속성 그래프 (언어학 응용 프로그램)를 그리는 알고리즘을 찾고 있습니다. 이러한 그래프에는 두 가지 유형의 정점 (토큰, 노드)과 두 가지 유형의 가장자리 (계층 적, 비 계층 적)가 있습니다.
나는 일반적으로 이론과 알고리즘을 그래프로 처음 접했고이 질문이이 사이트의 연구 수준 요구 사항과 충돌하지 않기를 바랍니다. 그러나 일반적으로 cstheory의 범위 내에 있어야합니다 .
모든 토큰은 동일한 y 좌표로 표시되어야하며 토큰 및 / 또는 노드를 구성 요소로 그룹화하는 노드의 y 좌표는 동적으로 계산되어야하므로 그래프는 상향식으로 그려야합니다 (제 생각에) 예를 들어, 가장 긴 토큰 경로를 통해.
계층 적 에지 (토큰 / 노드를 구성 요소로 그룹화하는 데 사용됨)에는 최소 수의 굽힘 점이 있어야하지만 (최소 0), 필요한 경우 이전 요구 사항을 겹쳐서 최소 수의 교차점이 있어야합니다.
비 계층 적 모서리 (종속성에 사용)는 최소 교차 수를 가져야하며 베 지어 곡선으로 그려야합니다.
내가 만난 가장 좋은 것은 Buchheim et al. 선형 시간으로 실행되도록 Walker의 알고리즘을 개선합니다.
내 질문을 개선해야 할 필요가 있으면 알려주십시오. 포인터에 대해 미리 감사드립니다.
편집하다:
의견에서 지적했듯이 기본적으로 알고리즘에 의한 기본 그래프 레이아웃이 필요하다는 것을 언급해야합니다.이 알고리즘은 장기적으로 Eclipse GEF 가능성 내에서 편집하고 수정하고 싶습니다 . 이전에 Graphviz가 GEF와 작동하도록 옵션을 살펴 봤지만 GEF에서 상속 된 모든 편집 기능을 유지하는 작동 솔루션이없는 것 같습니다.