Всё про Алгоритмы и Структуры данных
Відкрити в Telegram
Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников. Ссылка: @Portal_v_IT Сотрудничество, авторские права: @oleginc, @tatiana_inc Канал на бирже: https://telega.in/c/structuredata
Показати більше7 761
Підписники
Немає даних24 години
-77 днів
-3530 день
Архів дописів
Простейшая реализация HashMap на Go
Всем доброго времени суток. Для начинающего программиста (коим я и являюсь) реализация базовых структур данных, по типу бинарных деревьев и связных списков, довольно легка. Чего не скажешь о хэш картах. В этой статье мы и разберём пример её реализации.
https://habr.com/ru/articles/688964/
Алгоритмы и Структуры данных
Децентрализованный поиск для свободного веба
Статья состоит из нескольких частей. В первых частях описаны необходимые для создания децентрализованного поиска и доступные в 2022 году библиотеки и технологии. В последней части техники соединяются в единую поисковую систему и описано как запустить такой поиск самостоятельно.
https://habr.com/ru/articles/690252/
Алгоритмы и Структуры данных
Кто же такой этот многорукий бандит?
Представьте на секунду, что вы очень азартный игрок, который только что попал в казино и не может выбрать, за какой игровой автомат ему сесть. Или один муравей из колонии, выбирающий по какому пути ему пойти на поиски пищи. Или даже вы – это целый маркетплейс, который думает, какую же цену, ему поставить на тот или иной товар!
На первый взгляд может показаться, что все эти странные ситуации никак не связаны. Но это только на первый взгляд. Если откинуть всю необычность ситуации, то перед нами дилемма исследования-использования. Посудите сами: как азартный игрок, вы хотите найти автомат, дающий больше всего денег – это использование, но вы не знаете, какой это автомат и ищите его, дергая ручки и сравнивая выигрыши – это исследование. Как часто вам нужно подходить к игровому автомату, который, по вашему мнению, самый прибыльный, а как часто нужно сомневаться в этом и пробовать другие? Как часто муравью нужно идти по тому пути, где товарищи-муравьи уже протоптали тропинку, а как часто стоит рискнуть и пойти своей дорогой? Как часто нужно менять цену, чтобы поспевать за инфляцией и спросом пользователей, а еще при этом максимизировать прибыль?
Откинем красивые слова и перед тем, как кинуться в море алгоритмов и сбора данных, и формально опишем нашу модель:
https://habr.com/ru/articles/689364/
Алгоритмы и Структуры данных
Способ представления числовых ключей для обратного поискового индекса
Хабр! Меня зовут Андрей Коваленко (Keva), я занимаюсь лингвистическими задачами и делаю поисковые движки. В МойОфис возглавляю разработку корпоративного полнотекстового поиска.
Существует две основные проблемы поиска численных значений в текстовых массивах (и массивах текстов).
Первая из них — многообразие способов представления одного и того же значения в тексте. Для одного и того же числа это может быть и 3600, и 3,600, и 3.6*10^3, и просто "три тысячи шестьсот". Решается это аккуратным прописыванием способов выделения таких объектов из текста.
Вторая проблема связана с поиском числовых интервалов.
Напомню, что, как правило, поисковые системы работают с так называемым обратным индексом, отличной метафорой которого будет алфавитный указатель в конце книги: все использованные термины приведены в нормальной форме и упорядочены лексикографически — проще говоря, по алфавиту, и после каждого указан номер страницы, на которой этот термин встречается. Разница только в том, что такая координатная информация в поисковиках, как правило, значительно подробнее. Например, корпоративный поиск МойОфис (рабочее название — baalbek), для каждого появления слова в документе хранит, кроме порядкового номера, ещё и его грамматическую форму и привязку к разметке.
https://habr.com/ru/companies/ncloudtech/articles/688230/
Алгоритмы и Структуры данных
Задача о рюкзаке. Простое решение, но где-то должен быть подвох
Продолжаю свой крестовый поход по NP-полным задачам. От судоку и латинских квадратов немного устал, потому давеча решил переключиться на что-то другое. Выбор пал на задачу о рюкзаке, которая звучит следующим образом, цитата из Вики.
https://habr.com/ru/articles/884708/
Алгоритмы и Структуры данных
SQL HowTo: подбираем значение ветвлением (Advent of Code 2024, Day 17: Chronospatial Computer)
В этой челлендж-серии статей попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2024.
Возможно, SQL не самый подходящий для этого язык, зато мы рассмотрим его различные возможности, о которых вы могли и не подозревать.
В этой задаче мы немного потренируемся подбирать коды с помощью ветвящейся рекурсии.
https://habr.com/ru/companies/tensor/articles/884522/
Алгоритмы и Структуры данных
Введение в многокритериальную оптимизацию, или как потерять чуть меньше денег на крипте
я Data Scientist и последние несколько месяцев я изучал применение методов многокритериальной оптимизации в машинном обучении. Сейчас хочу познакомить вас с этой интереснейшей задачей и показать довольно забавный пример её применения.
Я очень старался сделать статью максимально понятной для широкого круга читателей, но я довольно часто использую определение "Генетический алгоритм". Это интересная и полезная штука о которой можно почитать тут и посмотреть хороший курс Сергея Балакирева тут. Это облегчит восприятие статьи. Но в целом, генетические алгоритмы можно воспринимать, как просто чёрный ящик, который находит наименьшую точку любой функции.
https://habr.com/ru/articles/884426/
Алгоритмы и Структуры данных
Kotlin Coroutines под капотом: CoroutineContext и CoroutineScope
Structured Concurrency это одна из главных фишек Kotlin Coroutines, позволяющая оперировать иерархиями корутин через единый интерфейс, благодаря такой организации можно легко отменить сразу все корутины, имея ссылку только на самый высокоуровневый объект. В этой статье я разберу две базовые штуки на основе которых строится Structured Concurrency - CoroutineContext и CoroutineScope. Поехали!
https://habr.com/ru/articles/883588/
Алгоритмы и Структуры данных
B-Tree — сбалансированный куст поиска
Не знаю, одному мне так везёт, или нет, но буквально на каждом собеседовании на позицию BE разработчика я слышал и продолжаю слышать вопрос про индексы в реляционных СУБД. Затем речь часто заходит про "а что там под капотом?", и, как правило, сходу вспоминаются B-Tree и Hash, причём первый - это дефолт и собственно то, что мы чаще всего видим. Ну Hash это конечно Hash Map, да и с B-Tree по названию вроде всё логично и понятно: Tree в названии однозначно указывает на дерево, ну а В это, конечно, Binary? Или Balanced? Или Balanced Binary? Почему-то долгое время я полагал, что это Balanced Binary, и эта версия даже "прокатывала".
На самом деле Binary здесь, конечно, лишнее. B-Tree сбалансированное дерево поиска, но никак не бинарное. В статье я постараюсь привести базовую идею этой структуры, его преимущества и примеры использования. Для иллюстрации рассуждений также реализую Set с B-Tree под капотом на Java и сравню его с родным TreeSet (который в свою очередь "под капотом" имеет как раз таки бинарное Red-Black Tree).
https://habr.com/ru/articles/884232/
Алгоритмы и Структуры данных
Как уместить поиск по 30 тысячам слов в 64 КБ ОЗУ
Как уместить словарь размером 250 КБ в 64 КБ ОЗУ с возможностью выполнения быстрого поиска? Для справки: даже современные методики сжатия наподобие gzip -9 не могут сжать этот файл до размера меньше 85 КБ.
В 1970-х Дуглас Макилрой столкнулся с этой непростой задачей при реализации проверки правописания для Unix в AT&T. Из-за ограничений компьютера PDP-11 весь словарь должен был умещаться всего в 64 КБ ОЗУ. Кажется, подобную задачу решить невозможно.
Вместо того, чтобы использовать стандартные методики сжатия, Дуглас воспользовался преимуществами свойств данных, разработав алгоритм сжатия, превышавший теоретический минимум сжатия всего на 0,03 бита. И по сей день этот рекорд остаётся непревзойдённым.
История spell в Unix — это не только любопытный исторический факт. Это мастер-класс по проектированию в условиях жёстких ограничений: анализа первооснов задачи, применения математических наблюдений и проектирования изящных решений, работающих в условиях строгого дефицита ресурсов.
https://habr.com/ru/articles/882952/
Алгоритмы и Структуры данных
Алгоритм большинства голосов Бойера — Мура
Решал задачки на LeetCode и вот небольшой переводик небольшой статьи про небольшой алгоритм.
Алгоритм голосования Бойера-Мура является одним из самых популярных и оптимальных алгоритмов, который используется для поиска преобладающего элемента среди заданных, который имеет более N / 2 вхождений. Алгоритм выполняет 2 обхода по заданным элементам, что работает при O (N) временной сложности и O (1) пространственной сложности.
https://habr.com/ru/articles/689492/
Алгоритмы и Структуры данных
Судоку: моя попытка в новый алгоритм решения. Часть 2. Заполнение латинского квадрата
Итак, это продолжение моих попыток в новый алгоритм решения Судоку. Начало было тут, на текущий мой взгляд довольно глупое и неудачное.
Как известно, задача заполнения Судоку имеет большого родственника в виде задачи заполнения латинского квадрата. Если мы имеем некий латинский квадрат с аналогичным размером и наполнением, что и поле Судоку - то во множестве его наполнений будет и решение этого Судоку.
https://habr.com/ru/articles/883922/
Алгоритмы и Структуры данных
⚡️Слита База из 1000+ топовых курсов и материалов для айтишников
🖥 Python: @python_baza
👩💻 Frontend: @frontend_baza
👩💻 Backend: @backend_baza
🎨 Дизайн: @design_baza
📚 Книги: @archive_baza
👩💻 Все языки: @main_it_baza
Всё лучшее про IT бесплатно — уже на Базе 🚀
Визуализация алгоритмов сортировки
Эта статья посвящена созданию интерактивного приложения для визуализации алгоритмов сортировки. Надеюсь, многим из вас тема покажется интересной. Уверен, что вы успешно пройдёте через все этапы разработки и пополните свою копилку пет-проектов.
https://habr.com/ru/companies/domclick/articles/689064/
Алгоритмы и Структуры данных
Соревнование Data Fusion Contest 2025: покажи, что умеешь!
Стартует долгожданное соревнование в мире Data Science — Data Fusion Contest 2025! Общий призовой фонд — 3 000 000 рублей 🔥
Что тебя ждёт?
🚀 2 основные и одна образовательная задачи: «Label Craft» — про предсказание категории товаров, «4 Cast» — про предсказание динамики платежей на последующие 12 недель, и «Distribution».
🚀 Специальная номинация Companion за лучшие публичные решения, в которой победителей выбирает жюри на основе мнений других участников.
⏰ Даты проведения соревнования: с 13 февраля по 7 апреля 2025 года.
❗️ Формат — онлайн: участвовать можно из любой точки мира.
Церемония награждения пройдет в Москве на конференции DATA FUSION 2025.
Почему нужно участвовать? Три основных причины — это:
🛑 возможность прокачать скилы на практике и погрузиться в новые DS/ML-методы,
🛑 шанс сразиться с профессионалами отрасли,
🛑 твоё желание получить внушительный денежный приз.
Организаторы — ИТ-холдинг Т1 и ВТБ.
Хочешь попасть в число лучших? Регистрируйся по ссылке прямо сейчас!
Информация о рекламодателе
Фильтр Гаусса на стероидах: подход на точность вычислений
В прошлый раз мы рассказали, что для аппроксимации фильтра Гаусса можно использовать КИХ- или БИХ-фильтры, и успели познакомить читателей с тремя вариантами КИХ-фильтров. Но не спешите закрывать этот текст, если эти термины вам не знакомы! Достаточно понимать следующее: КИХ-фильтр формирует выходной сигналy[n], опираясь только на входные значенияx[n], тогда как БИХ-фильтр, помимоx[n], задействует также предыдущие значенияy[k], k < n.
По сути, все рассмотренные в первой части методы приближали гауссиану композициями полиномов 0-го или 1-го порядков, за счет чего были очень быстрыми. Сейчас мы рассмотрим более сложные варианты: полиномы 2-го порядка, БИХ-фильтры, а также способ вычисления свертки через преобразование Фурье. Мы сгруппировали их вместе по принципу скорости — они работают чуть дольше, но итоговое приближение получается на порядок точнее.
https://habr.com/ru/companies/smartengines/articles/883340/
Алгоритмы и Структуры данных
Калькулятор? Да его напишет кто угодно
Калькулятор должен показывать результат введённого математического выражения. А это намно-о-ого сложнее, чем кажется.
В этом посте я расскажу величайшую историю о разработке приложения-калькулятора.
https://habr.com/ru/articles/883366/
Алгоритмы и Структуры данных
Биткоин мертв, а крипта — пузырь
Такое мнение гуляет уже лет 10. За это время биткоин вырос с 5000₽ до 7.000.000₽.
А монетка Трампа взлетела за пару дней и увеличила кошельки в 50 раз.
А ведь суть крипты простая — купил дешево, продал дорого. Разницу в карман. А начинать можно хоть со 100 рублей. Главное знать, где и какую криптовалюту покупать.
CryptoTEX — тут автор простыми словами расскажет что такое крипта и как на ней зарабатывают, даст прогнозы и «доведет за ручку» любого до прибыли. И все это бесплатно.
Подпишись, время инвестировать в счастливое будущее: https://t.me/+hlfdAgej1w43YTY0
Компилятор за выходные: синтаксический анализатор Уорли
Изначально, когда я решил написать компилятор за выходные, я решил, что нет смысла заморачиваться, и использовал сторонний лексический / синтаксический анализатор. Мой выбор пал на SLY, довольно известную библиотеку. И действительно, пара часов работы, и мой компилятор прекрасно строил синтаксические деревья из исходного кода на wend. Я пытался было заглянуть под капот, утонул в море технических терминов (LL(1), LR, LALR(1) и тому подобное), и решил, что парсинг своими руками - это не для меня, теория формальных языков меня слабо интересует. Однако же в итоге выяснилось, что базовый синтаксический анализатор - это не так сложно, и я закатал рукава. В основном меня на это мотивировало две вещи:
https://habr.com/ru/articles/883390/
Алгоритмы и Структуры данных
⚡️ Промокод на поездку в Яндекс.Такси за 1 рубль
А еще годовой Плюс за 50р, Биг Спешл комбо во Вкусно-и-точка за отзыв и 10 доставок от Яндекса доступны на канале ЯМбические скидки.
‼️ Тут сотрудники Яндекса делятся промиками «для своих»
Скорее подписывайтесь, ведь самые крутые промокоды отрывают буквально с руками:
https://t.me/+c7_susNRLSY2MzJi
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
