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

Ссылка: @Portal_v_IT

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

Канал на бирже: https://telega.in/c/structuredata
Download Telegram
Поможем Ходору найти новых друзей с помощью графов

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

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

Алгоритмы и Структуры данных | ChatGPT
Удивительная история развития сортировки в JDK

Как вы считаете, если выполнить java.util.Arrays.sort(), то какая сортировка будет вызвана? Quicksort? Timsort? И та, и другая, потому что для объектов вызывается Timsort, а для примитивов (чисел int, long, float и так далее) — Dual-Pivot Quicksort. В JDK 6 для объектов использовался стандартный Merge sort, а для чисел классическая реализация Quicksort с одним опорным элементом, предложенная Джоном Бентли и Дугласом МакИлрой. В JDK 7 оба алгоритма поменялись: теперь объекты сортируются с помощью Timsort, автор Тим Петерс, а для простых типов данных используется Dual-Pivot Quicksort, предложенный мною вместе с Джоном Бентли и Джошем Блоком в 2009 году. Эта сортировка используется более 15 лет не только в JDK, но и в Android (хотя и немного устаревшая версия).

А зачем нам вообще второй алгоритм сортировки, если есть Timsort? Почему не использовать один и для объектов, и для примитивов? Сегодня я, как автор, расскажу историю Dual-Pivot Quicksort: как он начинался, как развивался и как продолжает развиваться сейчас.

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

Алгоритмы и Структуры данных | ChatGPT
Алгоритм управления доставкой по расписанию и динамичесий прайсинг. Как мы сделали это в Купере

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

https://habr.com/ru/companies/kuper/articles/841034/

Алгоритмы и Структуры данных | ChatGPT
Вложенные тексты как возможность для композиции (разделения на части) в длинных текстах (so10; sapscript text)

В
SAP NetWeaver есть функционал для использования длинных текстов (более 100 символов и даже более 1000 😊). более технически корректное название sapscript text или, иногда, стандартные тексты.

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

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

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

Алгоритмы и Структуры данных | ChatGPT
Булевы операции двумерных тел

В детстве меня всегда завараживали игры с динамическим ландшафтом: The Castle и Worms Armageddon. В то время я не понимал, как реализована эта удивительная механика разрушения и изменения мира. Позже я узнал, что секрет заключался в использовании растровой графики, но мне было интересно как реализовать тоже самое не прибегая к растру. В этой статье я хочу рассказать об одном из таких векторных решений.

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

Алгоритмы и Структуры данных | ChatGPT
Считаем медиану быстрее numpy

Уважаемые коллеги! Вашему вниманию предлагается небольшой "этюд выходного дня", посвящённый несколько, скажем так, нетрадиционному способу вычисления медианы массива значений с плавающей точкой. Вкратце — мы сделаем это в несколько проходов по исходному массиву (два для одинарной точности или четыре для двойной), вычисляя медианы по словам, начиная с более значащих, пользуясь при этом только целочисленной арифметикой, что даст возможность в некоторых случаях несколько обогнать по скорости "традиционные" классические алгоритмы. Возможно данная "зарисовка" как идея окажется кому-нибудь полезна.

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

Алгоритмы и Структуры данных | ChatGPT
Кратчайший путь с одним источником во взвешенных графах, Алгоритм Дейкстры и Python

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

https://habr.com/ru/companies/otus/articles/771016/

Алгоритмы и Структуры данных | ChatGPT
👍1
Как мы французскому ПО ценности добавляли, но нас не оценили

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

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

Алгоритмы и Структуры данных | ChatGPT
Нейронные оптимизаторы запросов в реляционных БД (Часть 1)

В 1970-х годах известный программист Эдгар Кодд разработал математически выверенную теорию организации данных в виде таблиц (реляций). С тех пор утекло немало воды — появилось большое количество различных коммерческих и open-source реляционных систем управления базами данных (РСУБД). Скоро стало понятно, что эффективное получение данных из базы — задача далеко не тривиальная. Если говорить прямо, она нелинейная и в общем случае NP-сложная.

https://habr.com/ru/companies/postgrespro/articles/841918/

Алгоритмы и Структуры данных | ChatGPT
👍1
Поиск пересечений между отрезком и прямой или прямой и прямой в трехмерном пространстве

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

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

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

Алгоритмы и Структуры данных | ChatGPT
Компиляция математического выражение из строки динамически во время выполнения в C# (.NET)

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

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

Алгоритмы и Структуры данных | ChatGPT
Изобретаю свой сложный способ поиска координат точки пересечения двух линий

Вы, возможно, скажете, что нет тут ничего сложного, открываешь Википедию: пересечение прямых и смотришь. Хм, даже на Хабр об этом уже писали: Нахождение точки пересечения двух прямых (и отрезков). Но не всё так однозначно... недаром на КДПВ изображена Земля. Интересует меня именно пересечение прямых не на плоскости, а на поверхности Земли. Если уж пошла такая пьянка, то прямые вовсе не прямые, а ортодромия. Об этом тоже писали на Хабре и не раз, например вот: Занимательная геодезия.

В общем, Земля у нас не плоская! Была бы плоская, уже бы закончили статью и не мучились, и не начинали бы.

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

Алгоритмы и Структуры данных | ChatGPT
👍1
Решаем загадку Джиндоша из Dishonored 2 на SQL перебором с возвратом

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

Сегодня мы рассмотрим решение непростой загадки Джиндоша из замечательной игры Dishonored 2 с помощью SQL.

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

Алгоритмы и Структуры данных | ChatGPT
Жизнь, смерть и ̶р̶о̶б̶о̶т̶ы̶ управление ресурсами в Scala

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

В новой статье директор департамента разработки компании «Криптонит» Алексей Шуксто рассказал об интересных особенностях управления жизненным циклом объектов в Scala и Java разных версий. С необходимостью вникать в эту внутреннюю кухню сталкиваются все, кто использует в своих программах потоки, подключения к БД и другим сторонним сервисам, анализирует метрики, обрабатывает исключения… все, кто пишет что-то сложнее «Hello World!» и хочет добиться предсказуемого результата.

https://habr.com/ru/companies/kryptonite/articles/842332/

Алгоритмы и Структуры данных | ChatGPT
👍1🔥1
Раскрываем секреты роя: оптимизация на Python с помощью PSO

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

https://habr.com/ru/companies/bothub/articles/842006/

Алгоритмы и Структуры данных | ChatGPT
👍1
ML-подход к заблаговременному предотвращению оттока рекламодателей

В этом материале мы опишем систему для заблаговременного предотвращения оттока рекламодателей, основанную на машинном обучении (ML, Machine Learning). Прототип системы создан на основе данных организаций малого и среднего бизнеса (Small & Medium Business, SMB), с которыми работает Pinterest. Результаты изначального эксперимента говорят о том, что мы, с высокой вероятностью, можем обнаруживать возможный уход рекламодателей. Это, в свою очередь, способно помочь нашим торговым партнёрам. Система, подобная нашей, может достичь лучших результатов, чем обычный подход, когда пытаются вернуть уже ушедшего клиента.

https://habr.com/ru/companies/wunderfund/articles/842274/

Алгоритмы и Структуры данных | ChatGPT
👍1
Подводные камни устройства карты видимости в СУБД PostgreSQL

Карта видимости - это достаточно простой механизм в СУБД PostgreSQL, но даже он имеет множество интересных тайн, если погрузиться в детали реализации.

В этой статье мы выясним:
1.Какие особенности есть у механизма сбрасывания и установки бита полной видимости.
2.Как Index only scan использует бит полной видимости.
3.Зачем записывать информацию об изменении карты видимости в WAL.
4.Каким образом карта видимости участвует в оптимизации предвыборки Bitmap scan.
5.Зачем механизму оценки селективности нужна карта видимости.

Все тесты, представленные в данной статье, были выполнены в PostgreSQL REL_17_STABLE.

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

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

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

https://habr.com/ru/companies/samsung/articles/842578/

Алгоритмы и Структуры данных | ChatGPT
Умножение матриц и SMT – почему бы и нет?

Как-то раз у меня возникла непреодолимая потребность умножать матрицы определенного размера, смотреть, что получится и умножать опять до тех пор, пока что-нибудь не получится. =) Дело, как я понял после знакомства с литературой, любимое многими.

Остановился на BLIS, скомпилировал, подключил, и было мне счастье. Матрицы стали подрастать в числе и размере, скорость процесса, как ей и положено, падала в кубе от размера и кратно от числа. В конце концов стало ощущаться, что на ЦПУ 486,4 GFLOPS и ни флопсом больше, а замеры показывали, что на самом деле их около 350. Оно бы и ладно, но и на одном треде их было не больше 107. Стало интересно, куда пропадают остальные. Наибольшую ясность в вопрос внесла статья «Умножение матриц: эффективная реализация шаг за шагом» , после которой стало более понятно, что происходит внутри библиотеки. Так совпало, что мой процессор похож на используемый в ней, и пальцы зачесались что-нибудь улучшить.

https://habr.com/ru/companies/runity/articles/842740/

Алгоритмы и Структуры данных | ChatGPT
FREED++. Ускоряем поиск новых лекарств с помощью нейросетей

Не так давно наша научная группа воспроизвела, тщательно исследовала и существенно улучшила FREED. Мы представим свои результаты в журнале TMLR, статья доступна на архиве. Здесь же я кратко расскажу про сам FREED и его проблемы, а также суть наших исправлений этого подхода.

https://habr.com/ru/companies/airi/articles/842534/

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