Всё про Алгоритмы и Структуры данных
7.76K subscribers
345 photos
37 videos
5 files
3.16K links
Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников.

Ссылка: @Portal_v_IT

Сотрудничество, авторские права: @oleginc, @tatiana_inc

Канал на бирже: https://telega.in/c/structuredata
Download Telegram
Алгоритмы для веб-разработчиков простыми словами (часть 3)

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

И сегодня мы узнаем, как устроена рекурсия, а также разберем алгоритм сортировки массива под названием Quick Sort или, как еще его называют, быстрая сортировка Хоара. Как вы уже догадались, этот алгоритм рекурсивный.

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

Ссылку на вторую статью (про алгоритмы сортировки и оценку сложности алгоритмов по скорости и памяти) вы можете найти здесь.

А сейчас давайте перейдем к теме статьи.

https://habr.com/ru/companies/gnivc/articles/696054/

Алгоритмы и Структуры данных
Как стиральная машина управляет двигателем. Часть I — подключение двигателя и алгоритм стабилизации

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

https://habr.com/ru/articles/694892/

Алгоритмы и Структуры данных
👍1
Ни одна реализация элементарных функций не соответствует стандарту IEEE 754

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

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

Моя работа в течение последнего года заключалась в анализе погрешности различных математических функций, накопления этой погрешности и способов её уменьшения при помощи различных программных паттернов. Одной из исследованных мной тем были базовые математические функции, используемые в функциях активации нейронных сетей, а также способы их аппроксимации для повышения производительности. В процессе работы нам пришлось столкнуться с противодействием со стороны людей, активно стремящихся к корректной реализации математических функций и к соответствию их стандартам, в частности, к соблюдению обеспечения корректности одной наименее значимой единицы измерения (unit in last place, ULP) для элементарных функций.

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

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

https://habr.com/ru/companies/ruvds/articles/881698/

Алгоритмы и Структуры данных
Как MLOps помогает обеспечить гибкость машинного обучения и стимулирует инновации

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

https://habr.com/ru/companies/vk/articles/713182/

Алгоритмы и Структуры данных
Создаём свою библиотеку виджетов на Javascript голыми руками. Часть 0: Классы и модули

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

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

https://habr.com/ru/articles/690852/

Алгоритмы и Структуры данных
SQL HowTo: укрощаем рекурсию в лабиринте (Advent of Code 2024, Day 16: Reindeer Maze)

В этой челлендж-серии статей попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2024.

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

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

https://habr.com/ru/companies/tensor/articles/882034/

Алгоритмы и Структуры данных
Несудьба, интегрально-ролевая система

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

https://habr.com/ru/articles/882258/

Алгоритмы и Структуры данных
Как устроены алгоритмы онлайн-кинотеатра. Разбираем на примере

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

https://habr.com/ru/articles/882000/

Алгоритмы и Структуры данных
5 способов нарисовать обводку

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

https://habr.com/ru/articles/879788/

Алгоритмы и Структуры данных
Обзор постквантовых криптостандартов США со схемами и комментариями

Поскольку принятие стандартов на постквантовые криптоалгоритмы можно считать весьма значительным событием в сфере асимметричной криптографии, а также принимая во внимание предполагаемый переход с традиционных на вышеупомянутые стандарты на горизонте в несколько лет (причем не только в США, но и в той значительной части мира, которая ориентируется на стандарты США), предлагаю вашему вниманию в данной статье описание (помимо описаний, я попытался схематично изобразить основные преобразования – под катом много схем с пояснениями) алгоритмов, на которых основаны постквантовые криптостандарты США, а также краткое обсуждение ближайших перспектив выхода новых стандартов на постквантовые криптоалгоритмы и рекомендаций по переходу с традиционных криптографических алгоритмов на постквантовые. Перечень текущих стандартов и рекомендаций NIST в части асимметричной криптографии со ссылками на их официальные публикации приведен в списке литературы к данной статье.

https://habr.com/ru/companies/aktiv-company/articles/882490/

Алгоритмы и Структуры данных
Открытые книги по ML и работе с данными

Мы регулярно публикуем подборки литературы для специалистов: делали дайджест книг для желающих поближе познакомиться с Postgres и Kubernetes. Сегодня на очереди справочники и пособия по машинному обучению, которые можно найти в открытом доступе. Эти материалы помогут погрузиться в ML, разобраться в базовых математических концепциях, понять тренды опенсорсных технологий для систем ИИ и перейти к работе с ML-платформой.

https://habr.com/ru/companies/mws/articles/872230/

Алгоритмы и Структуры данных
Боль ML-проектов: как перестать ее чувствовать и начать доходить до прода

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

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

https://habr.com/ru/companies/tbank/articles/713210/

Алгоритмы и Структуры данных
Когда и как следует инвалидировать кэш

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

https://habr.com/ru/companies/piter/articles/690764/

Алгоритмы и Структуры данных
Выразить иерархически: вопрос как увидеть хамелеона

Проблема нейросетей - невозможность обучаться на единичных примерах. Справиться может табличное RL, но обучаться на данных большой размерности - иная неразрешимая сторона этой парадигмы https://habr.com/ru/post/437020/. Решение только в одном: видеть мир иерархически, где каждая его подчасть также может быть выражена иерархически.

https://habr.com/ru/articles/690518/

Алгоритмы и Структуры данных
Алгоритмы сортировки и их производительность

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

https://habr.com/ru/articles/689738/

Алгоритмы и Структуры данных
Смогу ли я уложить оптимизирующий компилятор в тысячу строк питона? Прогон первый: mem2reg

Год назад мне пришлось взять на себя курс лекций по теории компиляторов. Вы встречались некомпетентными преподавателями? Это я, здравствуйте! Прежде чем учить других, я всё-таки решил заглянуть в учебник сам, и это вылилось в серию статей "компилятор за выходные" (да, я помню, что за мной должок с описанием лексера/парсера). В итоге я уложил компилятор со мной придуманного си-подобного языка на GNU ассемблер в шестьсот строк кода, причём без внешних зависимостей, включая парсинг.

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

Итак, тема сегодняшнего разговора - вынос переменных из памяти в регистры, оно же оптимизационный проход mem2reg, см. кпдв.

https://habr.com/ru/articles/881192/

Алгоритмы и Структуры данных
Как полюбить задачи регрессии


У
задач классификации, в отличие от задач регрессии, есть одно очень приятное свойство:
большинство ML алгоритмов решения задач классификации выдают не просто ответ, а некоторую оценку уверенности модели в ответе. То есть помимо метрик самой модели мы обладаем оценкой вероятности для конкретного ответа на конкретном примере. Это здорово помогает в принятии решений.

Неправда ли хотелось бы иметь что-то такое и для задач регрессии?

https://habr.com/ru/articles/689338/

Алгоритмы и Структуры данных
AStar Pathfinding для агентов различного размера с использованием пространственного хэширования

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

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

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

Данный пробел я постараюсь восполнить в рамках этой статьи.

https://habr.com/ru/articles/883210/

Алгоритмы и Структуры данных
Сгенерировать 100 млн случайных строк менее чем за минуту

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

https://habr.com/ru/companies/alfa/articles/883226/

Алгоритмы и Структуры данных
1
Компилятор за выходные: синтаксический анализатор Уорли

Изначально, когда я решил написать компилятор за выходные, я решил, что нет смысла заморачиваться, и использовал сторонний лексический / синтаксический анализатор. Мой выбор пал на SLY, довольно известную библиотеку. И действительно, пара часов работы, и мой компилятор прекрасно строил синтаксические деревья из исходного кода на wend. Я пытался было заглянуть под капот, утонул в море технических терминов (LL(1), LR, LALR(1) и тому подобное), и решил, что парсинг своими руками - это не для меня, теория формальных языков меня слабо интересует. Однако же в итоге выяснилось, что базовый синтаксический анализатор - это не так сложно, и я закатал рукава. В основном меня на это мотивировало две вещи:

https://habr.com/ru/articles/883390/

Алгоритмы и Структуры данных
Калькулятор? Да его напишет кто угодно

Калькулятор должен показывать результат введённого математического выражения. А это намно-о-ого сложнее, чем кажется.

В этом посте я расскажу величайшую историю о разработке приложения-калькулятора.

https://habr.com/ru/articles/883366/

Алгоритмы и Структуры данных