Pull to refresh
-1
0
Рита Ибрагимова @Xao

developer

Send message

Путь лапласиана. Часть 2

Reading time8 min
Views17K
А не замахнуться ли нам на Эдсгера нашего Дейкстру?



В первой части мы описали способ ранжирования симметрично связанных объектов (узлов неориентированного графа) относительно заданного направления. Для каждого объекта (узла) вычисляется потенциал (лапласиана), который определяет его положение относительно заданных источника и цели. В данной статье мы покажем, как потенциалы упрощают задачу поиска кратчайших путей (оптимальных маршрутов). А также как меняются сами потенциалы при изменении внешних условий.

В общем случае минимизируемая величина — это необязательно расстояние, — весами ребер графа могут быть стоимости, штрафы, убытки, времена, — любые величины, которые можно складывать. Задача является классической, наиболее простой алгоритм поиска кратчайшего пути дал Э. Дейкстра в 1959 году.
Далее...
Total votes 21: ↑18 and ↓3+15
Comments0

Пути и графы

Level of difficultyMedium
Reading time14 min
Views5.7K

На практике часто необходимо при заданных условиях и ограниченных ресурсах для построения сети выбирать из потенциально возможных структур лучшую в некотором смысле, например, устойчивую к неисправностям (отказам) связей между узлами (каналов) транспортной сети, сети связи, сетей нефте- и газопроводных и многих других. Предлагается рассматривать ряд задач поиска оптимального решения в рамках числовых примеров. Актуальность проблемы несомненна, даже наше городское жилье охвачено большим числом обеспечивающих жизненные удобства и комфорт сетями различного назначения: электрическими, снабжения холодной и горячей водой, газопроводной, теплоснабжения, телевизионной, радиотрансляционной, интернетом, канализацией, мусоропроводом, охранного видеонаблюдения и др.

Исключительную важность имеет задача о возможных путях передачи в структуре материи, энергии или информации. Анализу следует подвергать не столько решения задачи о всех существующих путях, сколько решения задачи перечисления всех возможных путей в моделях не пропуская ни одного.

Читать далее
Total votes 3: ↑2 and ↓1+1
Comments6

Трансформером по A*, или как уменьшить число итераций самого известного алгоритма поиска пути

Level of difficultyMedium
Reading time24 min
Views7.4K

Привет! Меня зовут Константин Яковлев, я научный работник и вот уже более 15 лет я занимаюсь методами планирования траектории. Часто эта задача сводится к поиску пути на графе, для чего обычно используется алгоритм эвристического поиска A*. Этот алгоритм был предложен в 60-х годах XX века и с тех пор используется повсеместно. Скорее всего, юнит вашей любимой RTS бежит по карте с помощью той или иной вариации A*. Точно так же, под капотом беспилотного авто вы, наверняка, найдёте A*, хотя там, конечно, не только он.

A* — это хороший алгоритм, но его вычислительная эффективность сильно зависит от эвристической функции, которую должен задать разработчик. Основная проблема стандартных эвристик заключается в том, что они не учитывают расположение препятствий на карте и ведут поиск буквально напролом, тратя на это ресурсы (итерации поиска). Почему бы нам не воспользоваться современными нейросетями для решения этой проблемы, а именно попросить нейросеть посмотреть на карту и подсказать поиску как лучше обходить препятствия, чтобы быстрее (за меньшее число итераций) найти нужный путь?

Этот текст посвящен как самому алгоритму A*, так и попыткам повысить его эффективность с помощью методов искусственного интеллекта. Заодно я расскажу о том, какие новшества в этом направлении придумали мы с коллегами: научная статья на эту тему опубликована в сборнике конференции AAAI 2023.

Читать далее
Total votes 34: ↑34 and ↓0+34
Comments35

Реализация алгоритма Минимакс на примере игры «Крестики-Нолики»

Reading time7 min
Views30K
Недавно я написал непобедимую игру «Крестики-Нолики». Это был интересный и поучительный проект, который многому меня научил. Если у вас есть желание посмотреть результат — это можно сделать здесь.

image

Для того чтобы сделать игру непобедимой, было необходимо создать алгоритм, который может рассчитать все возможные ходы для «компьютерного» игрока. Далее, нужно использовать некоторую метрику, чтобы определить, какой ход является предпочтительным. После долгих исследований стало понятно, что алгоритм Минимакс, был тем, что мне нужно.

Понимание основ алгоритма и реализация игры заняли некоторое время. Я нашел много примеров кода и объяснений, тем не менее это оказалось не такой уж простой затеей. Надеюсь этот пост поможет некоторым из читателей оценить элегантность этого алгоритма.

Читать дальше →
Total votes 9: ↑8 and ↓1+7
Comments6

Шаг за шагом: разработка 3D-игры в Godot 4.2 для начинающих

Reading time7 min
Views5.9K

И снова привет, Хабр! В прошлой статье я рассказал, как создавать 2D-игры на движке Godot. По вашим запросам — добавляем измерение и переходим в мир 3D. На этот раз мы погрузимся в трехмерные объекты и элементы анимирования. Подробности под катом!
Читать дальше →
Total votes 38: ↑42.5 and ↓-4.5+47
Comments10

Кто входит в команду разработки игр?

Level of difficultyEasy
Reading time4 min
Views3.2K

В этой статье я расскажу про тех людей или те профессии, которые участвуют в предпродакшене, продакшене и постпродакшене. Понятно, что все зависит от целей и возможностей. Для хакатона будет достаточно программиста, дизайнера и чувака, который делает всё. Для создания GTA 6 потребуются десятки тысяч сотрудников - от уборщиц до инвесторов. Да, уборщицы тоже влияют на процесс разработки и вообще на процесс работы. Вы даже можете почувствовать это на себе. Когда вы приходите в чистый, свежий кабинет, вам намного комфортнее (я молчу, если вы работаете на не любой работе, это другое). Так вот. Я расскажу, какие есть роли и обязанности у каждого участника разработки игр. А выбирать, кто будет входить в вашу команду, решать только вам.

Читать далее
Total votes 5: ↑6 and ↓-1+7
Comments4

Век поиска кратчайшего решения задачи о кратчайшем пути

Level of difficultyMedium
Reading time22 min
Views7.2K

TL;DR Очень подробный разбор алгоритмов решения задачи о кратчайшем пути от классики до двунаправленного А* и ALT с кодом и примерами на OSM

Люди пытались найти более быстрые способы передвижения на протяжении всей своей истории. Появление качественной дорожной системы в римской империи в своё время привело к её расцвету, но со временем выяснилось, что и в продуманных дорожных системах бывают забавные изъяны, как например в небезызвестной задаче о кёнигсбергских мостах, считающейся отправной точкой возникновения теории графов. Неудивительно и то, что с развитием вычислительной техники логистические задачи стали одними из первых, над которыми трудились первопроходцы компьютерных наук. Задача о кратчайшем пути -- одна из них, звучит достаточно просто: есть несколько городов и дорог, соединяющих пару городов между собой, мы хотим попасть из города А в город Б пройдя при этом минимальное расстояние. Первый системный подход к этой задаче был описан в работе Эгервари в 1931г., спустя 25 лет Эдсгер Дейкстра придумал алгоритм, который сейчас является частью любого уважающего себя базового курса алгоритмов на графах. На нём же, будем честны, заканчиваются знания о кратчайших путях у большинства профессиональных разработчиков, ибо сценариев, где реализации с википедии/stackoverflow будет не хватать, крайне мало.

Может показаться, что на самом деле просто не было существенного прогресса с 60х годов, так как Дейкстра предоставил почти асимптотически оптимальный алгоритм решения задачи. На самом деле нет, прогресс был и придумали много чего интересного, хоть и действительно с того времени фокус сместился на другие задачи. Приглашаю под кат если интересно узнать что такого напридумывали, что используется в современных логистических системах, почему меня огорчает отсутствие учёта флага единства в HOMM3 при расчёте пути, ну и наконец, что за мужики на картинке выше рядом с Дейкстрой?

Читать далее
Total votes 33: ↑34.5 and ↓-1.5+36
Comments14

Записываем музыку при помощи CSS Grid

Level of difficultyMedium
Reading time8 min
Views4.5K
Слишком часто я наблюдал за тем, как импровизирующий музыкант трясущимися руками пытается увеличить pdf размером A4 на крошечном экране телефона в самом разгаре исполнения. Мы обязаны создать плавный и отзывчивый рендеринг музыки для веба!

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

Прототип Scribe


SVG, отрендеренный Scribe 0.2

Несколько лет назад я создал прототип рендерера музыки, который назвал Scribe. Он выполняет преобразование JSON в SVG. Изначально я стремился к созданию адаптивного рендерера музыки. Это было хорошее демо, но для дальнейшего развития пришлось бы писать сложный многопроходный движок генерации макетов, а у меня тогда возникли другие дела.

Вскоре после этого я занялся адаптированием Grid под проекты компании, и тут мне почудилось нечто знакомое: я задался вопросом, а не станет ли он решением некоторых проблем, с которыми я столкнулся при разработке Scribe?
Читать дальше →
Total votes 39: ↑46 and ↓-7+53
Comments9

Как я закрыл свой бизнес по выращиванию клубники, или что бывает, если закопать 5 млн в землю

Level of difficultyEasy
Reading time10 min
Views36K

В 2018-м я собрал 1 тонну клубники, и заработал на этом 150 000 ₽, это неприятно за 5 мес. тяжелого труда агробизнесмена. Поэтому в 2019-м я решил, что если заниматься сельским хозяйством, то заниматься по-взрослому. По моим расчетам, с 18 000 саженцев клубники можно заработать 11 млн ₽ за 3 года. В статье я расскажу, что из этого вышло.

Читать далее
Total votes 109: ↑100 and ↓9+91
Comments161

«Строка бога»/идеальный промт, часть 2, продолжение истории

Level of difficultyMedium
Reading time4 min
Views1.6K

Здравствуйте, уважаемые читатели!

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

Компания Anthropic, которая разработала семейство больших языковых моделей (LLM) Claude представила новый ИИ-инструмент, суть которого заключается в использовании уже готовых, универсальных, оптимизированных текстовых запросов по соответствующим темам, что позволяет повысить скорость и эффективность работы с нейросетевыми ресурсами.

Инструмент и соответствующий раздел веб-сайта Anthropic, на котором он размещен, получили название Prompt Library – Библиотека Запросов – а в качестве подзаголовка представлена фраза Explore optimized prompts for a breadth of business and personal tasks (Осваивайте оптимизированные запросы для решения широкого спектра деловых и личных задач).

Читать далее
Total votes 9: ↑8 and ↓1+7
Comments11

Быть жестким, но не жестоким: как разойтись с сотрудником по хорошему?

Level of difficultyEasy
Reading time5 min
Views16K

Спустя года наблюдений за hr’ами и руководителями в стартапах и корпорациях я нашел достаточный путь к тому, чтобы расставаться с сотрудниками и в большей степени сохранять их лояльность ко мне как к руководителю и не оставлять плохие отзывы о компании.

Читать далее
Total votes 40: ↑33 and ↓7+26
Comments118

Игровые паттерны программирования: Game Loop

Level of difficultyEasy
Reading time19 min
Views3.7K

Это перевод одной из глав книги Game programming patterns Роберта Найстрома. Так как книга по сути состоит из подробного описания шаблонов проектирования, каждая глава может рассматриваться как самостоятельная статья, чем я и воспользовался и перевел, как мне кажется, статью с самым важным паттерном в игростроении — Game loop.

Читать далее
Total votes 8: ↑8.5 and ↓-0.5+9
Comments2

Ехал handler через handler, или почему всё тормозит

Level of difficultyEasy
Reading time5 min
Views7.3K

Прошло уже 10 лет с моего предыдущего разбора, не побоюсь этого слова, говнософта, как появилась очередная проблема, с которой мне захотелось разобраться и устранить её.

К ленивой отладке
Total votes 25: ↑28 and ↓-3+31
Comments6

Как Алексей Пажитнов сделал сиквел Тетриса и забыл про него

Level of difficultyEasy
Reading time6 min
Views18K

Тетрис — одна из самых (если не самая!) известных видеоигр, чьё имя известно даже людям, бесконечно далёким от этой индустрии. Когда в 1989 году «Тетрис» вышел на Nintendo Game Boy, он стал мировым хитом, продавшись миллионами копий и зарекомендовав себя как самая любимая в мире видеоигра-головоломка.

Для старинной видеоигры, которая начиналась как любительский проект компьютерного разработчика из СССР, влияние «Тетриса» по-прежнему сильно, доказательством чему служит огромная база игроков, по сей день пытающихся полностью пройти игру. Его успех также породил желание создать продолжение. Появились побочные продукты: такие как Hatris, Welltris и Wordtris, а также итеративные продолжения, такие как Tetris 2, Tetris DS и Tetris Effect. Но у игры могло бы быть ещё одно продолжение, которое так и не вышло. Сам создатель Тетриса, Алексей Пажитнов, придумал другую, более интеллектуальную версию игры.

На Game Developers Conference (GDC) 2024 Алексей Пажитнов рассказал о своих первоначальных планах по выпуску продолжения «Тетриса» и о том, почему мы только сейчас слышим об этом публично. Это запланированное продолжение, получившее название Tetris Reversed, было призвано изменить способ игры в тетрис. Но сиквел игры уже более десяти лет находится на стадии прототипа.
Читать дальше →
Total votes 24: ↑25 and ↓-1+26
Comments37

Заметки для новичка: Как провести первую ретроспективу и не облажаться?

Level of difficultyEasy
Reading time4 min
Views2.5K

Ретроспектива, как погружение в прошлое, но без машины времени. Представьте себе, вы смотрите назад, чтобы понять, какие кочки на дороге были, а какие пряники вовсе не были сладкими.

Ретроспектива – мероприятие не самое легкое в его организации и тем более введении.
Не каждый опытный Scrum Master, Project manager справится с такой задачей, и я помню себя и свое волнение, когда пришло время проводить ретро в команде впервые.
В данной статье поделюсь своими мыслями, что помогло мне при планировании и проведении ретроспективы, также дам советы по подготовке. Хочу отметить, что я не претендую на звание искусного писателя и специалиста всея ретроспектив, у меня есть опыт и мне хочется верить в то, что он может помочь не только мне.

Читать далее
Total votes 8: ↑6 and ↓2+4
Comments13

Как обойти лимит Telegram API для групп свыше 10,000 участников

Level of difficultyEasy
Reading time3 min
Views4.2K

Здравствуйте! Если вы когда-либо пытались извлечь данные пользователей из крупных телеграм-групп и каналов, вы наверняка знаете о технических сложностях, которые могут возникнуть. В рамках нашего проекта — платформы для спикеров и коучей — мы столкнулись с необходимостью эффективно продвигать курсы, используя рекламу в других группах и каналах. Однако далеко не каждый готов предоставить доступ к своему каналу или группе, особенно если предлагаемые темы курсов перекликаются с их собственными.

Для решения этой задачи наша маркетинговая команда разработала трехуровневую партнёрскую программу. Суть программы заключается в том, что владельцы групп, согласные на сотрудничество, получают уникальный идентификатор в нашей системе. Под этим ID регистрируются все новые пользователи, которые, в случае покупки курсов, генерируют вознаграждение для владельца группы.

Эта инициатива казалась нам многообещающей, однако в процессе реализации мы столкнулись с серьёзным ограничением. При попытке загрузить список пользователей из группы на 13,000 человек, система смогла обработать только 10,000. Это ограничение API Telegram значительно усложнило выполнение задуманного плана, требуя от нас дополнительных технических решений.

Читать далее
Total votes 17: ↑7 and ↓10-3
Comments10

Новый тренд на «Сообщества» или что это такое?

Level of difficultyEasy
Reading time3 min
Views1.1K

Все популярные и крупные компании (X5 Group, Сбер и др.) начинаются интересоваться этим направлением, ведь теперь хочется удержать людей (новое поколение, о котором нужно писать отдельно), а также повышать результаты команды, отдела, компании.

Читать далее
Total votes 12: ↑5.5 and ↓6.5-1
Comments11

Алгоритм деления 2W-разрядных чисел с использованием операций с числами разрядностью W

Level of difficultyMedium
Reading time9 min
Views1.6K

На примере 32-битных целых чисел рассматривается масштабируемый алгоритм деления, использующий числа с двукратно меньшей (16 бит) разрядностью. Для иллюстрации работоспособности алгоритма приведен код тестового приложения на языке С++.

Читать далее
Total votes 12: ↑14.5 and ↓-2.5+17
Comments4

Картографический фотопроект «По местам съёмок фильма «Брат 2»

Level of difficultyEasy
Reading time2 min
Views4.1K

Проект начал делать в 2022 году, параллельно с проектом по первой части фильма. Во второй части многие локации пришлось искать вооружившись Яндекс и Гугл панорамами. Около полугода искал человека, который сделает фото в Чикаго.

С технической точки зрения ничего не поменялось, про нее я рассказал в статье по первой части фильма. Хочу более детально остановиться на поиске и съемке локаций.

Читать далее
Total votes 30: ↑25.5 and ↓4.5+21
Comments8
1
23 ...

Information

Rating
Does not participate
Location
Уфа, Башкортостан(Башкирия), Россия
Date of birth
Registered
Activity