Обновить
221.19

Алгоритмы *

Все об алгоритмах

Сначала показывать
Порог рейтинга
Уровень сложности

Как получил оффер от Microsoft

Время на прочтение6 мин
Количество просмотров54K

О чем эта статья

Это продолжение моих похождений по ФААНГ. Предыдущая статья была о моем опыте собеседования в Амазоне.

Здесь я тоже поделюсь всем процессом: как я попал на собеседование, все этапы, вопросы на интервью, как я готовился, некоторые детали офера, и общее впечатление от интервью. Так же будут всякие сравнения опыта собеседования в Майкрософте и в Амазоне.

К слову, все собеседования тоже сейчас проходят онлайн, и никаких онсайт интервью нет.

Читать далее

Что такое «Action Recognition»?

Время на прочтение11 мин
Количество просмотров10K

Год назад моя статья про трекинг была тепло принята на Хабре. Эта статья в каком-то смысле продолжение. В ней я сделал обзор современных методов распознавания действий. От самых простых до самых сложных. Расскажу в каких ситуациях что использовать, и расскажу как это применяют в некоторых проектах.

Вперед!

Искусственный интеллект? Или не совсем искусcтвенный?

Время на прочтение4 мин
Количество просмотров7.8K

Для того, чтобы создать искусственный интеллект, нужно определиться, мы хотим создать полный аналог человеческого интеллекта? Или всего лишь самообучающуюся систему?

Читать далее

Парсинг Pubmed на противораковые натуральные вещества

Время на прочтение5 мин
Количество просмотров2.5K

В этой статье будет расчет натуральных веществ распарсенных с базы биомедицинских публикаций Pubmed.

Для этого будет подключены библиотеки BioPython.

Читать далее

Как создавать уникальные лабиринты

Время на прочтение11 мин
Количество просмотров18K

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

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

HALF: целостное автоматическое машинное обучение для ПЛИС

Время на прочтение17 мин
Количество просмотров4.4K

Глубокие нейронные сети (DNN) способны решать сложные задачи в областях, связанных со встроенными системами, таких как обработка изображений и естественного языка. Чтобы эффективно реализовать DNN на конкретной платформе ПЛИС для заданного критерия стоимости, например, энергоэффективности, необходимо учитывать огромное количество параметров проектирования, начиная с топологии и заканчивая конечной аппаратной реализацией. Необходимо учитывать и эффективно исследовать взаимозависимости между различными уровнями проектирования, что делает поиск оптимизированных решений вручную едва ли возможным.

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

Читать далее

Схематичное отображение машин на маршруте

Время на прочтение9 мин
Количество просмотров3.3K

Алгоритм для отображения интервалов общественного транспорта

Всем привет. Меня зовут Олег Иванов, я занимаюсь Android-разработкой в “Рексофт”. Сегодня я расскажу вам о такой нетривиальной задаче как отрисовка машин общественного транспорта на схеме маршрута. На первый взгляд, может показаться, что задача простая, но там есть свои особенности. Давайте разбираться постепенно от простого к сложному. 

В чём заключалась задача? Есть определённая группа машин, которая ездит всю смену по одному маршруту. Таких маршрутов может быть довольно много. Диспетчер должен видеть, на каком участке маршрута находится каждая из машин. Также нужно понимать, сколько машин находится на конечных остановках и сколько всего машин на маршруте. В течение дня часть автомобилей может уходить с линии, а после - возвращаться. Например, водитель ушёл на обед, его машина сломалась или попала в ДТП. Также водителям и диспетчерам необходимо рассчитывать и поддерживать интервал движения, об этом также будет рассказано в статье.

Основные понятия

Если абстрагироваться, то маршрут представляет из себя замкнутую линию, на которой есть начальная и конечная точки.

Читать далее

Способы представления аудио в ML

Время на прочтение5 мин
Количество просмотров9.1K

В статье рассмотрены основные формы представления аудио для дальнейшего использования в различных сферах обработки данных.

Читать далее

Ещё одно решение игры Wordle на Python

Время на прочтение6 мин
Количество просмотров12K

В начале 2022 года мир захватила головоломка Wordle и почти сразу стали появляться варианты решения. На Хабре уже появилось описания двух вариантов решения, но они мне не понравились, поэтому я изобретаю свой собственный велосипед. Ссылки на предыдущие решатели:

1) https://habr.com/ru/company/skillfactory/blog/645653/ -- перевод решателя от Mickey Petersen, написано на идеальном Питоне, использует статистический анализ букв английского алфавита и вполне успешно справляется с задачей.

2) https://habr.com/ru/post/647391/ -- перевод решателя от Tom Lockwood, который решает англоязычную игру в 99,4% случаев. Автор исследовал внутренности игры и постарался максимально использовать полученную информацию о возможных загаданных словах и возможных вводимых словах, но по итогу всё сводится к статистическому анализу. Возможно, в будущем я воспользуюсь извлечённой из игры информацией для улучшения своего алгоритма.

Читать далее

Мой босс — робот. Все, что нужно знать о найме “цифровых работников”

Время на прочтение7 мин
Количество просмотров3.4K

Долгое время я руковожу развитием и разработкой платформой ТУРБО Х (направление бизнеса “Консист Бизнес Групп”), позволяющей автоматизировать многие процессы. Но в этом тексте я хочу поразмышлять о другом - о недавно возникшем феномене “цифровых сотрудников”. Они могут иметь навыки, отличающиеся от наших, и быть «натренированы» для выполнения различных задач. Цифровых сотрудников можно “вырастить” самим, а можно нанять в аутсорсинг. Об особенностях их найма, оценки эффективности и причинах возникновения, рассказываю ниже. 

Читать далее

Алгоритм Дейкстры. Разбор Задач

Время на прочтение7 мин
Количество просмотров80K


Поиск оптимального пути в графе. Такая задача встречается довольно часто и в повседневной жизни, и в мире технологий. Справиться с такими вызовами помогает подход, который должен быть в арсенале каждого программиста — алгоритм Дейкстры.

Если вы хотите найти ответить на вопросы, чем этот алгоритм лучше BFS (поиска в ширину), при каких условиях алгоритм применим, и какие теоретические и практические задачи можно с его помощью решать, читайте далее.

Читать дальше →

Решаем Wordle с 3,64 попыток в 99,4% случаев

Время на прочтение3 мин
Количество просмотров9.3K

Недавно я играл в головоломку Wordle, параллельно думая, как бы её могла решать программа.

[Прим. пер.: Wordle — игра в отгадывание слов, напоминающая «быки и коровы». Правила достаточно ясны по скриншоту выше.]

Первым делом я извлёк списки слов с сайта Wordle. Любопытно, что существует «целевой» список из 2315 слов, которые могут быть ответами, но и дополнительный список из 10657 возможных догадок — вариантов, которые могут вводить пользователи, но которые никогда не будут ответом. Если вам нужны эти списки, то в репозитории ниже есть пара set в формате Python.

Первым делом я подумал, что для управления моей стратегией угадываний стоит использовать частотность букв английского языка. Однако потом я осознал, что есть способ получше: использовать частотность букв в целевом списке! Ведь это самое важное? Никаких мне etaoin shrdlu!
Читать дальше →

Реализация алгоритма Краскала на С#

Время на прочтение6 мин
Количество просмотров15K

В данной статье для реализации алгоритма будут рассмотрены:

1. Система хранения графа на основе List<>

2. Сортировка рёбер графа по весу

3. Система непересекающихся множеств

На просторах интернета есть множество ресурсов, посвященных данному алгоритму, однако все варианты реализации, встреченные мной, показались слишком сложными для понимания и использования. Хочу предложить более приближенный к реальности вариант.

План действий

1. Сортируем имеющиеся рёбра по весу.

2. Создаём новое множество и добавляем в него первое ребро.

3. Затем пытаемся добавить каждое новое ребро в имеющееся множество, если возникает цикл - пропускаем.

4. Итоговое множество рёбер и есть искомое минимальное остовное дерево.

По сути, это и есть формулировка алгоритма Краскала. Звучит совсем просто.

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

Но для начала давайте рассмотрим систему хранения графа в программе.

Читать полностью

Ближайшие события

Создавая непредсказуемость. Примеры использования генераторов случайных чисел

Время на прочтение8 мин
Количество просмотров7.5K

Привет, Хаброжители! У нас вовсю продолжается распродажа «Старый Новый год»

Кто пытается арифметическими методами генерировать случайные числа, тот, конечно, живет во грехе. Поскольку, как указывалось уже неоднократно, нет такого феномена, как случайное число  —  есть только методы для получения случайных чисел. – Джон фон Нейман

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

Читать далее

Мой опыт собеседования в Amazon

Время на прочтение6 мин
Количество просмотров64K

О чём эта статья

Это не история успеха, потому что в Амазон меня не взяли, но и не история полного лузера, который бомбит из-за своей тупости, ибо позже я прошел в Майкрософт, о чем будет отдельный пост. 

Это история о моем опыте собеседования в Амазоне, почему мне в целом не понравилось по сравнению с другими FAANG. Так же тут будут ответы на “а что конкретно спрашивали на интервью, какие были задачки, что на систем дизайне было”, потому что мне не дали подписать NDA, все с пруфами, скринами и прочее.

В общем и целом, статья будет о моем опыте, какие были интервью, что было сложного, что не очень, как я готовился, и какая доля везения в этом всем.

Начало, предложение от Amazon

В один прекрасный день 6 сентября, мне пришел такой сообщение в Линкедин.

Читать далее

Градиенты в нейронных сетях для поиска аномалий в данных

Время на прочтение9 мин
Количество просмотров6.3K

В основе машинного обучения лежит предположение, что данные для обучения, тестирования и применения взяты из одного и того же распределения. К сожалению, в процессе применения модели это предположение может нарушаться, что приводит к необъяснимым последствиям — сдвигу распределения. Особенно такие нарушения опасны в областях, где требуется быстро и точно принимать решения: медицина, финансы, self-driving cars. 

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

Меня зовут Глеб Енгалыч, я аспирант Питерской Вышки первого года обучения. В этом посте я расскажу о своей магистерской диссертации «Анализ градиента нейронной сети для поиска аномалий в данных», которую сейчас активно дорабатываю для подачи на конференцию ICML-2022.

Читать далее

Оптимизация генплана. Какая математика под капотом?

Время на прочтение11 мин
Количество просмотров4.1K

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

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

Меня зовут Фёдор. В «Цифровом проектировании» я придумываю и разрабатываю различные алгоритмы, которые помогают оптимизировать генеральные планы. В этом тексте я расскажу про математические задачи, с которыми мы сталкиваемся при проектировании генеральных планов, как мы декомпозируем задачу, почему делаем это именно таким образом и какие у нас дальнейшие планы. 

Читать далее

Роль алертов в инфообмене с маркетплейсом

Время на прочтение4 мин
Количество просмотров732

Ошибки, как ни старайся их избежать — спутник любого инфообмена. Человек может опечататься, канал — разорваться, сервис — зависнуть. А значит, очень важно узнавать об ошибках первым и вовремя их устранять. Всем привет, меня зовут Антон Баташов, я руководитель отдела интеграции и технической поддержки в компании XWAY, и в этой статье мы поговорим об алертах: зачем они нужны, какие бывают и как с их помощью настроить полноценный мониторинг инфообмена с маркетплейсом. 

Читать далее

Адаптивное свойство одной строкой

Время на прочтение6 мин
Количество просмотров4K

Задача. Описать изменение значения CSS-свойства как функцию от ширины вьюпорта без использования медиа-запросов. Результатом работы миксина должна быть единственная строка вида <свойство>: <функция от ширины вьюпорта >. В качестве входных данных имеются заданные (табулированные) точки (ширина вьюпорта, значение свойства). Поведение CSS-свойства от точки к точке аппроксимируется прямой линией.

В сети достаточно много разных способов решений для частных случаев (см., например, https://habr.com/ru/post/501392/). Здесь же предлагается общее решение задачи.

Читать далее

Сравнение матричной факторизации с трансформерами на наборе данных MovieLens с применением библиотеки pytorch-acceleratd

Время на прочтение45 мин
Количество просмотров8.2K

Современный человек много чем занимается в интернете: ходит по магазинам, слушает музыку, читает новости. Все эти задачи подразумевают поиск и выбор того, что ему нужно. При этом важную роль тут играют рекомендательные системы. Они помогают людям не утонуть в многообразии вариантов и увидеть именно то, что им подойдёт, то, что иначе им сложно было бы найти. Предоставление пользователям качественных рекомендаций — это важнейшая часть обеспечения первоклассного уровня удовлетворения клиента. Это — один из самых эффективных способов взращивания лояльности клиентов и повышения ценности продукта или услуги в их глазах. Всё это так важно, что целые бизнес-модели некоторых компаний построены вокруг предоставления их клиентам наилучших рекомендаций, что делает рекомендательные системы важнейшими факторами, влияющими на прибыль подобных компаний! В результате неудивительно то, что клиенты проекта Microsoft CSE часто обращаются к нам с просьбами, касающимися реализации эталонных рекомендательных техник. Один из таких проектов был моим первым опытом в данной сфере.

Читать далее

Вклад авторов