Одним из самых ценных ресурсов любой социальной сети является "граф дружб" — именно по связям в этом графе распространяется информация, к пользователям поступает интересный контент, а к авторам контента конструктивный фидбэк. При этом граф является еще и важным источником информации, позволяющим лучше понять пользователя и непрерывно совершенствовать сервис. Однако в тех случаях когда граф разрастается, технически извлекать из него информацию становится все сложнее и сложнее. В данной статье мы поговорим о некоторых трюках, используемых для обработки больших графов в OK.ru.
Рубрика «algorithms» - 3
Ускоряем распределенную обработку больших графов с помощью вероятностных структур данных и не только
2019-08-26 в 13:36, admin, рубрики: algorithms, Apache Spark, big data, data mining, data structures, graphs, Алгоритмы, Блог компании Одноклассники, машинное обучениеВ очередной раз о НОД, алгоритме Евклида и немного об истории алгоритмов вообще. Конечно, с примерами на Swift
2019-08-25 в 16:15, admin, рубрики: algorithms, swift, Алгоритмы, ПрограммированиеАлгоритмы – одна из центральных тем в программировании, они повсюду (особенно на собеседованиях, ха-ха).
(Разве можно обойтись в таком посте без «баяна»?)
Одним из самых известных является так называемый алгоритм Евклида – пожалуй, самый распространенный способ нахождения наибольшего общего делителя (НОД) двух целых неотрицательных чисел. С него также зачастую любят начинать изучение (и обучение) соответствующих разделов математики и информатики.Читать полностью »
Nota: Алгоритм выбора и ротации треков
2019-08-17 в 21:59, admin, рубрики: algorithms, Разработка под android, СофтЭто продолжение предыдущей статьи об умном радио, не умирающем при потере Интернета. Похоже, что первый блин был скорее комом: большинству пользователей приложение не понравилось. Критика в основном разделилась на два фронта:
- Одни и те же треки очень часто повторяются, а новые появляются очень редко.
- Нету возможности ни выбрать любимые жанры, ни минусовать негодные треки, чтобы не приходилось их мучительно пропускать.
Вторая проблема сильно усугублялась первой, поскольку пропуски очень часто приводили к повторам всё тех же треков, пусть и в другой последовательности.
Рад сообщить, что мне удалось решить первую проблему (обновление уже в Play Store). Под катом будет описание выбранного алгоритма выбора и ротации треков, а также сути исправления, которое, как я ожидаю, должно кардинально улучшить пользовательский опыт.
Профессиональный лексический анализ на регулярных выражениях
2019-08-07 в 6:11, admin, рубрики: algorithms, DFA, java, lexer, nfa, regex, regexp, syntax analysis, syntax highlight, tokenizer, tokenizing, Алгоритмы, Компиляторы, Программирование, Регулярные выраженияСинтаксический анализ текста всегда начинается с лексического анализа или tokenizing-а. Существует простой способ решить эту задачу практически для любого языка с помощью регулярных выражений. Еще одно применение старым добрым regexp-ам.
Как устроен балансировщик команд в World of Tanks Blitz
2019-07-23 в 15:13, admin, рубрики: algorithms, Gamedev, matchmaking, WOT, Алгоритмы, балансировщик, Блог компании Wargaming, матчмейкер, Программирование, разработка игрWoT Blitz — это мобильный танковый шутер, в котором игроки сражаются в формате 7 на 7.
Матчмейкер, или балансировщик это механизм, который на основе очереди игроков, желающих попасть в бой, формирует состав команд.
У танков есть следующие важные для матчмейкинга параметры:
- Уровень. В зависимости от уровня, у танков меняются различные характеристики (например, скорость, бронепробитие). На 1-ом уровне — самые слабые танки, на 10-ом — самые сильные.
- Тип. В WoT Blitz существует 4 типа танков: лёгкий, средний, тяжёлый и ПТ-САУ (противотанковые самоходные артиллерийские установки)
Самая простая реализация матчмейкера — закидывание игроков в команды случайным образом. Но в данном случае у игроков на низких уровнях не будет никаких шансов нанести хоть какой-то урон, и играть станет неинтересно.
Читать полностью »
Окружи, откуси, распили: новое соревнование Mini AI Cup #4
2019-07-09 в 8:11, admin, рубрики: AI, algorithms, Gamedev, miniaicup, russian ai cup, Блог компании Mail.Ru Group, Занимательные задачки, ненормальное программирование, Программирование, разработка игр, Спортивное программирование
Привет! Большинство из нас, специалистов в IT сфере, любит играть в игры — карточные, настольные, компьютерные и другие. Зачастую бывает, что игры пользы никакой не приносят, а хотелось бы всё и сразу — удовольствие, фан и знания. Специально для вас мы стараемся изобретать «игры для программистов», которые сочетают в себе всё вышеперечисленное. Предлагаем вам познакомиться с ними и приглашаем принять участие в соревновании по искусственному интеллекту Mini AI Cup #4!
Читать полностью »
Реализация словаря в Python
2019-04-16 в 13:54, admin, рубрики: algorithms, python, Алгоритмы, Блог компании OTUS. Онлайн-образование, ПрограммированиеВсем привет, 30 апреля в ОТУС стартует курс «Алгоритмы для разработчиков», именно к этому приурочена публикация сегодняшнего материала. Начнём.
В этой статье вы узнаете, как в Python реализованы словари.
Словари индексируются с помощью ключей, и они могут рассматриваться в качестве ассоциированных массивов. Давайте добавим 3 пары ключ/значение (key/value) в словарь:
>>> d = {'a': 1, 'b': 2}
>>> d['c'] = 3
>>> d
{'a': 1, 'b': 2, 'c': 3}
Подсчет конечных нулей факториала числа в любой системе счисления
2019-03-17 в 20:38, admin, рубрики: algorithms, copyrigt, mathematics, Алгоритмы, копирайт, математикаКак я могу посчитать количество конечных нулей факториала числа в определенной системе счисления?
Давайте рассмотрим случай, когда мы находимся в 10-й системе счисления, а затем посмотрим, как мы можем обобщить это в универсальное решение. Нам дано число N и для него нужно найти количество конечных нулей. Решение будет довольно простым — сумма:
Math.floor(N/5) + Math.floor(N/25) + Math.floor(N/125) + Math.floor(N/625) + ...
Её мы можем обобщить в такую формулу:
$$display$$sumlimits_{i=1}^infty {N over 5^i}.$$display$$
Почему 5? Это просто. Конечный ноль получается только тогда, когда в составе факториала число имеет 10. Таким образом, посчитав количество десяток в факториале, мы узнаем количество конечных нулей.
Читать полностью »
Математика в Gamedev по-простому. Триангуляции и Triangle.Net в Unity
2019-01-07 в 18:32, admin, рубрики: .net, algorithms, C#, Gamedev, gamedevelopment, math, open source, triangulation, unity, unity3d, геймдев, игры, математика, процедурная генерация мешей, разработка игр, триангуляции, юнитиВсем привет! Меня зовут Гриша, и я основатель CGDevs. Математика – очень крутой инструмент при разработке игр. Но если скажем без понимания векторов и матриц обойтись в принципе сложно, то алгоритмы триангуляций не столь обязательная вещь, но с помощью них решается достаточно большое количество интересных задач. Сегодня хотелось бы поговорить про достаточно важный инструмент в вычислительной геометрии, такой как триангуляции и их применение в игровой индустрии. Кроме того, я написал порт и немного обёрток великолепной библиотеки Triangle.Net для Unity + поделиться парой своих реализаций алгоритмов триангуляции. Если интересно – добро пожаловать под кат. Ссылка на гитхаб прилагается.
Машинное обучение на Python-е с интерактивными Jupyter демонстрациями
2018-12-21 в 11:05, admin, рубрики: AI, algorithms, machine learning, machinelearning, python, искусственный интеллект, машинное обучениеЗдравствуйте, Читатели!
Недавно я запустил репозиторий Homemade Machine Learning, который содержит примеры популярных алгоритмов и подходов машинного обучения, таких как линейная регрессия, логистическая регрессия, метод K-средних и нейронная сеть (многослойный перцептрон). Каждый алгоритм содержит интерактивные демо-странички, запускаемые в Jupyter NBViewer-e или Binder-e. Таким образом у каждого желающего есть возможность изменить тренировочные данные, параметры обучения и сразу же увидеть результат обучения, визуализации и прогнозирования модели у себя в браузере без установки Jupyter-а локально.