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

Алгоритмы *

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

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

Во что вам обойдется конкурентная обработка. Иерархия проблем

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

Конкурентность сложно как следует наладить, как минимум, тем из нас, кому не повезло писать на языках, непосредственно открывающих нутро конкурентного аппаратного обеспечения: речь о потоках и разделяемой памяти. Не менее сложно организовать конкурентность так, чтобы она работала и правильно, и быстро. Все, что вы знаете об оптимизации однопоточного кода, зачастую вам не поможет. На микроуровне (отдельные инструкции) просто невозможно применить обычные правила, актуальные для μ-операций, цепочек зависимостей, пределов пропускной способности и т.д. При конкурентности правила другие.

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

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

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

Читать далее

Совершенный алгоритм. Основы

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

Книга "Совершенный алгоритм. Основы" Тима Рафгардена первая в серии из четырёх книг примерно одинакового размера. В сумме они примерно соответствуют часто цитируемой классике "Алгоритмы. Построение и анализ".

Читать далее

Кто круче rsync? Интересные алгоритмы для синхронизации данных

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

Тридж, автор rsync

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

Если без шуток, то все знают rsync — инструмент для быстрой синхронизации файлов и каталогов с минимальным трафиком, который пришёл на замену rcp и scp. В нём используется алгоритм со скользящим хешем, разработанный австралийским учёным, программистом и хакером Эндрю Триджеллом по кличке Тридж (на фото).

Алгоритм эффективный, но не оптимальный.
Читать дальше →

Покоряем высоты для велонавигатора 2ГИС

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

Привет, я Артём, ML-инженер. 26 мая 2ГИС зарелизил навигатор для велосипедов и самокатов, одна из его фич — график высот для построенного маршрута. Эта статья о том, как мы получаем этот график.

Читать далее

Java. Решение практических задач

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

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

В книге все разбито на "задачи". Они тут нескольких типов:

Читать далее

Ищем аномалии: доход, отношения и 10х-программисты

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

Вскоре после того как я, в сентябре 2013, начал вести блог (мне, студенту, тогда больше нечем было заняться), я поставил перед собой цель — писать по статье в неделю. В результате — со дня рождения моего блога и до того момента, когда я начал работать в Wave (тогда мне уже было чем заняться, в результате посты я выкладывал гораздо реже), я опубликовал примерно 150 материалов.

Результаты публикации этих 150 статей оказались очень и очень разными:

— Два поста оказались крайне успешными, добрались до главной страницы Hacker News (первый — о том, что произошло со всеми непрограммистами, второй — о читабельности, хакабельности и абстрагировании кода).

Дэн Луу, после того, как увидел второй из вышеупомянутых постов, подписался на мой блог и начал слать на Hacker News многие мои материалы. В результате ещё штук 5 статей стали довольно-таки популярными. Это привело к приходу в мой блог первой волны подписчиков, с которыми я не знаком лично. Плюс — это дало мне серьёзную мотивацию писать дальше. Я и Дэн, в итоге, стали хорошими друзьями.

— Примерно 95% оставшихся постов получились совершенно непримечательными.

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

Читать далее

Теория эволюции и работы мозга

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

Эволюция мозга (базовые предпосылки).

Существует тест Роршаха — надо назвать, что ты видишь в кляксе, в которой в принципе и увидеть ничего реального нельзя. Но то, что человек видит определяется необъяснимыми внутренними процессами в его мозге. Интерпретации ответов подобраны опытным путем и никак, и нигде не объяснены.

Из описания вариантов ответа к одной из картинок теста Роршаха для англоязычного пациента: «Медведь может символизировать агрессию, конкуренцию, независимость, восстановление, а также — чувство уязвимости, незащищенность или открытость и честность (игра слов по-английски: bear — медведь, bare — обнажать, обнаруживать, разоблачать).» Здесь прямым текстом сказано, что в мозге слова содержатся в виде текста, почему так вышло, будет объяснено в описании эволюции мозга. Мы можем запоминать и понимать текст без картинки (правила, определения, анекдоты — мы их не представляем, но понимаем).

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

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

Читать далее

Раз-два и в дамки: минимакс с альфа-бета отсечением

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

Дисклеймер: это моя первая статья на Хабре и я не программист.

Всем привет! Под катом небольшая история о том, как я делал свой первый, большой, самостоятельный (если его так можно назвать) "проект" – курсовую работу на тему "Игра в поддавки с компьютером". Если вам интересны алгоритмы для антагонистичесих игр, С# и особенности студенческой жизни – welcome!

Читать далее

Как написать средство проверки орфографии кхмерского языка

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

Материалом с подробностями о реализации средства проверки и исправления орфографии кхмерского языка, основного в Камбодже, делимся к старту флагманского курса по Data Science.

Читать далее

Подсчёт слов

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

В статье рассказывается о решении задачки с собеса в одну российскую IT-контору.

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

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

Читать далее

Открытые алгоритмы Твиттер, к чему это приведет?

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

Илон Маск заявил, что намерен открыть алгоритмы Twitter и превратить соц. сеть в модель с открытым исходным кодом. Если это произойдет, любой желающий сможет их изучать или использовать в своих целях. Мы (дата-сайнтисты из центра машинного обучения «Инфосистемы Джет») решили пофантазировать, какие возможности дает открытие алгоритмов. А у вас есть мнение на этот счет? Давайте попробуем предсказывать будущее! Присоединяйтесь к обсуждению в комментариях.

Интересно? Жми!

Алгоритмы на кристалле. Глава 1 (продолжение). Схемы простейших устройств

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


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

Предыдущие черновики:
… Примерное оглавление.
… Вычислительная модель.
… Быстродействие логических схем.

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

Распределенные Workflow на PHP. Часть 2

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

В первой, теоретической, части статьи мы разобрали зачем нужны Workflow, где они применяются и какие способы их реализации существуют. Наша компания занимается разработкой энтерпрайз-софта — для нас это больная тема. Поэтому мы давно искали инструмент, который позволит легко вписывать новые шаги в любую схему, не ломая существующую бизнес-логику. Нашли и на его основе сделали свою новую разработку. Теперь давайте перейдём к более практической части и разберем, на что способен Temporal PHP SDK.

Меня зовут Антон Титов. Я более 15 лет занимаюсь коммерческой разработкой. Являюсь соавтором Spiral Framework, RoadRunner и Cycle ORM. Основной стек: PHP и Golang.

Читать далее

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

Обучение с подкреплением: неформальное знакомство

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

Обучение с подкреплением (Reinforcement learning, RL) сыграло ключевую роль в стремительном развитии технологий искусственного интеллекта, которое можно было наблюдать в последнее десятилетие. В этом материале мы простыми словами расскажем о том, что такое обучение с подкреплением, поговорим о том, почему оно важно не только как объект исследований, но и как инструмент, который находит множество самых разных вариантов практического применения.

Читать далее

Общего между фракталами и голографией

Время на прочтение7 мин
Количество просмотров7.5K
Продолжим тему бильярдных фракталов.



В статье присутствуют Gif (трафик!) и контрастные картинки. У эпилептиков может случиться эпилептический припадок.
Читать дальше →

Коллективное распознавание смысла

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

Предлагаемый материал является приложением в книге [1].

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

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

Читать далее

Искусственный интеллект и безопасность. Ч1

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

В России 30 мая 2019 года на совещании по развитию цифровой экономики под председательством В. В. Путина было принято решение о подготовке национальной стратегии по искусственному интеллекту. В её рамках разрабатывается федеральная программа с выделением 90 млрд рублей. В октябре 2021 года в РФ подписан Кодекс этики искусственного интеллекта, разработанный с учетом требований Национальной стратегии развития искусственного интеллекта на период до 2030 года.

Читать далее

Алгебра текста без формул

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

Статья является рефератом Книги [1], основанной на представленных ранее публикациях [2], [3], [4] и [5].

Читать далее

Генерация лабиринтов: алгоритм Эллера

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

Привет, Хабр!

Сегодня я хотел бы рассказать о генерации идеального лабиринта - алгоритмом Эллера. Статья подойдёт всем любителям алгоритмов.

Читать далее

GPT-4 уже не за горами. Что мы о нём знаем

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

Возможно, вы помните, что о появлении GPT-3 объявили в мае 2020 года. Его запустили через год после GPT-2, который также появился спустя год после первой версии GPT. Если бы эта тенденция сохранялась, то GPT-4 уже был бы доступен. Увы, четвёртой версии мы пока не дождались. Но генеральный директор OpenAI Сэм Альтман недавно заявил, что GPT-4 на подходе. Некоторые эксперты полагают, что релиз состоится где-то в июле-августе 2022 года.

Удивительно то, что информации о GPT-4 очень мало. На что он будет похож, какие у этой модели особенности и возможности. Точно известно, что у GPT-4 не будет 100 триллионов параметров (т.е. в 500 раз больше, чем заложено в GPT-3). Для создания такой большой модели нужно больше времени.

Давайте попробуем разобраться, что ещё известно о четвёртом поколении алгоритма обработки естественного языка от OpenAI.

Читать далее

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