Алгоритм Фрюхтермана-Рейнгольда: различия между версиями

Перейти к навигации Перейти к поиску
нет описания правки
(Новая страница: «Основная статья: Силовые алгоритмы = Постановка задачи = Алгоритм Фрюхтермана-Рейнголь…»)
 
Нет описания правки
Строка 3: Строка 3:
= Постановка задачи =
= Постановка задачи =


Алгоритм Фрюхтермана-Рейнгольда относится к семейству силовых (forced-directed) алгоритмов укладки графов на плоскости, в котором используятся пружинная физическая модель, где вершины графа определяются как тела системы, а ребра как пружины. Силы могут действовать только на вершины, вес пружин при этом не учитывается. Имеется простой неориентированный граф G = (V, E). У каждой вершины из множества V в качестве переменных используются координаты ее размещения Vx и Vy, а также Vf - вектор силы, направленный на приведение физической системы в равновесие.
Алгоритм Фрюхтермана-Рейнгольда относится к семейству силовых (forced-directed) алгоритмов укладки графов на плоскости, в котором используятся пружинная физическая модель, где вершины графа определяются как тела системы, а ребра как пружины. Силы могут действовать только на вершины, вес пружин при этом не учитывается. Имеется простой неориентированный граф <math>G = (V, E)</math>. У каждой вершины из множества V в качестве переменных используются координаты ее размещения <math>Vx</math> и <math>Vy</math>, а также <math>Vf</math> - вектор силы, направленный на приведение физической системы в равновесие.


= Описание алгоритма =
= Описание алгоритма =
Строка 16: Строка 16:
= Описание модели =
= Описание модели =


<math display="block"> l = \sqrt{area/|V|} \text{ - Идеальная длина пружины для ребра e} </math>
<math> l = \sqrt{area/|V|} </math> - Идеальная длина пружины для ребра e  


<math display="block">p_v = (x_v, y_v) \text{ - Вектор положения вершины v}</math>
<math>p_v = (x_v, y_v)</math> - Вектор положения вершины v


<math display="block">||p_v - p_u || \text{ - Евклидовое расстояние между вершинами u и v}</math>
<math>||p_v - p_u || </math> - Евклидовое расстояние между вершинами u и v


<math display="block">\Vec{p_up_v}  \text{ - Направленный вектор из вершины  u в v}</math>
<math> (p_u, p_v) </math> - Евклидовое расстояние между вершинами u и v


Для всех вершин действует сила отталкивания
Для всех вершин действует сила отталкивания


<math display="block">f_{spring} = \frac{{||p_u-p_v||}^2}{l}\Vec{p_vp_u}</math>
<math> f_{spring} = ({{||p_u-p_v||}^2} / {l}) (p_v, p_u) </math>


Для всех смежных вершин действует сила притяжения
Для всех смежных вершин действует сила притяжения


<math display="block">f_{rep} = \frac{l^2}{||p_u-p_v||}\Vec{p_up_v}</math>
<math> f_{rep} = ({l^2} / {||p_u-p_v||}) (p_u, p_v) </math>


= Применение =
= Применение =
20

правок

Навигация