Мне было интересно, можете ли вы использовать симуляцию Barnes-Hut помимо того, для чего она изначально предназначалась. Для многих алгоритмов Барнса-Хата силы учитываются только для одного квадранта, центроида или звездного тела. Затем алгоритм разветвляется оттуда, рекурсивно затрагивая области влияния и квадранты. Например:
Похоже, что приведенный выше алгоритм Барнса-Хата был основан на центральном теле из анимации.
Мой вопрос:
Приведет ли итеративное выполнение Барнса-Хата ко всем телам, рассматривая каждое тело по очереди как центр тяжести, к точному представлению задачи n тел, где рассматривается сумма сил гравитации всех тел? Или я неправильно понимаю, что такое алгоритм Барнса-Хата?
Если я неправильно понимаю алгоритм, может ли кто-нибудь объяснить, как именно работает этот алгоритм? Для тех, кто в какой-то степени понимает программирование, может ли кто-нибудь взглянуть на этот проект и сказать мне, не упускаю ли я здесь что-то важное? Это реализация алгоритма Barnes-Hut на Java GitHub , но я повторил его во всех телах (что может быть невероятно глупо). Также... да, я знаю, что время работает не так. Примечание. Кредит принадлежит оригинальному профессору, как указано на GitHub.
Кроме того, для тех, кто не разбирается в технологиях, можете ли вы посмотреть на этот GIF и увидеть что-то изначально неправильное? Красный меньше массы, белый больше массы; желтые - две или более столкнувшихся масс. Как только появляется третья желтая точка (объединенная масса), все становится интереснее. Я не могу сказать, интересно ли это хорошо, или интересно... плохо.
Достаточно хорошо известно, что на достаточно больших расстояниях сила между скоплением объектов и другим объектом по существу эквивалентна силе между центром масс скопления и другим объектом:
Алгоритм Барнса-Хата применяет это к симуляции тел путем разбиения области на кластеры разумного размера и, таким образом, уменьшения количества эффективных тел для повторения, а не суммирования частицы раз. Из того, что я вижу/рассказываю, Моделирование -тела с использованием алгоритма BH достаточно точно, хотя есть алгоритмы и лучше с точки зрения скорости (например, метод быстрого мультиполя или другие гибридные схемы).
Приведет ли итеративное выполнение Барнса-Хата ко всем телам, рассматривая каждое тело по очереди как центр тяжести, к точному представлению задачи n тел, где рассматривается сумма сил гравитации всех тел? Или я неправильно понимаю, что такое алгоритм Барнса-Хата?
Ваше предложение, по сути, хочет вернуться к суммированию частицы раз, что было бы равносильно полному отказу от использования BH. Это будет точно, хотя, вероятно, не намного точнее, чем BH, и, безусловно, будет очень медленным.
Поэтому, задаваясь вопросом, можно ли итеративно применить BH ко всем телам, я подозреваю, что вы неправильно понимаете алгоритм BH. Весь смысл этого в том, чтобы уменьшить рабочую нагрузку, необходимую для нахождения сил, действующих на частицы на каждом временном шаге. Вы действительно не хотите увеличивать количество кластеров, вы хотите, чтобы это было сведено к минимуму, потому что выполнение обновлять каждый шаг времени очень, очень медленно.
Волшебная урна с осьминогом
Кайл Канос
Волшебная урна с осьминогом
Кайл Канос
Кайл Канос
Волшебная урна с осьминогом
O(n^2log(n))
также хорошо, верно?O(n)
хO(nlog(n))
?Волшебная урна с осьминогом
O(nlog(n))
потому что задачи для каждого тела могут выполняться параллельно. Конечно, у этого есть верхний предел того, насколько высокоn
может подняться в зависимости от архитектуры. Меня просто считали, верна ли физика и логика взаимодействия частиц с учетом итерационного метода.Кайл Канос
Волшебная урна с осьминогом
N
и решить настоящие проблемы с n телами - с точки зрения временной сложности и точности? Было бы упущением, если бы я не спросил вас об альтернативных алгоритмах, о которых вы знаете, вы, кажется, достаточно хорошо информированы, и это первый физический алгоритм, с которым я честно столкнулся в каком-либо качестве. Спасибо, что уделили время :).