Электрически заряженные ребра в алгоритме рисования графа на основе силы?

Я пытаюсь написать короткую мини-программу на Python, которая использует алгоритмы, основанные на использовании силы, для рисования графиков.

Я пытаюсь свести к минимуму количество пересечений линий. Википедия предлагает дать линиям электрический заряд, чтобы они отталкивали друг друга. Я спросил мою учительницу физики, как я могу имитировать это, и она упомянула использование исчисления с законом Кулона, но я не знаю, с чего начать.

Может ли кто-нибудь дать мне подсказку о том, как я могу это сделать? (Или, в качестве альтернативы, другой способ настройки алгоритма рисования графиков на основе силы, чтобы минимизировать количество пересечений линий?) Я просто ищу подсказку; нет исходного кода, пожалуйста.

На случай, если кому-то интересно, я сделал мой исходный код и видео с YouTube.

1 ответ

Решение

Вам необходимо явно включить термин в вашу функцию стоимости, которая минимизирует количество пересечений ребер. Например, за каждую пару ребер, которые пересекаются, вы получаете фиксированный штраф или, если ребра взвешены, вы получаете штраф, который является произведением двух весов.

Другие вопросы по тегам