Обновить
198.58

Алгоритмы *

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

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

Объектно ориентированное программирование на Си без плюсов. Часть 1. Введение

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

Приветствую! 

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

Статья рассчитана на тех кто уже знаком с Си, а все примеры ориентированы на ОС Linux. Мои познания Windows закончились на «WinXP», после которой в Windows стало уже очень много политики ("безопасности") и коммерческой составляющей, но я сейчас не об этом и надеюсь, что здесь вы найдёте для себя полезные моменты, а если я в чём-то не прав или заблуждаюсь, то поправите.

Итак, я решил попробовать писать в стиле объектно ориентированного программирования (далее ООП) на Си без плюсов. Многие скажут, что писать в стиле объектно ориентированного программирования (далее ООП) не для Си, и разные приёмы написания это - «псевдо-ООП». Но лично я считаю ООП всего лишь абстрактной парадигмой, определяющей стиль написания ПО и не более чем. А Си очень мощный и самодостаточный язык программирования.

Так сложилось, что изучать традиции ООП я начал с Delphi и Java, являющихся, как считается, на 100% объектно ориентированными языками программирования, а потому аналогия решений у меня ассоциируется именно с ними. И далее в тексте я иногда буду на них ссылаться, что надеюсь не испортит суть полного понимания.

Читать далее

Эффективная разреженная булева алгебра — то, что нужно алгоритмам анализа графов

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

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

Читать далее

Алгоритмы сортировки NumPy (и танцы, и мемы)

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

Вместо предисловия:

Да, наверное, нет более избитой темы, чем алгоритмы сортировки. Однако, меня в свое время так увлек процесс разбора того, какие алгоритмы задействованы в NumPy, что захотелось всем об этом рассказать. Возможно, слишком мелкая вещь, возможно, занудство какое-то, но тешу себя надеждой, что материал может быть полезным для тех, кто тему только начал! Особенно для таких же людей, как я, перешедших из смежных сфер (из телекома, например), где алгоритмы и структуры данных могут попросту не изучаться (бывает и такое). Если где-то что-то напутал (или наоборот материал оказался для вас полезным), буду рад обратной связи!

Читать далее

ComputerVision и стиль

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

Несколько месяцев назад я писал статью про тихую революцию в ComputerVision - про трансформеры. А сейчас я хочу поговорить про другую революцию в CV. Уже не такую тихую (статьи тут куда более известные). Рассказ будет про GAN'ы. Как ими сегодня умеют управлять, и что достигли. В первую очередь это StyleGan и его производные.
В последний год-полтора появилось много различных способов управлять GAN-сетями и улучшилось их качество. Ещё чуть чуть и… Что? Можно будет генерить фильмы по описанию? Игры? Нужно ли будет рисовать крутые текстуры, или их можно будет создать?Попробую показать куда дошла современная технология, и чего ожидать от GAN’ов.

Читать далее

Как я исполнил свою мечту и написал движок Диззи

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

Давным-давно, два английских школьника умудрились основать серию игр, ставшую легендарными играми для ZX-Spectrum. Да, речь про братьев Оливеров и их неподражаемого Диззи. Впервые услышал я про Диззи в начале девяностых в возрасте лет эдак девяти-десяти, когда мне рассказали, как подруга моей сестры играет в некую игру с бегающим и собирающим предметы яйцом на компьютере (!). Сам спектрум у меня появился чуть позже – в одиннадцать лет (это октябрь 1994 года), почти вместе с книжками серии «Как написать игру для ZX-Spectrum». И вот в книжке про написание игры на ассемблере была картинка из игры Dizzy-4. Увы, самой игры у меня не будет ещё год-два. Но всё-таки, в конце-концов, мне её купили, как сейчас помню, в ларьке в СПб на Балтийском вокзале. Кассета была известной многим студии “Михаил и Михаил” (MIM). Вот тогда-то я прочно запал на Диззи. Я играл в него с утра до вечера, разгадывая головоломки и собирая монеты. Много-много лет мне очень хотелось написать что-то подобное. В 1996 у меня даже получился невероятный примитив на бейсике. Много лет я методично приближался к своей цели. И вот именно сейчас, спустя 25 лет, у меня наконец-то получилось что-то более-менее играбельное. Вот о том, как написать такую игру, я и расскажу.

Медицинский алгоритмический язык ДРАКОН против пандемии и не только. Статья для профессиональных врачей

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

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

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

В российской медицине ДРАКОН мало известен. Но уже есть и в России успешные попытки использовать ДРАКОН в медицине, например, в области реаниматологии и анестезиологии для противодействия новой коронавирусной инфекции COVID-19.

Такую попытку осуществили в Поволжском исследовательском медицинском университете (ПИМУ) в рамках дополнительного обучения профессиональных реаниматологов и анестезиологов в условиях ковид-больницы за неделю до ее открытия для приема первых ковид-пациентов.

Читать далее

Две открытые библиотеки для обучения байесовских сетей и идентификации структуры данных

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

В одном из предыдущих материалов мы рассказали о фреймворке для AutoML и библиотеке алгоритмов выбора признаков. На этот раз продолжаем делиться разработками специалистов, магистров и аспирантов Университета ИТМО и представляем вашему вниманию парочку open source инструментов для работы с данными. Как обычно — говорим о них простыми словами и делимся ссылками на публичные репозитории, предоставленными авторами проектов.

Читать далее

Что стоит почитать и посмотреть летом — рекомендации ученых из Университета ИТМО

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

Сегодня мы решили открыть новую рубрику в нашем блоге на Хабре — делиться «неклассическими» рекомендациями от представителей Университета ИТМО и спикеров нашего подкаста «ITMO Research_». В сегодняшнем выпуске: YouTube- и Telegram-каналы, книги и другой контент, который подойдет для изучения в относительно спокойной обстановке — в отпуске или во время отдыха.

Читать далее

Разработка панели индикации с помощью сдвиговых регистров IN74HC595AD

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

Часто при разработке радио-электронных устройств возникает необходимость выполнения климатических условий с повышенными требованиями, таких как предельно допустимые рабочие температуры -60…+70 ºC. И эти требования становятся проблемой для реализации цифровых панелей взаимодействия с пользователем. Рабочие температуры ЖК индидикаторов в пределах -20...+70 ºC , люминисцентных газоразрядных индикаторов -40..+70 ºC. Поэтому возникает необходимость организовывать панели взаимодействия с оператором-пользователем с помощью 7-сегментных цифровых индикаторов, одноцветных и двухцветных светодиодов. Для использования таких органов индикации необходимы схемотехнические и программные решения. Есть разные способы управления системой индикации. В данной статье хочу привести свой опыт использования и организации схемно-программной структуры проекта.

Читать далее

Теория графов. Термины и определения в картинках

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

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

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

Теория графов

Общего решения из коробки — нет, или Тестируем PySpark MLlib

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

Андрей Гаврилов работает в компании EPAM software инженером и занимается data-инженерными задачами. Пишет на Python, работает с Big Data и изучает Data Science — потому что невозможно заниматься Big Data на Python, не касаясь при этом Data Science.

И однажды он захотел выяснить, насколько модуль Spark, связанный с machine learning —  рабочий. Имеет ли  смысл его применять, когда мы мигрируем какое-то решение — например, Scikit-learn — на Spark. На конференции Russian Python Week 2020 он рассказал о своем эксперименте, а сегодня — самая суть для вас.

Обозначим задачу: есть пайплайн, написанный с привычными для Data Scientist фреймворками типа Scikit-learn. Это нужно перенести в кластер Spark’а. Посмотрим, в чем тут может быть проблема. 

Читать далее

DataScience Digest — 15.07.21

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

Встречайте свежий выпуск дайджеста полезных материалов из мира Data Science & Machine Learning подготовленный командой Data Phoenix и не забывайте подписываться на наш Telegram-канал.

Читать далее

Методы для обнаружения и диагностика неисправностей применительно IoT

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

Вследствие увеличения сложности систем и необходимости уменьшения затрат на их поддержание традиционные методы ОДН (обнаружение и диагностика неисправностей) не справляются со своей задачей. С другой стороны, эксперты в этой области не сильно доверяют методам, основанным на машинном обучении и глубоком обучении, или, говоря по-другому — методам BlackBox. В свою очередь, при GreyBox методах возможно вводить знание эксперта в систему и более или менее объяснять, как были получены результаты. В связи с этим в статье мы рассмотрим методы ОДН и примеры их применения в IoT системах.

Читать далее

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

Рекомендательные системы: проблемы и методы решения. Часть 1

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

Привет! Я хочу рассказать вам о рекомендательных алгоритмах. Мы в Prequel создаем фильтры и эффекты для редактирования фото и видео. Создаем давно, и постепенно этих эффектов стало очень много. А с ними и пользовательского контента. Мы захотели помочь с выбором из этого многообразия, для чего нам и понадобилась система рекомендаций. Если масштабы вашей системы такие, что пользователям сложно в ней ориентироваться, возможно, что рекомендации могут помочь и вам.

Задуманный систем оказался слишком объемным для одной статьи, поэтому мы разбили его на две части. Перед вами первая, она посвящена постановке задачи и базовым методам решения. В этой части мы разберем коллаборативные модели от матричного разложения (на примере ALS) до neural collaborative filtering. Кроме того, будет небольшой обзор метрик и техник борьбы с проблемой холодного старта.

Читать далее

Определение позы для нескольких людей с Mediapipe

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

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

Читать далее

Open Data Science Odessa Meetup #3

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

Приветствую всех!

Вы устали от карантина? Мы точно! Поэтому после длительного перерыва, команда Data Phoenix вместе с Autodoc и VITech приглашает всех, 14 июля, на долгожданный оффлайн митап одесского Open Data Science сообщества. На нем мы поговорим про управление данными и обнаружение объектов в реальном мире, а также вас ждет много живого общения, которого нам очень не хватало на карантине. Будет организована онлайн-трансляция. Участие бесплатное, но обязательна предварительная регистрация.

Программа и регистрация

Голосовой ИИ: технологии под капотом цифрового агента

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

Привет, Хабр! Сегодня мы предлагаем поговорить про так называемый голосовой искусственный интеллект и про технологии, которые делают его «умным». Кроме того, поговорим и о «магии» нашей голосовой платформы — о том, что позволяет голосовому агенту вести нормальную беседу с человеком.

Технологии достигли настолько высокого уровня, что даже профессионалы, которые занимаются разработкой голосовых технологий, зачастую затрудняются отличить робота от человека. Кстати, эта статья подготовлена по выступлению СТО Neuro.net Игоря Десятникова на Tech Week 2021. Если не хочется читать статью — вот видео, если же нужны подробности, то все самое интересное — под катом.

Плагин для ранжирования кода по важности или как я пыталась облегчить жизнь программистам

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

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

Сейчас готовых средств для ранжирования кода по важности нет. Поэтому студентка второго курса программы «Прикладная математика и информатика» Олеся Субботина решила написать такой плагин в рамках проектной работы по Java.

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

Читать далее

Open source в Университете ИТМО: фреймворк для AutoML и библиотека алгоритмов выбора признаков

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

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

Читать далее

Фильтр Калмана: разбор навигационной системы БПЛА + исходный код

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

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

Читать далее

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