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

Алгоритмы *

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

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

Разработка архитектуры системы управления поведением объекта: основа

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

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

При зарождении, появлении концепции «цифрового» двойника, сформировалось несколько позиций, старающихся выразить концептуальное представление виртуального прототипа – «цифрового» двойника, существующего объекта. Промышленность начало рассматривать «цифровой» двойник как разновидность систем и сред: a) PLM – управление жизненным циклом изделия, под жизненным циклом в настоящей, принятой и распространённой на предприятиях, системе понимается процесс производства изделия, максимум передаются/получается данные применяемые в I) маркетинге, за частую не адресном или не объективном; II) сервисном (прим.: не в полной мере), хаотичном обслуживании выпущенных изделий, применяемых человеком или машиной (прим.: системой); b) PLM+ERP+датчики, представляемая система, при практическом построении, когда концепция начинает приобретать проектную архитектуру с набором методов, показывает такие же I и II проблемы, но в дополнении к этому появляется «слепая зона» в восприятии реальности, активней, сильнее влияющая чем первые (прим.: III).

Приведённые разновидности, рассматриваемые как организация и реализация «цифрового» двойника в существующей реалии, содержат набор проблем. Представленные выше в качестве нескольких примеров (прим.: I, II, III), должны учитываться в исследованиях, разработках, а также практических опытах при создании решений, перехода от концепции к проектной архитектуре – системе управления поведением объекта.

Читать далее

Что нужно программисту?

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

Прочитал статью «Математика для программиста». Удивительно, что в ней куча букв, но нет внятного смысла. Я решил исправить этот фатальный недостаток.


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

Python: самое короткое решение 41 задачи из проекта Эйлера

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

Сегодня мы решим 41-ю задачу из Проекта Эйлера в 6 строк кода. Сделаем это сначала в развёрнутом виде, а потом максимально сократим решение.

Читать далее

Воссоздаем Minecraft-подобную генерацию мира на Python

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

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

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

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

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

Прим. переводчика. Осторожно, в статье много иллюстраций (в том числе анимированных)

Читать далее

Advent of Code с нами уже 7 лет

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

Приближается декабрь, а значит и ежегодный праздник программирования - Advent Of Code. Для тех кто устал перекладывать JSON-ы и шлепать формы.

Читать далее

Карма, основанная на кластерах

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

По мотивам статьи Кармическое проклятье Хабра и десятков подобных. Здесь предлагается почелленджить идею, как можно сделать лучше. Есть куча алгоритмов ранжирования контента, среди пользователей Хабра лучшие умы России, предлагаю обсудить этот вопрос и придумать решение. Затравку для обсуждения я дам, а дальше в комментариях доработаем. Погнали!

Читать далее

Обращение к Javascript-сообществу: перестаньте писать квадраты

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

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

Read more

Видеодетектор огня

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

Введение - А зачем это нужно?

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

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

Читать далее

SQL HowTo: генерируем лабиринты (алгоритм Прима и геометрические типы)

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

SQL является мощным инструментом для обработки множеств, а функционал PostgreSQL позволяет делать многие вещи еще проще, поэтому идеально подходит для реализации некоторых алгоритмов на графах.

Причем работа с графами - это не просто разминка для ума, а вполне себе прикладная задача. Например, в прошлой статье мы сделали "из мухи - слона" волновым алгоритмом Ли, аналогичным используемому у нас в СБИС при расчете себестоимости в многокомпонентных актах выпуска.

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

Читать далее

Простое объяснение симуляции жидкости в реальном времени

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

Эта статья представляет собой простой и интуитивно понятный разбор симуляции жидкостей для программистов и технических художников. Вместо сложных математических выражений я постараюсь дать вам простое геометрическое понимание физики жидкостей. Реализация выполнена на вычислительных шейдерах Unity 3D, однако общие идеи не привязаны к конкретным технологиям.

Код проекта можно найти на моём Github.


Ресурсы, посвящённые симуляции жидкостей, могут быть очень пугающими. Помню, что когда я впервые прочитал статью о ней и увидел уравнения Навье-Стокса, то был в ужасе. Со временем я понял, что сама тема совершенно не сложна. На самом деле, если бы вам дали задачу написать собственный симулятор жидкостей, то вы, вероятно, написали бы что-то подобное на основании интуитивного понимания работы жидкостей. Если, посмотрев на уравнения Навье-Стокса, вы подумали «ага, понятно», то вы, возможно, быстрее бы реализовали симуляцию жидкости, прочитав работы, перечисленные в конце этой статьи. Я же попытаюсь не использовать сжатое выражение и объяснять всё как можно медленнее.
Читать дальше →

Считаем комбинации мозаик при помощи APL

Время на прочтение6 мин
Количество просмотров1.5K
Это короткая статья о том, как я воспользовался APL для проверки своих комбинаторных вычислений.


Преамбула


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

«Есть сетка 3 на 3 из квадратов, образующая мозаику. Сколькими способами мы можем раскрасить эту мозаику, если у нас есть 3 цвета и соседние квадраты не могут быть одного цвета?»

Под «соседними» понимаются соседние по вертикали или горизонтали. Авторы задачи дали подсказку (если не хотите спойлеров, то сразу переходите к следующему разделу!):

Подсказка
«Пронумеруйте квадраты от 1 до 9, а затем поработайте с цветами чётных квадратов. Это позволит определить цвета нечётных квадратов».

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

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

Это статья о том, как я за 30 секунд проверил на APL своё решение задачи.

  1. Я начну с демонстрации моего ошибочного доказательства (в том виде, в котором я его записал);
  2. Затем я расскажу, что сделал на APL, чтобы проверить своё решение;
  3. Далее я покажу свою исходную ошибку, и наконец
  4. Я ещё немного поработаю с кодом на APL, чтобы сделать его чище.
Читать дальше →

Простая система ветровой эрозии на основе частиц

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

Полный исходный код этого проекта, а также объяснение того, как его использовать и читать, можно найти на Github [здесь]. Проект рендерится при помощи моего собственного [TinyEngine].

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

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

Один из самых хорошо известных и производительных алгоритмов улучшения генерации рельефов на основе шума — это гидравлическая эрозия на основе частиц [перевод на Хабре]. Этот алгоритм чрезвычайно прост и обеспечивает отличные результаты относительно малыми усилиями.

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

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

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

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

SQL HowTo: делаем из мухи слона (алгоритм Ли)

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

Правила игры очень просты: надо построить цепочку слов от начального (МУХА) до конечного (СЛОН), на каждом шаге меняя только одну букву. При этом могут использоваться только русские 4-буквенные нарицательные существительные в начальной форме: например, слова БАЗА, НОЧЬ, САНИ допускаются, а слова ЛИТЬ, ХОТЯ, РУКУ, НОЧИ, САНЯ, ОСЛО, АБВГ, ФЦНМ — нет.

Эта игра под названием «Дублеты» приобрела известность благодаря Льюису Кэрроллу — не только автору книг про Алису, но ещё и замечательному математику. В марте 1879 года он начал раз в неделю публиковать в журнале «Ярмарка тщеславия» по три задания в форме броских фраз: «Turn POOR into RICH» — «Преврати бедного в богатого», «Evolve MAN from APE» — «Выведи человека из обезьяны», «Make TEA HOT» — «Сделай чай горячим». В том же году он выпустил брошюру «Дублеты», подробно описал в ней правила и предложил читателям попрактиковаться на нескольких десятках примеров.

Александр Пиперски, "Из мухи — слона", «Квантик» №2, 2019 и №3, 2019

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

Читать далее

Первый truly stateless оптимальный алгоритм модел-чекера и его проверка на Coq

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

Надоели нестабильные баги в многопоточном коде? Попробуй воспользоваться модел-чекерами! Ведь больше не надо бояться неверифицированных модел-чекеров,  работающих либо за экспоненциальное время, либо неоптимально. Все это в прошлом: в Max Planck Institute for Software Systems разработали новый алгоритм под названием TruSt, который решает эти проблемы и, кроме того, верифицирован на Coq.

Меня зовут Владимир Гладштейн. Этим летом я проходил стажировку в MPI-SWS в группе, которая придумала алгоритм нового модел-чекера для поиска багов в многопоточных программах. Этот алгоритм является оптимальным и truly stateless (вследствие чего работает с линейными затратами по памяти). В этом посте я расскажу, как работают модел-чекеры, в каких случаях их можно использовать, и что за алгоритм придумали мои коллеги. А еще как я проверял доказательства его корректности на Coq.

Читать далее

Синтетические постеры для кино: как обрезать логотип телеканала, хардсабы и чёрные грани

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

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

Читать далее

Вариационные автоэнкодеры для системы рекомендаций

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

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

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

Узнать больше

Восстанавливаем результаты выборов в Государственную думу 2021 года с помощью машинного обучения

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

Результаты выборов в государственную думу, которые проходили 17-19 сентября 2021 вызывают сомнения у многих экспертов. Независимый электоральный аналитик Сергей Шпилькин оценил количество голосов, вброшенных за партию власти, примерно в  14 миллионов. В данной работе применены методы машинного обучения для того, чтобы выявить избирательные участки, на которых подсчет голосов происходил без нарушений и установить истинный результат на тех участках, где , предположительно, были зарегистрированы ошибочные данные.

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

Читать далее

Простой цифровой радиоприемник на базе контроллера STM32G4 своими руками

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

Обучающие проекты по созданию простого цифрового радиоприемника на базе микроконтроллера STM32G431KB.

Читать далее

Сколько ты стоишь? Метод анализа вакансий с HR-агрегаторов

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

Конечно, когда мы решаемся сменить работу, мы исходим из своих личных побуждений и мотиваций; и очевидно, что увеличение своего материального положения — не последняя из причин. Но при ответе себе лично на вопрос «сколько я хочу получать» обычно оперируем своим собственным потреблением. Но случалось ли вам слышать именно на собеседовании такой вопрос: «А почему Вы хотите получать именно столько?» Мне случалось пару раз, и, признаюсь, в те разы терялся что ответить. Некоторые размышления меня натолкнули, что лучший ответ будет: «Столько предлагает рынок».

Читать далее

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