Я ищу алгоритм для рисования смешанного графа групп интересов / зависимостей (для лингвистического приложения). Такой граф будет иметь два разных типа вершин (токены, узлы) и два разных типа ребер (иерархические, неиерархические).
Я новичок в теории графов и алгоритмах в целом, и я надеюсь, что этот вопрос не вступает в противоречие, например, с требованиями исследовательского уровня этого сайта. Однако, как правило, это должно быть в рамках теории .
График должен быть нарисован снизу вверх (я думаю), так как все токены должны отображаться с одинаковыми координатами y, а координаты y узлов, группирующих токены и / или узлы в составляющие, должны рассчитываться динамически, например, через их самый длинный путь к токену.
Иерархические ребра (используемые для группировки токенов / узлов в составляющие) должны иметь минимальное количество точек сгиба (в идеале 0), но также должно быть минимальное количество пересечений, перезаписывая прежнее требование, если это необходимо.
Неиерархические ребра (используемые для зависимостей) должны иметь минимальное количество пересечений и быть нарисованы в виде кривых Безье.
Следующая лучшая вещь, с которой я столкнулся, - это алгоритм, описанный Buchheim et al. , улучшая алгоритм Уокера для запуска в линейное время.
Пожалуйста, дайте мне знать, если возникнет необходимость улучшить мой вопрос, и большое спасибо заранее за любые ссылки.
РЕДАКТИРОВАТЬ:
Как отмечено в комментарии, я должен упомянуть, что я в основном хочу макет графика по умолчанию с помощью алгоритма, который я - в конечном счете - хочу редактировать и пересматривать в рамках возможностей Eclipse GEF . Ранее я рассматривал варианты, чтобы заставить Graphviz работать с GEF, но, похоже, не существует рабочего решения, которое сохранило бы все функциональные возможности редактирования, унаследованные от GEF.