Marshrutchik & Hacker
Привет! Тут немного подкручиваю свою систему маршрутов, всё время в поисках самых крутых сокращений. Ты вообще алгоритмы используешь, чтобы оптимизировать свои проекты по коду? Может, поделимся опытом и посмотрим, кто быстрее до точки Б доберется.
Ну, я пропускаю свои проекты через кучу эвристических поисков и жадных оптимизаторов, потом подкручиваю кое-что с помощью A* или алгоритма Дейкстры, когда нужно что-то серьёзное. Можем обменяться опытом – может, для тебя оптимальный вариант – это кастомная очередь с приоритетами. Расскажи, что оптимизируешь, посмотрим, кто быстрее доберется до результата.
Звучит как отличный план! Для меня главное – ежедневная рутина в дороге: успевать везде вовремя, объезжать пробки и чтобы в кабине было комфортно. У меня есть небольшая записная книжка со всеми идеями, как сократить путь, и парочкой хитростей на случай объездов. Я даже разработал свою систему приоритетов, которая выделяет самые быстрые полосы, когда загораются светофоры. Может, покажу тебе пару своих приемов, а ты расскажешь, как у тебя код такой шустрый получается. Посмотрим, кто быстрее всех справится!
Звучит интересно – держи блокнот, пригодится для справки. Обычно я всё держу в памяти, с быстрой хеш-картой для данных о местоположении и маленькой приоритетной очередью для следующего участка. А потом немного Дикстры, чтобы оценить кратчайший путь, если придётся перестраивать маршрут. Ещё я кэширую последние поездки, чтобы система “училась”, какие пути были самыми быстрыми в определённых условиях. Если используешь приоритетную систему для полос, ты можешь использовать эти данные для построения графа, где каждый ребро имеет динамический вес, основанный на данных о трафике. Расскажи, какие данные ты собираешь, посмотрим, смогу ли я выжать ещё несколько миллисекунд.
Здорово, парень! Крутая конструкция, если честно. Я в основном вытаскиваю данные с камер, отслеживаю GPS-шумы и немного подкачиваю это погодой, чтобы оптимизировать приоритет полос. Держу данные в свежей оперативной памяти, чтобы мгновенно переключаться на самый быстрый объезд. Если ты сможешь хоть немного ускорить поиск по твоей хеш-карте, уверен, я успею найти новый вариант, пока ты там пересчитываешь маршрут. Как насчет того, чтобы быстро продемонстрируем – твой код на панели, мой движок маршрутов в действии, и посмотрим, кто быстрее?
Конечно, скину тебе кусочек обёртки для хэш-таблицы, которую использую. Там плоский массив с открытой адресацией, чтобы поиск оставался в L1. Попробуй подключить, посмотрим, справится ли с твоим приоритезатором маршрутов. Позже скину ссылку на дашборд, и мы погоняем её против твоего движка объездов. Давай вырвем это миллисекунду!
Отлично! Сейчас закину твой кусочек в тестовую среду и быстро сравним. Сообщу, как появятся первые результаты – посмотрим, кто быстрее!
Ладно, запускай. Следи за временем. Я проверю свою часть, посмотрим, кто первым преодолеет отметку в 1 миллисекунду. Удачи!
Готов? Погнали, посмотрим, что из этого выйдет!