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

Ссылка: @Portal_v_IT

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

Канал на бирже: https://telega.in/c/structuredata
Download Telegram
Генерация лабиринтов с использованием алгоритма Recursive backtracker

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

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

Алгоритмы и Структуры данных
Есть проблемы гораздо сложнее, чем NP-Complete

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

В этом смысле можно вспомнить интеллектуально-фантастический триллер Travelling Salesman (Коммивояжёр, 2012) о четырёх математиках, нанятых правительством США для решения самой сложной проблемы в истории информатики — равенства классов сложности P и NP (P versus NP problem). И им это удалось. Чиновник министерства обороны США предлагает за их алгоритм вознаграждение $10 млн. Но сами математики слишком хорошо понимают, какие разрушительные последствия принесёт в мир их открытие. Один из лучших фильмов про математику в истории кинематографа…

https://habr.com/ru/companies/timeweb/articles/740100/

Алгоритмы и Структуры данных
Как я построил Graph RAG систему с точностью 96.7% за 5 дней: от научных статей до production-ready пайплайна

Я реализовал Graph RAG систему, которая комбинирует 5 техник из свежих научных статей в единый пайплайн с декларативным reasoning-движком, полной провенансной трассировкой и типизированным API. Результат: 174/180 (96.7%) на билингвальном бенчмарке из 30 вопросов, оценённых в 6 режимах retrieval. Три режима достигли 100%. Ноль persistent failures.

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

Алгоритмы и Структуры данных
Забыть про Backprop: Как я собрал «Термодинамический Мозг» с фазой сна и митозом, который влезет в Arduino

Мы (человечество) очень хотим создать разум. Инопланетян мы пока не нашли, поэтому пытаемся собрать его сами из кремния и электричества. Но то, куда свернула индустрия сегодня, вызывает вопросы. Мы греем планету мегаваттами энергии, перемножая гигантские матрицы в дата-центрах, чтобы обучить LLM. Backpropagation и современный инференс - это непозволительно дорого и энергозатратно.

А что если вернуться к истокам? Что если интеллект — это не градиентный спуск, а кристаллизация связей под давлением информации?

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

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

Алгоритмы и Структуры данных
Множество Мандельброта. 32-бит TrueColor. 60 FPS. 80-бит long double. OpenMP. Суперсэмплинг 2x2 (4 прохода). И цвета

Я хочу сказать. Это самая нужная вещь во Вселенной. Самая глубокое. И я сейчас за всю жизнь наконец стал писать код и сделал. Довольно сложное. И самое прекрасное. Скачайте и посмотрите! Это экзешник, в ГитХаб.

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

Алгоритмы и Структуры данных
Забыть про Backprop: Как я собрал «Термодинамический Мозг» с фазой сна и митозом, который влезет в Arduino

Мы (человечество) очень хотим создать разум. Инопланетян мы пока не нашли, поэтому пытаемся собрать его сами из кремния и электричества. Но то, куда свернула индустрия сегодня, вызывает вопросы. Мы греем планету мегаваттами энергии, перемножая гигантские матрицы в дата-центрах, чтобы обучить LLM. Backpropagation и современный инференс - это непозволительно дорого и энергозатратно.

А что если вернуться к истокам? Что если интеллект — это не градиентный спуск, а кристаллизация связей под давлением информации?

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

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

Алгоритмы и Структуры данных
2
Множество Мандельброта. 32-бит TrueColor. 60 FPS. 80-бит long double. OpenMP. Суперсэмплинг 2x2 (4 прохода). И цвета

Я хочу сказать. Это самая нужная вещь во Вселенной. Самая глубокое. И я сейчас за всю жизнь наконец стал писать код и сделал. Довольно сложное. И самое прекрасное. Скачайте и посмотрите! Это экзешник, в ГитХаб.

github: Download Latest Version Windows And Source code

"Но если дело в инсульте, то понятно. Может, стоит небольшой дисклеймер добавлять в начало статей, чтобы ни у кого не было повода после первых же строк минусовать. Инсульт у меня. Поэтому ИИ."

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

Алгоритмы и Структуры данных
Сравнение двух налоговых служб: ФНС России и IRS США

12 лет я отработал в ФНС России: начинал в районной инспекции и завершал карьеру в Управлении ФНС по субъекту. И довольно долго жил с ощущением, что «у нас налоги мягче», предпринимателю проще дышать, а где-то «там» всё устроено жестче и формальнее.

Но всё оказалось не так однозначно, как казалось изнутри системы. Теперь, находясь по другую сторону баррикад, я решил сравнить две налоговые системы: российскую ФНС и американскую IRS, и в итоге оказалось, что налоговое бремя, у нас в России, не такое уж низкое как преподносят в СМИ - оно просто иначе спрятано и иначе распределено. В России человек чаще всего видит только НДФЛ, но значительная часть нагрузки живёт «над зарплатой» - в страховых взносах работодателя, а затем догоняет нас в потреблении через НДС, который уже встроен в цену.

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

Так как тема очень большая, в этой статье я начну с фундамента - разберу архитектуру ФНС и IRS: как устроены уровни управления, где сосредоточены контроль и аналитика, а в следующей части сравню налоговую нагрузку двух стран на конкретных расчётах и покажу, где именно «прячется» налоговое бремя в России и США.

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

Алгоритмы и Структуры данных
SBER-MoVQGAN или новый эффективный Image Encoder для генеративных моделей

Вариационные автоэнкодеры в квантованном векторном пространстве стали довольно популярными в последние несколько лет и успешно применяются в широком спектре генеративных задач (Stable Diffusion, VQ Diffusion, VideoGPT и др.). VQVAE позволяет сжимать картинку в латентное пространство меньшей размерности, а затем восстанавливать это латентное представление изображения в RGB-состояние. Операции в латентном пространстве выполняются быстро, поэтому VQVAE получил широкое применение как в авторегрессионных мультимодальных архитектурах (DALLE, ruDALL-E, RUDOLPH), так и в диффузионных моделях (DALL-E 2, Kandinsky 2.1, Latent Diffusion). В первом случае вариационный автоэнкодер позволяет закодировать картинку в последовательность визуальных токенов, которые вместе с текстовыми токенами используются в обучении трансформера. Во втором случае VQVAE кодирует картинку в квантованное пространство малой размерности, позволяя выполнять диффузионный процесс в латентном пространстве (ввиду того, что диффузионный процесс является итеративным и скорость генерации напрямую зависит от числа шагов диффузии, вычислительная сложность каждого шага очень важна), который в сравнении с пиксельной диффузией выполняется быстрее и потребляет меньше памяти.

https://habr.com/ru/companies/sberbank/articles/740624/

Алгоритмы и Структуры данных
Об основах алгоритмов сортировки в иллюстрациях

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

Давайте начнем с азов. Что такое алгоритм? Мы собираемся многое о них узнать, так что должны для начала знать определение, правильно?

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

https://proglib.io/p/sorting-guide

Алгоритмы и Структуры данных
Применяем TLA+ на практике

Привет, Хабр! Меня зовут Сергей, я работают в компании InfoWatch разработчиком на продукте ARMA Стена (NGFW). Подробнее о том, что такое ARMA Стена, можно прочитать тут.

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

Сразу оговорюсь, что в статье используется TLA+, без введения в инструмент, чтобы не увеличивать объём статьи. Подробнее про инструмент вы можете почитать на сайте создателя, тут и тут. Необходимые объяснения даются по ходу изложения.

Статья состоит из двух частей:

1. Что такое формальная верификация и где она применятся
2. Решение бизнес-задачи в NGFW

https://habr.com/ru/companies/infowatch/articles/1003382/

Алгоритмы и Структуры данных
👍1
Повторяем профиль Телеграмма, используя Metaballs ит

Однажды я заметил, что на iOS с Dynamic Island у Telegram очень интересный эффект при сворачивании аватара в профиле. Если зайти в свой профиль и медленно скроллить вверх, аватар буквально втекает в Dynamic Island. Как мобильный разработчик, я заинтересовался, как это сделать.

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

Я разобрался, как это сделать — и понял, что скорее всего не одинок. Тем, кто задавался вопросом «как сделать как у Telegram» и столкнулся с теми же вопросами по шейдерам и алгоритму metaballs — эта статья для вас.

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

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

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

В этом посте я познакомлю вас с основами распределения памяти (memory allocation). Распределители памяти существуют, потому что иметь доступную память недостаточно, необходимо ещё и эффективно её использовать. Мы наглядно изучим, как работают простые распределители. Мы рассмотрим некоторые из задач, которые им необходимо решать, а также некоторые из методик, которыми они их решают. Прочитав этот пост, вы узнаете всё, что необходимо для написания собственного распределителя.

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

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

Лабиринты использовались в видеоиграх с момента их появления. Первой видеоигрой с процедурно генерируемым лабиринтом была Beneath Apple Manor, выпущенная в 1978 году. Лабиринт в ней генерировался методом деления на комнаты и коридоры, из-за этого лабиринт часто выглядел однообразным и предсказуемым, что портило впечатление от игры. Для того, чтобы лабиринт выглядел естественнее разработчики стали использовать различные алгоритмы на графах. В этой статье мы рассмотрим реализации генерации идеального лабиринта с помощью алгоритма Прима.

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

Алгоритмы и Структуры данных
Дообучение модели машинного перевода

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

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

Алгоритмы и Структуры данных
Внутреннее устройство DRBD: алгоритмы работы отказоустойчивого хранилища

Глубокое понимание внутреннего устройства DRBD позволяет более тонко настраивать работу системы и правильно планировать ресурсы. К счастью, у команды DRBD уже есть отличная документация, которая довольно подробно разбирает эту тему. Мы опирались на нее в своей работе, и решили перевести и выложить в открытом доступе 17-ю главу — как удобную шпаргалку по внутреннему устройству DRBD. Так что это не обычная статья, а перевод части официальной документации (исходная нумерация разделов сохранена).


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

https://habr.com/ru/companies/flant/articles/733770/

Алгоритмы и Структуры данных
Что делает ChatGPT… и почему это работает?

То, что ChatGPT может автоматически генерировать что‑то, что хотя бы на первый взгляд похоже на написанный человеком текст, удивительно и неожиданно. Но как он это делает? И почему это работает? Цель этой статьи — дать приблизительное описание того, что происходит внутри ChatGPT, а затем исследовать, почему он может так хорошо справляться с созданием более‑менее осмысленного текста. С самого начала я должен сказать, что собираюсь сосредоточиться на общей картине происходящего, и хотя я упомяну некоторые инженерные детали, но не буду глубоко в них вникать. (Примеры в статье применимы как к другим современным «большим языковым моделям» (LLM), так и к ChatGPT).

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

Алгоритмы и Структуры данных
1
Как дата саинтист имиджборду писал

На дворе конец 2023. Я только что уволился из Яндекса и скучаю по ячану, чуть меньше скучаю по этушке, вообще не скучаю по таскам, дедлайнам, ревью. Чтобы заполнить возникший информационный вакуум, пробую переключиться на реддит, hacker news, пикабу, вышивание крестиком, сканворды, пилатес — не то. Тогда мне в голову приходит гениальная идея: а почему бы не сделать свою имиджборду с авторизацией по корпоративной почте крупных российских компаний? Ячан для всех!

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

Алгоритмы и Структуры данных
Почему ReAct-агенты ломаются в продакшене и чем их заменить

Приветствую читателей.
Мы пытались построить LLM-чат для продакшена.
Через месяц у нас был 20k-токенный prompt, 50 тулзов и ответы по 2 минуты.
В итоге пришлось отказаться от ReAct и перейти на LLMCompiler.

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

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

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

Алгоритмы и Структуры данных
Решаем задачу сетевого планирования с помощью Python

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

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

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