Все потоки
Поиск
Написать публикацию
Обновить
212.46

Алгоритмы *

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

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

Вариативность органики: как сделать так, чтобы искусственное выглядело естественным

Время на прочтение20 мин
Количество просмотров4.2K
  • Раскрашиваем фрактал на основании глубины.
  • Применяем случайную вариативность на основе последовательности.
  • Добавляем листья с отличающимся внешним видом.
  • Реализуем провисание фрактала под воздействием «гравитации».
  • Добавляем вариативности для поворота и иногда меняем его направление.

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

Туториал сделан в Unity 2019.4.18f1.


Модифицированный фрактал, выглядящий органическиим.

Градиент цвета


Фрактал, созданный нами в предыдущем туториале, очевидно, является результатом применения математики. Он выглядит строгим, точным, формальным и однородным. Он не выглядит ни органическим, ни живым. Однако внеся некоторые изменения, мы можем заставить математическое выглядеть в определнной степени органическим. Для этого мы внесём вариативность и случайность, а также симулируем поведение органики.

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

UTF-8 vs UTF-16. Несколько советов программистам

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

С появлением первых устройств цифровой передачи информации и электронно-вычислительных машин возникла задача кодирования текстовых символов с помощью последовательностей единиц и нулей. Минимальная единица представления информации – байт. Исходя их этого в 1963 году в США разработана, стандартизована, а впоследствии расширена кодовая таблица ASCII (American standard code for information interchange), использовавшая 8 битную кодировку. В первую очередь с помощью этой таблицы предполагалось кодирование цифр и букв английского языка. Первые 128 символов таблицы представлены на рис.1:

Читать далее

Автоматы на службе распределенных транзакций

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

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



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

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

FermiNet: квантовая физика и химия с азов

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


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

Исследователи смогут прототипировать новые материалы и соединения in silico прежде, чем попытаться синтезировать их в лаборатории. Также выложен код из этого исследования; таким образом, команды специалистов по вычислительной физике и химии могут опираться на проделанную работу и применять ее при решении разнообразных проблем. В рамках исследования была разработана новая архитектура нейронной сети, Fermionic Neural Network или FermiNet, которая хорошо подходит для моделирования квантового состояния больших совокупностей электронов – а ведь именно на электронах основаны все химические связи. Сеть FermiNet впервые продемонстрировала, как использовать глубокое обучение для вычисления энергии атомов и молекул с азов. Полученная модель оказалась достаточно точной для практического применения и на момент публикации оригинала статьи (октябрь 2020) оставалась наиболее точным нейросетевым методом, применяемым в отрасли. Предполагается, что связанные с ней методы и инструментарий могут пригодиться при решении фундаментальных проблем в естественных науках. Авторы FermiNet уже применяют ее в работе над сверткой белков, динамикой стеклообразных соединений, квантовой хромодинамикой на решетке и во многих других проектах, помогающих воплотить данные наработки на практике.
Читать дальше →

Распознавание потребителей электричества в сети

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

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

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

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

Читать далее

Почему алгоритмы ML так трудно настраивать?

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


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

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

Приятного чтения!

Как же писать эти грёбаные циклы?

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

Было бы здорово иметь чёткий алгоритм размышлений, который при знании синтаксиса поможет идеям всплывать в голове. За свою практику я создал много таких алгоритмов, а также позаимствовал у гуру программирования. Большая их часть основана на бытовых аналогиях событий из создаваемой программы. Например, набор переменных можно представить, как конвейерную ленту с коробочками, в каждой из которых - свой товар. Сама коробочка - это и есть переменная, а надпись на неё - её имя. Внутри одной коробочки - число, внутри другой - текст, и т. д.

Читать далее

Зачем PVS-Studio использует анализ потока данных: по мотивам интересной ошибки в Open Asset Import Library

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

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

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

Программный генератор статистически безупречных случайных чисел

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

Программный генератор статистически безупречных случайных чисел


Проблема создания таких программ широко обсуждалась в математической литературе в 1965-1975 годах, тогда же отмечалась сложность этой задачи.


Современная математика имеет значительные достижения в этом вопросе.


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


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

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

Бинарный поиск в микроконтроллере

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

Алгоритм бинарного поиска или поиска делением пополам известен давно. В данной статье будет рассмотрен пример его «железячной» реализации на 8-битном микроконтроллере и особенностях, которые возникают при этом.

Читать далее

Книга «Совершенный алгоритм. Алгоритмы для NP-трудных задач »

Время на прочтение12 мин
Количество просмотров7.6K
image Привет, Хаброжители! Алгоритмы — это сердце и душа computer science. Без них не обойтись, они есть везде — от сетевой маршрутизации и расчетов по геномике до криптографии и машинного обучения. «Совершенный алгоритм» превратит вас в настоящего профи, который будет ставить задачи и мастерски их решать как в жизни, так и на собеседовании при приеме на работу в любую IT-компанию.

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

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

Менеджер транзакций для базы данных в оперативной памяти

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


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

Когда меня спрашивают, что такое Tarantool, я отвечаю давно въевшееся в мозг: «Tarantool — persistent in-memory noSQL СУБД с хранимыми процедурами на Lua». Но всë не так просто. Вот in-memory — да, в основном в Tarantool используется memtx engine, движок в памяти, однако дисковый движок (vinyl) тоже давным-давно есть, и у него множество нюансов и особенностей. Или noSQL — да, в основном Tarantool используется как noSQL БД, но SQL он тоже умеет, точнее, какую-то его часть, а какую именно — это надо почитать.

Даже с хранимыми процедурами не совсем всё просто: то, что затевалось как способ сделать JOIN в noSQL БД, обросло кооперативно-многозадачной инфраструктурой для работы с сетью, файлами, HTTP, массой модулей и документации; сейчас Tarantool именуют сервером приложений с БД на борту. Да и хранимые процедуры бывают не только на Lua, но и на C.

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

Больше никаких оговорок, пора рассмотреть новый менеджер транзакций под микроскопом.
Читать дальше →

Кодирование Рида-Соломона для чайников

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

Есть способ передавать данные, теряя часть по пути, но так, чтобы потерянное можно было вернуть по прибытии. Это третья, завершающая часть моего простого изложения алгоритма избыточного кодирования по Риду-Соломону. Реализовать это в коде не прочитав первую, или хотя бы вторую часть на эту тему будет проблематично, но чтобы понять для себя что можно сделать с использованием кодировки Рида-Соломона, можно ограничиться прочтением

этой статьи

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

Что такое HDR10+? Разбор

Время на прочтение7 мин
Количество просмотров43K
70% информации о мире человек получает через зрение. Фактически глаза — наш главный орган чувств. Но можем ли мы доверять нашему зрению?

Давайте взглянем на картинку. Вроде ничего необычного. Но что если я вам скажу, что ячейки A и B — совершенного одного цвета.





На самом деле мы не всегда можем отличить светлое от темного. Далеко за примерами ходить не надо: помните сине-черное / бело-золотое платье или появившиеся чуть позже кроссовки?





И все современные экраны пользуются этой особенностью человеческого зрения. Вместо настоящего света и тени нам показывают их имитацию. Мы настолько к этому привыкли, что даже не представляем что может быть как-то иначе. Но на самом деле может. Благодаря технологии HDR, которая намного сложнее и интереснее, чем вы думаете. Поэтому сегодня мы поговорим, что такое настоящее HDR-видео, поговорим про стандарты и сравним HDR10 и HDR10+ на самом продвинутом QLED телевизоре!



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

Рекомендательный движок за 2 строчки кода

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

Эта статья про то, как можно сделать рекомендации на сайт, если один из ключевых критериев — скорость. Нужно это, например, тогда, когда существующая система к набору молотков рекомендует заготовку для выпиливания лобзиком (как это было у нас) или когда её вообще нет.

Алгоритм можно описать всего в одном предложении: берём историю продаж и обучаем на ней гугловый Word2Veс, фильтруем результат.

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

Читать далее

Пишем свой парсер математических выражений и калькулятор командной строки

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


Примечание: полный исходный код проекта можно найти здесь.

Вы когда-нибудь задавались вопросом, как цифровой калькулятор получает текстовое выражение и вычисляет его результат? Не говоря уже об обработке математических ошибок, семантических ошибок или работе с таким входными данными, как числа с плавающей запятой. Лично я задавался!

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

Математик-пенсионер, «хакнувший» лотерею

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

Любитель головоломок


Джеральд Селби всегда любил загадки: там, где другие видели лишь шум, он стремился найти порядок и гармонию. Работая на фабрике Kellogg's по производству овсяных хлопьев, он занимался анализом материалов для увеличения срока годности продукции. Однажды, изучая хлопья других компаний, Джерри наткнулся на странную последовательность символов на обороте коробки General Mills. Вместо даты и фабрики-производителя там был отпечатан загадочный код. Джерри решил расшифровать его: взяв несколько коробок завтраков Kellogg's и General Mills, он начал сравнивать их влажность, сообразив, что хлопья с примерно одинаковой влажностью должны иметь близкие даты производства. Делая записи на бумаге, он выявил некоторые закономерности. Вскоре ему удалось расшифровать всё, что позволило определить место, дату и время изготовления. В более агрессивной сфере бизнеса «взлом» секретов конкурентов мог бы обернуться огромной выгодой, но не в производстве овсяных хлопьев, поэтому руководство восприняло его открытие без энтузиазма.
Читать дальше →

Как машинное обучение влияет на алгоритм ранжирования ленты новостей в Facebook

Время на прочтение8 мин
Количество просмотров2.8K
Разработка персонализированной системы ранжирования для более чем 2 миллиардов человек (учитывая, что у всех разные интересы) и обилием контента на выбор представляет собой серьёзные и сложные задачи. Это то, чем мы занимаемся каждый день с системой ранжирования News Feed. Без машинного обучения новостные ленты людей могут быть переполнены контентом, который они не считают актуальным или интересным (включая чрезмерно рекламный контент или постоянные публикации от знакомых), который будет выше в ленте, чем публикации от близких друзей или родственников. Ранжирование существует, чтобы помочь решить эти проблемы, но как создать систему, которая представляет такое количество различных типов контента таким образом, чтобы он был персонализирован для каждого человека в Facebook? Мы используем машинное обучение, чтобы предсказать, какой контент будет иметь наибольшее значение для каждого человека, чтобы сделать его более интересным и позитивным для пользовательского опыта. Мы делимся новыми подробностями о том, как в Facebook разработали систему ранжирования лент новостей на основе машинного обучения.


Приятного чтения!

Вычисляем баллистические траектории в играх

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

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

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

Уравнения движения


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

Существует четыре основных уравнения движения. В статье мы воспользуемся только одним.

Умеет ли человечество писать алгоритмы? Безошибочные алгоритмы и язык ДРАКОН

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

Когда мы научимся создавать безошибочные алгоритмы? Двойная катастрофа самолета Боинг 737 МАХ явилась крупнейшей по своим масштабам алгоритмической трагедией за всю историю человечества.
На руках разработчиков алгоритмов кровь сотен людей.
Глава корпорации Boeing, выдающийся инженер и талантливый руководитель Деннис Мюленбург на слушаниях в конгрессе США выглядел как нашкодивший мальчишка и слетел со своего поста как пушинка.

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

Визуальный алгоритмический язык ДРАКОН и ДРАКОН-методология опираются на новые идеи, демонстрируют заметные успехи в области безопасного создания алгоритмов и жизнеритмов.
ДРАКОН использует мантру безошибочности (батарею новых методов) и уверенно делает первый шаг к безошибочному будущему.
К сожалению, есть и ложка дегтя. Язык ДРАКОН пока еще не существует (есть лишь только разговоры) и занимает микроскопическую долю рынка. Но на него стоит обратить серьезное внимание.

Читать далее

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