Как стать автором
Обновить
0
Ashot Vardanian @AshVardanian read⁠-⁠only

AI Research & Hedge Fund Director

Отправить сообщение

Готовимся к С++20. Coroutines TS на реальном примере

Время на прочтение 9 мин
Количество просмотров 33K
В C++20 вот-вот появится возможность работать с корутинами из коробки. Нам в Яндекс.Такси эта тема близка и интересна (под собственные нужды мы разрабатываем асинхронный фреймворк). Поэтому сегодня мы на реальном примере покажем читателям Хабра, как можно работать с C++ stackless корутинами.

В качестве примера возьмём что-то простое: без работы с асинхронными сетевыми интерфейсами, асинхронными таймерами, состоящее из одной функции. Например, попробуем осознать и переписать вот такую «лапшу» из колбеков:


void FuncToDealWith() {
    InCurrentThread();

    writerQueue.PushTask([=]() {
        InWriterThread1();

        const auto finally = [=]() {
            InWriterThread2();
            ShutdownAll();
        };

        if (NeedNetwork()) {
            networkQueue.PushTask([=](){
                auto v = InNetworkThread();
                if (v) {
                    UIQueue.PushTask([=](){
                        InUIThread();
                        writerQueue.PushTask(finally);
                    });
                } else {
                    writerQueue.PushTask(finally);
                }
            });
        } else {
            finally();
        }
    });
}

Читать дальше →
Всего голосов 32: ↑31 и ↓1 +30
Комментарии 61

«Lock-free, or not lock-free, that is the question» или «Здоровый сон хуже горькой редьки»

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

На написание данной статьи меня подвигли комментарии к статье "Как правильно и неправильно спать".


Речь в данной статье пойдёт о разработке многопоточных приложений, применимости lock-free к некоторым кейсам возникшим в процессе работы над LAppS, о функции nanosleep и насилии над планировщиком задач.


NB: Всё обсуждаемое касается разработки на C++ под Linux, но может быть применимо ко всем POSIX.1-2008 совместимым системaм (с оглядкой на конкретную реализацию).

Вобщем всё довольно сумбурно, надеюсь ход мысли в изложении будет понятен. Если интересно то прошу под кат.

Читать дальше →
Всего голосов 11: ↑11 и ↓0 +11
Комментарии 42

Нейронные сети, фундаментальные принципы работы, многообразие и топология

Время на прочтение 9 мин
Количество просмотров 44K
Нейронные сети совершили революцию в области распознавания образов, но из-за неочевидной интерпретируемости принципа работы, их не используют в таких областях, как медицина и оценка рисков. Требуется наглядное представление работы сети, которое сделает её не чёрным ящиком, а хотя бы «полупрозрачным». Cristopher Olah, в работе «Neural Networks, Manifolds, and Topology» наглядно показал принципы работы нейронной сети и связал их с математической теорией топологии и многообразия, которая послужила основой для данной статьи. Для демонстрации работы нейронной сети используются низкоразмерные глубокие нейронные сети.

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

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

Рассмотрим принцип работы сети на примере
Читать дальше →
Всего голосов 49: ↑42 и ↓7 +35
Комментарии 40

Численное решение математических моделей объектов заданных системами дифференциальных уравнений

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

Введение:


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

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

Возникает необходимость использовать численные методы, наиболее известным из которых является метод Рунге — Кутты [1]. Что касается Python, то в публикациях по численным методам, например [2,3], данных по применение Рунге — Кутты крайне мало, а по его модификации — методу Рунге-Кутта-Фельберга вообще нет.

В настоящее время, благодаря простому интерфейсу, наибольшее распространение в Python имеет функцию odeint из модуля scipy.integrate. Вторая функция ode из этого модуля реализует несколько методов, в том числе и упомянутый пятиранговый метод Рунге-Кутта-Фельберга, но, вследствие универсальности, имеет ограниченное быстродействие.

Целью настоящей публикации является сравнительный анализ перечисленных средств численного решения систем дифференциальных уравнений с модифицированным автором под Python методом Рунге-Кутта-Фельберга. В публикации так же приведены решения по краевым задачам для систем дифференциальных уравнений (СДУ).
Читать дальше →
Всего голосов 18: ↑17 и ↓1 +16
Комментарии 12

Как устроены технические индикаторы на фондовых рынках

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

Как же все таки они устроены? И кому это может быть полезно? Вам определенно с этим следует ознакомиться, если:

  1. Вы ими пользуетесь в своей торговле
  2. Вы планируете написать торгового робота
  3. Вы хотите реализовать торговую стратегию сами

технические индикаторы
Читать дальше →
Всего голосов 41: ↑37 и ↓4 +33
Комментарии 29

1000-мерный куб: можно ли сегодня создать вычислительную модель человеческой памяти?

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

Сегодня утром на пути к кампусу Беркли я провёл пальцами по листьям ароматного куста, а затем вдохнул знакомый запах. Я делаю так каждый день, и каждый день первое слово, которое всплывает в голове и приветственно машет рукой — это шалфей (sage). Но я знаю, что это растение — не шалфей, а розмарин, поэтому я приказываю шалфею успокоиться. Но слишком поздно. После rosemary и sage я не могу помешать появлению на сцене петрушки (parsley) и чабреца (thyme), после чего в голове возникают первые ноты мелодии и лица на обложке альбома, и вот я уже снова оказался в середине 1960-х, одетый в рубашку с огурцами. Тем временем розмарин (rosemary) вызывает в памяти Роуз Мэри Вудс (Rosemary Woods) и 13-минутный пробел (хотя теперь, проконсультировавшись с коллективной памятью, я знаю, что это должны быть Роуз Мэри Вудс и пробел в 18 с половиной минут). От Уотергейта я перепрыгиваю к историям на главной странице. Потом я замечаю в ухоженном саду ещё одно растение с пушистыми серо-зелёными листями. Это тоже не шалфей, а чистец (lamb’s ear). Тем не менее, sage наконец получает свою минуту славы. От трав я переношусь к математическому ПО Sage, а потом к системе противовоздушной обороны 1950-х под названием SAGE, Semi-Automatic Ground Environment, которой управлял самый крупный из когда-либо построенных компьютеров.

В психологии и литературе подобные мыслительные блуждания называются потоком сознания (автор этой метафоры — Уильям Джеймс). Но я бы выбрал другую метафору. Моё сознание, насколько я ощущаю, не течёт плавно от одной темы к другой, а скорее порхает по ландшафту мыслей, больше похожее на бабочку, чем на реку, иногда прибиваясь к одному цветку, а затем к другому, иногда уносимая порывами ветка, иногда посещающая одно и то же место снова и снова.
Читать дальше →
Всего голосов 38: ↑35 и ↓3 +32
Комментарии 10

Серьёзному успеху в квантовых вычислениях помешал подросток

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

18-летний Ювин Тан доказал, что классические компьютеры могут решать «задачу рекомендаций» почти так же быстро, как квантовые. Этот результат аннулирует один из наилучших примеров квантового ускорения расчётов.




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

В наиболее практичном виде проблема рекомендаций связана с тем, как сервисы вроде Amazon и Netflix определяют, какие продукты могут вам понравиться. Специалисты по информатике считали её одним из наилучших примеров задач, решать которые на квантовых компьютерах будет экспоненциально быстрее – что подчёркивало потенциальные возможности этих футуристических машин. И вот теперь Тан опроверг это мнение.
Читать дальше →
Всего голосов 137: ↑122 и ↓15 +107
Комментарии 80

Обнаружен универсальный метод сортировки сложной информации

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


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

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

Но, в отличие от примера с кафе, вопросы о ближайшем соседе часто оказываются очень сложными. За последние несколько десятилетий величайшие умы среди специалистов по информатике брались за поиски наилучших способов решения подобной задачи. В частности, они пытались справиться с усложнениями, появляющимися из-за того, что в различных наборах данных могут быть очень разные определения «близости» точек друг к другу.
Читать дальше →
Всего голосов 43: ↑37 и ↓6 +31
Комментарии 19

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

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

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




На ранних этапах изучения квантовых компьютеров специалисты по информатике задали вопрос, ответ на который, по их мнению, должен был открыть какую-то глубокую истину о возможностях этих футуристических машин. 25 лет спустя ответ на него был найден. В работе, опубликованной в мае 2018, специалисты по информатике Рэн Рэз и Авишай Тал предложили убедительное доказательство того, что вычислительные возможности квантовых компьютеров превосходят всё, чего в принципе могут достичь классические компьютеры.
Читать дальше →
Всего голосов 43: ↑28 и ↓15 +13
Комментарии 57

Колмогоровская сложность и наши поиски смысла

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

Что математика может рассказать нам о поиске порядка в хаосе жизни




Была ли встреча с самым дорогим вам человеком случайной, или виной тому была какая-то скрытая причина? А что насчёт странного вчерашнего сна – это были только случайные метания синапсов мозга, или он раскрыл что-то глубокое по поводу вашего подсознания? Возможно, сон пытался рассказать вам что-то о вашем будущем. Возможно, что и нет. Имеет ли тот факт, что ваш близкий родственник заболел опасной разновидностью рака, какой-то глубокий смысл, или же это просто последствия случайных мутаций ДНК?

В нашей жизни мы часто задумываемся над закономерностями происходящих вокруг нас событий. Мы задаёмся вопросом, случайны ли наши жизни, или у них есть какой-то смысл, уникально истинный и глубокий. Я, как математик, часто обращаюсь к числам и теоремам за идеями по поводу подобных вопросов. И так получилось, что я кое-что узнал о поиске смысла в закономерностях жизни благодаря одной из самых глубоких теорем математической логики. Эта теорема, проще говоря, демонстрирует, что в принципе невозможно узнать, является ли объяснение закономерности наиболее глубоким или интересным из всех объяснений. Точно так же, как в жизни, поиск смысла в математике ничем не ограничен.
Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 25

Венгерский алгоритм, или о том, как математика помогает в распределении назначений

Время на прочтение 6 мин
Количество просмотров 59K
Привет, друзья! В этой статье хотел бы рассказать про интересный алгоритм из дисциплины «Исследование операций» а именно про Венгерский метод и как с его помощью решать задачи о назначениях. Немного затрону теории про то, в каких случаях и для каких задач применим данный алгоритм, поэтапно разберу его на мною выдуманном примере, и поделюсь своим скромным наброском кода его реализации на языке R. Приступим!

image
Читать дальше →
Всего голосов 21: ↑21 и ↓0 +21
Комментарии 21

Теория счастья. Проклятие режиссёра и проклятые принтеры

Время на прочтение 10 мин
Количество просмотров 13K
Продолжаю знакомить читателей Хабра с главами из своей книжки «Теория счастья» с подзаголовком «Математические основы законов подлости». Это ещё не изданная научно-популярная книжка, очень неформально рассказывающая о том, как математика позволяет с новой степенью осознанности взглянуть на мир и жизнь людей. Она для тех кому интересна наука и для тех, кому интересна жизнь. А поскольку жизнь наша сложна и, по большому счёту, непредсказуема, упор в книжке делается, в основном, на теорию вероятностей и математическую статистику. Здесь не доказываются теоремы и не даются основы науки, это ни в коем случае не учебник, а то, что называется recreational science. Но именно такой почти игровой подход позволяет развить интуицию, скрасить яркими примерами лекции для студентов и, наконец, объяснить нематематикам и нашим детям, что же такого интересного мы нашли в своей сухой науке.





Мы порассуждаем о цейтнотах, дедлайнах и о невовремя ломающихся принтерах.

Читать дальше →
Всего голосов 32: ↑32 и ↓0 +32
Комментарии 6

Титаны от математики схлестнулись над эпичным доказательством abc-гипотезы

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

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




В отчёте, опубликованном в сентябре 2018 в интернете, Петер Шольце из Боннского университета и Якоб Стикс из Университета имени Гёте во Франкфурте описали то, что Стикс называет «серьёзным и невосполнимым разрывом» в огромной серии объёмных работ Синъити Мотидзуки, знаменитого гениального математика из Киотского университета. Опубликованные в интернете в 2012 году работы Мотидзуки якобы доказывают abc-гипотезу, одну из наиболее далеко идущих задач в теории чисел.
Читать дальше →
Всего голосов 65: ↑62 и ↓3 +59
Комментарии 97

Символьное решение линейных дифференциальных уравнений и систем методом преобразований Лапласа c применением SymPy

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

Реализация алгоритмов на языке Python с использованием символьных вычислений очень удобна при решении задач математического моделирования объектов, заданных дифференциальными уравнениями. Для решения таких уравнений широко используются преобразования Лапласа, которые, говоря упрощенно, позволяют свести задачу к решению простейших алгебраических уравнений.

В данной публикации предлагаю рассмотреть функции прямого и обратного преобразования Лапласа из библиотеки SymPy, которые позволяют использовать метод Лапласа для решения дифференциальных уравнений и систем средствами Python.
Читать дальше →
Всего голосов 25: ↑25 и ↓0 +25
Комментарии 14

Теория счастья. Термодинамика классового неравенства

Время на прочтение 23 мин
Количество просмотров 32K
Продолжаю знакомить читателей Хабра с главами из своей книжки «Теория счастья» с подзаголовком «Математические основы законов подлости». Это ещё не изданная научно-популярная книжка, очень неформально рассказывающая о том, как математика позволяет с новой степенью осознанности взглянуть на мир и жизнь людей. Она для тех кому интересна наука и для тех, кому интересна жизнь. А поскольку жизнь наша сложна и, по большому счёту, непредсказуема, упор в книжке делается, в основном, на теорию вероятностей и математическую статистику. Здесь не доказываются теоремы и не даются основы науки, это ни в коем случае не учебник, а то, что называется recreational science. Но именно такой почти игровой подход позволяет развить интуицию, скрасить яркими примерами лекции для студентов и, наконец, объяснить нематематикам и нашим детям, что же такого интересного мы нашли в своей сухой науке.



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


Читать дальше →
Всего голосов 46: ↑43 и ↓3 +40
Комментарии 110

Решение проблемы обнаружения центральной линии сосуда

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

Суть задачи


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


Одна из задач врача — найти стенозы и оценить, насколько они опасны. Задача же разработчика, как обычно, облегчить работу конечного пользователя. Для этого необходимо построить полную 3D модель стенок сосуда и провести их первичный анализ. Это является большой и интересной задачей, однако, в её основе лежит более простая и известная проблема — построение центральной линии сосуда.
Читать дальше →
Всего голосов 43: ↑42 и ↓1 +41
Комментарии 15

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

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

В марте 2016 года Роберт Дж. Лемке-Оливер и Каннан Соундарараджан из Стэнфордского университета открыли новый шаблон в распределении простых чисел. Оказалось, что простые числа специфически распределяются по числовому пространству. Подробнее см. перевод статьи «Структура и случайность простых чисел» на Хабре.

К изучению темы подключились специалисты из других областей, в том числе химии. И успешно. Профессор теоретической химии Сальваторе Торкуато вместе с теоретиком чисел Мэтью де Курси-Айрлэнд нашли новые шаблоны в распределении простых чисел, о которых раньше не было известно. Оказалось, что распределение простых чисел образует фракталоподобную дифракционную картину, чем-то похожую на картину дифракции у экзотических квазикристаллов.
Читать дальше →
Всего голосов 64: ↑61 и ↓3 +58
Комментарии 56

Математическая модель фонемы человеческого голоса

Время на прочтение 3 мин
Количество просмотров 8.7K
Большинство современных систем распознавания речи человека основаны на методах, которые разбивают запись голоса на фонемы и анализируют их амплитудно-частотные характеристики с целью поиска фонем отдельных букв на основе классификации их по определенным наборам частотных характеристик. Такие методы рассматривают каждую фонему, как единую неделимую единицу звукового сигнала с квазистационарными частотными характеристиками. При таком подходе не учитываются характеристики фонемы, динамически изменяющиеся во времени.

image
Читать дальше →
Всего голосов 16: ↑11 и ↓5 +6
Комментарии 27

Laplace Blur — Можно ли блюрить Лапласом вместо Гаусса, во сколько раз это быстрее, и стоит ли того потеря 1/32 точности

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

«Блюр» в простонародье — эффект размытия, в цифровой обработке изображений. Бывает очень эффектен и сам по себе, и как составляющее анимаций интерфейса, или более сложных производных эффектов (bloom/focusBlur/motionBlur). При всем этом честный блюр в лоб довольно медленен. И часто реализации встроенные в целевую платформу оставляют желать лучшего. То скорость печальна, то артефакты режут глаза. Ситуация рождает множество компромиссных реализаций, лучше или хуже подходящих для определенных условий. Оригинальная реализация с хорошим качеством достоверности и высочайшей скоростью, при этом нижайшей зависимостью от аппаратной части ждет вас под катом. Приятного аппетита!
Читать дальше →
Всего голосов 41: ↑40 и ↓1 +39
Комментарии 36

Доказательство наличия мест, где симметрии не могут существовать

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

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



У решёток в высших измерениях симметрии не всегда можно перенести в измерения ниже рангом

Успех Роберта Циммера можно определить по-разному. В качестве президента Чикагского университета с 2006 года он попал в заголовки газет, находя девятизначные суммы для финансирования и публикуя статьи в поддержку свободы слова на кампусе. Но до того, как стать президентом университета, он был математиком. И спустя много времени после того, как он оставил серьёзные исследования, запущенный им исследовательский план, наконец, даёт свои результаты.
Читать дальше →
Всего голосов 31: ↑27 и ↓4 +23
Комментарии 3

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность