Вы на правильных линиях.Ваша терминология / физика немного не совпадают: то, что вы называете массой, а «k» вроде как все смешивается с тем, что лучше назвать «зарядом» (для закона обратного квадрата отталкивания) и «пружинной константой» дляЗакон притяжения Гука.
Как отмечается в комментариях к ответам на ваш вопрос, вам действительно необходимо некоторое демпфирование, которое фактически забирает энергию из системы, иначе она будет просто колебаться, превращая потенциальную энергию в кинетическую энергию и обратно навсегда.Хуже того, проблемы точности симуляции могут легко привести к бесконечному увеличению энергии, и симуляция «сходит с ума», если вы не будете осторожны.очень похоже на ваше, но с учетом вышеупомянутых пунктов (хотя обратите внимание, что даже в этом псевдокоде не хватает деления по массе в расчете ускорения; см. обсуждение на странице).
Вам также нужно немного подуматьо начальном распределении, с которого вы начнете моделирование, и о том, насколько вам небезразлична возможность застрять в локальном минимуме, если существует (возможно) гораздо лучший глобальный минимум.Эти пункты связаны между собой;многое зависит от топологии вашего графа.Если это простое дерево, у вас не будет проблем с получением хорошего макета.Если у него много петель и структуры ... удачи.