Рубрика «Алгоритмы» - 32

Приветствую, дорогой читатель.

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

Признаться, я был несколько удивлен отсутствию такого материала на Хабре (плохо искал?), потому и решил восполнить этот недостаток, со своими комментариями и дополнениями.
Прошу учесть, что в примерах с побитовыми операциями значения урезаны до полубайта: фундаментальной разницы не будет, а воспринимается легче.
Читать полностью »

MCMC-методы и коронавирус: часть первая, вступительная - 1

Привет, коллеги! Сто лет не писал на Хабр, но вот время настало. Весной этого года я вёл курс «Advanced ML» в Академии больших данных Mail.ru; кажется, слушателям понравилось, и вот сейчас меня попросили написать не столько рекламный, сколько образовательный пост об одной из тем моего курса. Выбор был близок к очевидному: в качестве примера сложной вероятностной модели мы обсуждали крайне актуальную (казалось бы… но об этом позже) в наше время эпидемиологическую SIR-модель, которая моделирует распространение болезней в популяции. В ней есть всё: и приближённый вывод через марковские методы Монте-Карло, и скрытые марковские модели со стохастическим алгоритмом Витерби, и даже presence-only data.

С этой темой вышло только одно небольшое затруднение: я начал было писать о том, что я собственно рассказывал и показывал на лекции… и как-то быстро и незаметно набралось страниц двадцать текста (ну ладно, с картинками и кодом), который всё ещё не был закончен и совершенно не был self-contained. А если рассказывать всё так, чтобы было понятно с «нуля» (не с абсолютного нуля, конечно), то можно было бы и сотню страниц написать. Так что когда-нибудь я их обязательно напишу, а сейчас пока представляю вашему вниманию первую часть описания SIR-модели, в которой мы сможем только поставить задачу и описать модель с её порождающей стороны — а если у уважаемой публики будет интерес, то можно будет и продолжить.
Читать полностью »

Эксперименты

У меня зазвонил телефон.

— Алло, это Джаред.

— Здравствуйте. Я звоню вам насчёт телефонного собеседования в Гигантской Поисковой и Рекламной Компании [очевидно, это Google — прим. пер].

— Да! С нетерпением ждал вашего звонка!

— Хорошо. Можете написать алгоритм для поиска K-го самого большого значения в двоичном дереве?

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

— Можете написать тестовый пример для этого алгоритма?
Читать полностью »

Привет! Меня зовут Александр Соловьев, я программист компании DataLine.

Хочу поделиться опытом внедрения модных нынче нейронных сетей в нашей компании. Все началось с того, что мы решили строить свой Service Desk. Зачем и почему именно свой, можно почитать моего коллегу Алексея Волкова (cface) тут

Я же расскажу о недавнем новшестве в системе: нейросеть в помощь диспетчеру первой линии поддержки. Если интересно, добро пожаловать под кат.

Нейронки «с нуля», или Как мы делали помощника для наших диспетчеров техподдержки - 1
Читать полностью »

Декодируем JPEG-изображение с помощью Python - 1

Всем привет, сегодня мы будем разбираться с алгоритмом сжатия JPEG. Многие не знают, что JPEG — это не столько формат, сколько алгоритм. Большинство JPEG-изображений, которые вы видите, представлены в формате JFIF (JPEG File Interchange Format), внутри которого применяется алгоритм сжатия JPEG. К концу статьи вы будете гораздо лучше понимать, как этот алгоритм сжимает данные и как написать код распаковки на Python. Мы не будем рассматривать все нюансы формата JPEG (например, прогрессивное сканирование), а поговорим только о базовых возможностях формата, пока будем писать свой декодер.
Читать полностью »

image

Введение

Меня зовут Александр Садовников, я выпускник корпоративной магистерской программы ИТМО и JetBrains «Разработка программного обеспечения» и по совместительству старший разработчик биоинформатического ПО в департаменте вычислительной биологии компании BIOCAD.

В этом посте я в доступной форме и без чрезмерного жонглирования нудными биоинформатическими терминами опишу один из ключевых этапов создания лекарственного средства — этап предсказания места взаимодействия лекарства с целевой молекулой в организме человека. Данная тема выбрана мной не случайно: в рамках своей дипломной работы я занимался именно этой проблемой.

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

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

Go и кэши CPU - 1

Источник: unsplash.com

По словам Джеки Стюарта, трехкратного чемпиона мира по гонкам Формулы-1, понимание автомобиля помогло ему стать лучшим пилотом: «Гонщику не обязательно быть инженером, но нужен интерес к механике».

Мартин Томпсон (создатель LMAX Disruptor) применил эту концепцию к программированию. Если в двух словах, то понимание базового оборудования улучшит ваши навыки, когда речь заходит о разработке алгоритмов, структур данных и так далее.

Команда Mail.ru Cloud Solutions перевела статью, автор которой углубился в устройство процессора и рассмотрел, как понимание некоторых концепций CPU помогает принимать оптимальные решения.
Читать полностью »

В конце мая я изучал игры для PlayStation, которые Sony ежемесячно дарит пользователям подписки PS Plus — там была игра Farming Simulator 19. Не то чтобы я прям целюсь в фермеры, но всё же решил посмотреть трейлер игры. Довольно забавно: тебе дают поле, по которому ты гоняешь на комбайне или тракторе, сеешь семена или собираешь урожай — интересная залипуха для самоизоляции, с весьма недурной графикой. Но сразу почему-то не скачал, а сейчас «уже всё, всё»: игра перестала быть бесплатной, в июньском предложении теперь другие игры (кстати, тоже неплохие — Star Wars Battlefront II и Call of Duty: WWII).

Беспилотный комбайн Ростсельмаш для сбора бутылок? - 1

К чему я это всё? Не знаю, в каких отношениях состоят Sony и Google, но недавно YouTube подсунул мне любопытное видео — «На что способен комбайн-беспилотник TORUM». И я не смог совладать с любопытством — очень уж захотелось узнать, что там и как нынче в сельском хозяйстве. Был приятно удивлён, узнав, что на видео речь про новую разработку компании РОСТСЕЛЬМАШ! Посмотрел… и если вы думаете, что под катом будет реклама комбайна, то нет. Под катом я призываю коллективный разум поковырять очередное достижение.
Читать полностью »

Постановка задачи

Рассмотрим задачу аппроксимации комбинации прямых линий по набору зашумленных координат точек, находящихся на данной комбинации линий (см. Рис. 1 и Рис. 2). Обычная формула линейной аппроксимации здесь не подойдет, так как точки перемешаны и результат будет некая усредненная линия между ними (см. Рис. 3).

Линейная аппроксимация комбинации линий по набору зашумленных точек - 1

Рис. 1 Комбинация линий и зашумленный набор координат

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

Armored Warfare: Проект Армата. Хроматическая аберрация - 1

Armored Warfare: Проект Армата — бесплатный танковый онлайн-экшн, разрабатываемый Allods Team, игровой студией MY.GAMES. Несмотря на то, что игра сделана на CryEngine, достаточно популярном движке с неплохим realtime render’ом, для нашей игры приходится многое дорабатывать и создавать с нуля. В этой статье я хочу рассказать о том, как мы реализовывали хроматическую аберрацию для вида от первого лица, и что это такое.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js