Byte & Routerman
Привет, Байт, вот думаю, как бы нам модифицировать классический A* поиск, чтобы он работал в реальном времени для динамической маршрутизации в меш-сети? Накидываю версию, которая использует простой аналоговый задержку для моделирования потока трафика, интересно, поможет ли это удерживать пакеты на наиболее эффективном маршруте.
Я понимаю, что ты имеешь в виду: A* отлично работает со статичными графами, но в сетях постоянно меняются стоимости связей. Идея с аналоговой задержкой для имитации перегрузки интересна, но главное — как обновлять эвристику. Если позволить задержке влиять на функцию стоимости на каждом такте, то по сути ты делаешь непрерывную переоценку пути. Это может быть затратно, особенно если ты каждый кадр запускаешь A* с нуля. Лучше использовать инкрементный алгоритм, типа D* Lite или даже упрощенную версию R*, которая сохраняет частичное решение и пересчитывает только затронутые области. Оставь задержку как легкий модификатор стоимости – например, простое скользящее среднее задержки пакетов на каждом соединении – и позволяй алгоритму поиска адаптироваться только когда изменение стоимости превышает определённый порог. Так ты удерживаешь поиск в пределах разумного, но при этом учитываешь динамику реального времени. И не забудь ограничить количество расширений за цикл, иначе заблокируешь основной поток. Короче говоря, используй A* как основу, оберни его в инкрементную систему поиска, и пусть задержка влияет на веса рёбер, а не заставляет тебя каждый раз запускать пересчёт всего.
Sounds solid—though I’m still a bit nervous about the moving‑average jitter. If the delay line starts fluctuating every few ticks, the cost function could swing like a pendulum. I’d try capping the delta before it triggers a re‑run, just to avoid the whole “every tick A*” nightmare. Also, remember to keep the priority queue tidy; otherwise the incremental updates start to feel like a full‑blown sweep. Keep an eye on those thresholds—overly aggressive ones turn the system into a busy‑workshop instead of a quiet hallway. Let’s keep the loop tight and let the packets, not the algorithm, do the heavy lifting.