Я шукаю алгоритм для складання змішаного графіка виборчих округів / залежностей (для мовної програми). Такий графік матиме два різні типи вершин (лексеми, вузли) та два різні типи ребер (ієрархічні, неієрархічні).
Я новачок у теорії графіків та алгоритмах загалом, і я сподіваюся, що це питання не стикається, наприклад, з вимогами щодо рівня досліджень цього сайту. Однак вона, як правило, повинна бути в межах сфери теорії .
Графік повинен бути намальований знизу вгору (я думаю), оскільки всі лексеми повинні відображатися з однаковою y-координатою, а y-координати вузлів, що групують лексеми та / або вузли в складові, повинні бути розраховані динамічно, наприклад, через їх найдовший шлях до маркера.
Ієрархічні ребра (використовуються для групування жетонів / вузлів у складові) повинні мати мінімальну кількість точок згину (в ідеалі 0), але також має бути мінімальна кількість перетинів, замінюючи попередню вимогу, якщо це необхідно.
Неієрархічні ребра (використовуються для залежностей) повинні мати мінімальну кількість перетинів і бути намальованими як криві Безьє.
Наступне найкраще, що я натрапив - це алгоритм, описаний Buchheim et al. , вдосконалюючи алгоритм Walker для запуску в лінійний час.
Будь ласка, дайте мені знати, чи є потреба в покращенні мого питання, і заздалегідь дякую за будь-які вказівки.
Редагувати:
Як зазначалося в коментарі, я мушу зазначити, що я в основному хочу розташувати графік за замовчуванням за алгоритмом, який я - в перспективі - хочу редагувати та переглянути в межах можливостей GEF Eclipse . Раніше я розглядав варіанти змусити Graphviz працювати з GEF, але, здається, не існує жодного робочого рішення, яке б зберігало всю функціональність редагування, успадковану від GEF.