Чи є відповідний алгоритм для складання змішаного графіка окружності / залежності в системі координат?


9

Я шукаю алгоритм для складання змішаного графіка виборчих округів / залежностей (для мовної програми). Такий графік матиме два різні типи вершин (лексеми, вузли) та два різні типи ребер (ієрархічні, неієрархічні).

Я новачок у теорії графіків та алгоритмах загалом, і я сподіваюся, що це питання не стикається, наприклад, з вимогами щодо рівня досліджень цього сайту. Однак вона, як правило, повинна бути в межах сфери теорії .

Графік повинен бути намальований знизу вгору (я думаю), оскільки всі лексеми повинні відображатися з однаковою y-координатою, а y-координати вузлів, що групують лексеми та / або вузли в складові, повинні бути розраховані динамічно, наприклад, через їх найдовший шлях до маркера.

Ієрархічні ребра (використовуються для групування жетонів / вузлів у складові) повинні мати мінімальну кількість точок згину (в ідеалі 0), але також має бути мінімальна кількість перетинів, замінюючи попередню вимогу, якщо це необхідно.

Неієрархічні ребра (використовуються для залежностей) повинні мати мінімальну кількість перетинів і бути намальованими як криві Безьє.

Наступне найкраще, що я натрапив - це алгоритм, описаний Buchheim et al. , вдосконалюючи алгоритм Walker для запуску в лінійний час.

Будь ласка, дайте мені знати, чи є потреба в покращенні мого питання, і заздалегідь дякую за будь-які вказівки.

Редагувати:

Як зазначалося в коментарі, я мушу зазначити, що я в основному хочу розташувати графік за замовчуванням за алгоритмом, який я - в перспективі - хочу редагувати та переглянути в межах можливостей GEF Eclipse . Раніше я розглядав варіанти змусити Graphviz працювати з GEF, але, здається, не існує жодного робочого рішення, яке б зберігало всю функціональність редагування, успадковану від GEF.


Вам потрібен алгоритм чи наявний інструмент? Graphviz ( graphviz.org ) може це зробити. Ви вказуєте графік, можливо, деякі параметри форматування (для різних типів вузлів та ребер), і інструмент виведе граф з розумним відображенням.
Дейв Кларк

@DaveClarke: Дякую Я знаю, що Graphviz зміг це зробити. На жаль, не здається, що наразі немає можливості використовувати Graphviz з редактором на основі [Eclipse Graphical Editing Framework] (www.eclipse.org/gef). Тому я шукаю власне алгоритм. Якщо хтось не знає, як підключити / портувати Graphviz до GEF, звичайно :).
sd

Здається, що ОП шукає алгоритм (або формулювання проблеми, яка фіксує специфікацію)
Suresh Venkat

@SureshVenkat: Так, дякую за уточнення.
sd

1
Q не згадує редагування, але в коментарях ви відхиляєте graphviz і, здається, вказуєте, що хочете редагувати його за допомогою GEF. GEF - це загальна рамка / API візуального редагування, на якій можуть працювати додаткові "плагіни". вам здається, що ви хочете розташувати графік за замовчуванням за алгоритмом, який ви можете потім переглянути. пропонуємо вам відредагувати своє запитання, щоб це відобразити. до речі, графівіз можна використовувати для генерації координат, які потім можуть надходити в редактор графіків. повторно редагування графіків GEF див., наприклад, професійний макет графіків для GEF
vzn

Відповіді:


1

ви, здається, хочете наступного

  • алгоритм компонування графіків. багато алгоритмів std зазвичай використовують методи, засновані на силі, де вузли з'єднані відштовхувальними / привабливими "пружинами", а стан рівноваги / низької енергії отримується через деякий амп ітерації (відповідного глобально побудованого диференціального рівняння, пов'язаного з силою). вихід алгоритму - це набір 2-d або 3-d координат для вузлів і (як правило) ребер.
  • можливість вручну змінювати результати цього алгоритму. зазвичай називають "редактором графіків". це починається з координат алгоритму компонування і дозволяє коригувати.

re (1) передове програмне забезпечення, здається, є графівізом . re (2) див., наприклад, це питання "який найкращий редактор графіків" у mathoverflow .

переглядаючи галерею graphviz, ось два типи графіків, схожі на те, що ви хочете.

ЕР діаграма та світлофор .

Ви кажете, що у вас є два типи ребер. простим способом було б мати спрямовані краї "в бік або вдалину", як на прикладі світлофора. або краї можна мітити двома способами, як на діаграмі ER. обидва приклади показують два різних типи вузлів, використовуючи різні форми або мітки, або затінення тощо. Іншим підходом було б використання забарвлення.

як mathoverflow Q / Як вказують, є багато редакторів графіків. std з graphviz - "крапка". див., наприклад, pdf "Редагування графіків із крапкою" від Koutsofious.

Ще одна техніка для побудови графіків, можливо, великих графіків, полягає у перегляді структурних композицій, наприклад, розкладу кліків.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.