ru
Feedback
Всё про Алгоритмы и Структуры данных

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

Открыть в Telegram

Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников. Ссылка: @Portal_v_IT Сотрудничество, авторские права: @oleginc, @tatiana_inc Канал на бирже: https://telega.in/c/structuredata

Больше
7 757
Подписчики
-224 часа
-57 дней
-2830 день
Архив постов
Выберите высокооплачиваемую IT-профессию и участвуйте в розыгрыше 200 000 рублей на обучение. IT-рентген от онлайн-школы Skil
Выберите высокооплачиваемую IT-профессию и участвуйте в розыгрыше 200 000 рублей на обучение. IT-рентген от онлайн-школы Skillfactory — это бесплатный вебинар, на котором вы пройдете тест на профориентацию, получите 6 гайдов по IT-направлениям. А еще встретитесь с экспертами, которые проведут карьерную консультацию. В итоге определитесь с профессией и попадете в закрытое сообщество специалистов из индустрии. Регистрируйтесь на бесплатный вебинар прямо сейчас и станьте участником розыгрыша 200 000 рублей на обучение.

Экспериментальная сортировка тернарным деревом Когда-то меня заинтересовал такой вопрос: почему все самые лучшие сортировки, основанные на сравнениях, имеют асимптотику O(N log N). И почему тут логарифм двоичный? Можно ли создать сортировку, у которой асимптотика будет лучше в самом худшем случае? Я решил провести довольно любопытный эксперимент. В википедии написано, что двоичность логарифма связана с тем, что результатом операции сравнения двух элементов может быть один из двух вариантов. И если в ходе работы алгоритма совершается k сравнений, то всего возможно 2^k вариантов комбинаций ответов на них. Количество перестановок из n элементов равно n! Для того, чтобы можно было сюръективно отобразить множество комбинаций ответов на множество всех перестановок, количество сравнений должно быть не меньше, чем log_2 n!, поскольку сравнение — единственная разрешённая операция. Так дословно гласит электронная энциклопедия. Однако ведь результат сравнения принимает 3 варианта: больше, меньше или равно. Тогда должно быть возможно 3^k вариантов комбинаций ответов на них при k сравнений. Может быть логарифм двоичный потому, что мы всегда сравниваем только два элемента за раз (попарно)? Тоже не так! Как показали мои эксперименты, это условие необходимое, но не достаточное. Нам нужно еще отказаться от бинарного дерева в сторону тернарного! https://habr.com/ru/articles/796405/ Алгоритмы и Структуры данных

ИИ в 3D: Где мы сейчас и какое будущее нас ждёт? (Часть 2) В предыдущей статье мы уже затрагивали задачу реконструкции 3D-объектов по их 2D-изображениям. В этой же углубимся в реконструкцию с головой! Вообще говоря, как мне кажется, сейчас мы рассмотрим гораздо более концептуально интересные методы, а именно - HSP и Mesh R-CNN. Это база, которая просто должна осесть в головах всех любителей ИИ в 3D! https://habr.com/ru/articles/790560/ Алгоритмы и Структуры данных

Если у вас есть хоть 1 банковская карта — можете смело сломать ее пополам Горько признавать, но 97% людей используют карты то
Если у вас есть хоть 1 банковская карта — можете смело сломать ее пополам Горько признавать, но 97% людей используют карты только ради покупок. И даже не подозревают, что можно: обнулить любой кредит, получить льготную ипотеку и спокойно жить на кешбэках «Хитрые» сотрудники банков не говорят о скрытых функциях и молчат про халявные условия. Но есть канал — Беспощадный банкстер, где раскрывают все карты Загляните и до конца жизни сможете законно брать кредиты под 0%, навсегда уберёте с карт все списания и комиссии, поставите себе 10-процентный кэшбэк НА ВСЁ. Вот ссылка — @bezposhady

PQ3, Apple’s New iMessage Security Protocol: что нового? Хоть убейте, не нашёл отличий. Впервые увидел на Коде Дурова, там, как обычно, не дали подробностей. Ключи используются от устройств, ну и что? Сейчас не также? Также. Приватный ключ здесь, публичный остальным, приватный никому не показываем. Всё, пошло поехало. Но это же Apple! Не может всё так быть просто. Окей, ищу дальше, натыкаюсь на securitylab, там уже побольше подробностей: Примечательно, что каждое устройство в системе iMessage генерирует уникальный набор ключей шифрования, а приватные ключи никогда не покидают устройство. Протокол предусматривает регулярную замену публичных ключей на новые, усиливая тем самым защиту данных пользователя. PQ3 использует уникальный подход к шифрованию каждого сообщения, вводя новую энтропию, что делает невозможным детерминированное восстановление ключей из текущего состояния беседы. Это обеспечивает, так называемые, самовосстанавливающиеся свойства протокола. https://habr.com/ru/articles/796065/ Алгоритмы и Структуры данных

Когда в первый рабочий день джуном смотришь на свои задачи… Человек прошел обучение, отбор посредством собеседования, имеет багаж знаний. После освоения навыков, набравшись практики (в наши дни стать junior-разработчиокм без практики нереально) добравшись до цели в виде трудоустройства. Не успев толком продышаться сразу сталкивается с такой вещью как бизнес процессы. Пытается понять что от него хотят коллеги по работе и как тут вообще все устроено. Он чувствует растерянность. Но тут стоит оговориться что бизнес это конкурентная среда. Там всем приходится непросто. Смотрите: программист это ремесленник, инструмент которым он пользуется сложный и не понятный - это его собственный мозг. Своим мозгом он обслуживает бизнес процессы. Решает задачи за счет которых приложение работодателя остается в рабочем состоянии и развиваются с точки зрения прибыли. Поток этих задач такой, что нет времени плавно погружаться в процесс, надо срочно в бой. Если вы не знакомы с программированием, взгляните на примеры кода и вы примерно ощутите тоже самое что junior-разработчик в свой первый рабочий день. Если ИТ вас заинтересовало С мемом вроде понятно, но раз мы на Хабре, давайте копнем глубже. Представим что junior-разработчик чувствует после того как открывает книгу на 900 страниц что-бы разобраться в PHP (к слову пропорционально количеству вкладок в браузере). Думаю ощущения эти мягко говоря так себе. Открывать все это он вынужден по причине огромного количества языковых конструкций в проекте. За неимением опыта разработчику тяжело погрузиться в уже выстроенную работу с языком. И давайте поговорим зачем вообще нужно понимать что делает код. https://habr.com/ru/articles/796047/ Алгоритмы и Структуры данных

Станьте IT-специалистом с зарплатой от 100 000 рублей бесплатно 👉 Только в феврале GeekBrains дарит 3 недельное обучение на профессию Python разработчика бесплатно. Записавшись на обучение, вы получите не только технические знания, но и возможность войти в профессию с высоким спросом и перспективами для карьерного роста. Не упустите шанс начать свой путь в IT с поддержкой опытных преподавателей и располагающей обучающей средой. Зарегистрируйтесь сейчас и получите бонусом карьерную консультацию. Реклама. Информация о рекламодателе по ссылкам в посте.

Переворачивающиеся при умножении числа Расскажу о серии задач, которая случайно возникла в процессе решения другой задачи. Мне на глаза попалось равенство: 81 * 27 = 2187 – Интересно, – подумал я. – А бывают ли ещё такие числа, чтобы цифры слева и справа повторялись? Всего нашлось 7 двузначных пар, включая одну с теми же цифрами: 15 * 93 = 1395 21 * 60 = 1260 21 * 87 = 1827 27 * 81 = 2187 30 * 51 = 1530 35 * 41 = 1435 80 * 86 = 6880 Затем я решил посчитать, сколько пар n-значных чисел удовлетворяют этому свойству: набор цифр и количество повторений каждой из них слева и справа от знака "равно" совпадают. Заметим, что произведение двух n-значных чисел может иметь как 2n-1, так и 2n знаков. (Можно вычислить, что доля пар n-значных чисел, для которых в произведении 2n знаков составляет примерно 82,7%). Для небольших значений n я получил результат с помощью программы на Питоне. Алгоритм очень простой - берём все пары чисел, переводим в десятичное представление и сравниваем наборы цифр в паре чисел и в их произведении. На вычисление количества пар для n=5 ушло более 3 часов. Переписав на С++, на вычисление ушло 25 минут, но т.к. следующее значение требует рассмотрение в 100 раз больше пар, то ждать так долго не хотелось. https://habr.com/ru/articles/795935/ Алгоритмы и Структуры данных

Интерактивная диаграмма Ганта для тысяч работ В этой статье будут рассмотрены следующие проблемы: Наши пользователи хотят отображать на диаграмме 1, 3, 5, а то и 10 тысяч работ. На диаграмме работы должны быть отсортированы, при этом у некоторых имеются вложенные работы, т.е. у работы с номером '1.' может быть работа с номером '1.1.'. Работа с номером '1.1.' должна идти перед работой с номером '2.', и в то же время работа с номером '11.' должна идти после работы '2'. Лексикографическая сортировка здесь не подходит. Данные в БД изначально не отсортированы (удовлетворяют 1NF). Пользователи хотят сворачивать вложенные работы. Если есть работа с номером '1.' с 1e3 вложенных работ, и пользователь её скрывает, он должен незамедлительно увидеть сразу после неё работу '2'. Далее максимум внимания уделен архитектурным и алгоритмическим решениям сначала на фронт-энде, затем на бэк-энде. Мы используем популярное сочетание React + Nest + PostgreSQL, поэтому далее будут небольшие пояснения, как именно они ложатся на этот стэк. https://habr.com/ru/articles/795923/ Алгоритмы и Структуры данных

Pornhub заплатит $14 за просмотр каждого ролика, который длится больше 20 минут А «Вкусно и точка» подарит сертификат на 3000р, если оставить положительный отзыв в телеграме и отметить их аккаунт в сториз. Канал Лимон 🍋 находит СОТНИ бизнес-подработок, с которыми даже лодырь сможет получать лишние 60-70 тысяч. – Зритель фильмов на Кинопоиске – 4.000р за 2 часа – Автор отзывов на Google Maps – 100р/штука – Помощник блогера на ютубе – $600/мес Подпишитесь, если хотите работать на себя и получать за это неплохие деньги: https://t.me/+EZ8uccJ8lX80MWYy

Как хранить токены и пароли в программах на Python Уже на первом этапе изучения языка python я думаю все, как и я, озадачиваются вопросом – как быть с секретными данными – логины, пароли, токены и т.п. Как и где их хранить? Ну не прописывать же их явно в тексте программы, а потом еще и на Гитхабе размещать. Особенно эта тема актуальна в сфере алготрейдинга, здесь думать о доступах и секретности паролей надо в первую очередь. Информации в сети достаточно. Но я решил кратко законспектировать основные варианты, для быстрого понимания только начинающих изучать этот вопрос. https://habr.com/ru/articles/795881/ Алгоритмы и Структуры данных

Станьте Python-разработчиком за 0₽ Зарплата начинающего Python разработчика от 100 000₽, а стоимость обучения на профессию в
Станьте Python-разработчиком за 0₽ Зарплата начинающего Python разработчика от 100 000₽, а стоимость обучения на профессию в онлайн-школах от 120 000 до 300 000 рублей. Получите основы профессии и ключевые навыки за 3 недели практики. ⚠️ Переходите по ссылке и забирайте курс по Python — только до 26 февраля: https://go.2038.pro/785ad3d589bc03c0?erid=LdtCK7b7u&m=1

Разделяй и Властвуй. Разбор задач Решение задач с помощью метода "Разделяй и Властвуй" или по-английски "Divide and Conquer" является одним из базовых методов по ускорению алгоритмов. Примером тому служит переход от квадратичной сложности пузырьковой сортировки или сортировки вставками к сложности \inline O(n\log{n}) при сортировке слиянием. Или переход от линейной сложности к логарифмической, при реализации поиска элемента в отсортированном массиве (см. бинарный поиск). В этой статье мы рассмотрим два примера задач с пояснениями и кодом, в которых будет использоваться этот подход. Для начала сформулируем, разделение и властвование. Решение задачи с помощью данного подхода обладает следующими тремя свойствами: https://habr.com/ru/companies/otus/articles/599309/ Алгоритмы и Структуры данных

Подготовка к собеседованию на позицию Data Scientist. Часть 1: Live Coding Привет! Меня зовут Артем. Я работаю Data Scientist'ом в компании МегаФон (платформа для безопасной монетизации данных OneFactor). Мы строим скоринговые (credit scoring), лидогенерационные (lead generation) и антифрод (anti-fraud) модели на телеком данных, а также делаем гео-аналитику (geoanalytics). В январе 2022 года я создал репозиторий, чтобы хранить там ссылки на материалы по различным темам: подготовка к собеседованиям, computer science, data science, git, математика и многие другие. За все это время репозиторий разросся до таких размеров (и по количеству материалов, и по набору топиков), что я пришел к выводу, что нужно каким-то образом структурировать эту информацию. В итоге, блок с материалами для подготовки к собеседованиям я решил выделить в отдельный репозиторий, а для того, чтобы было понятно как эти материалы использовать, было решено написать серию статей, первую из которых вы читаете прямо сейчас. https://habr.com/ru/companies/megafon/articles/795261/ Алгоритмы и Структуры данных

Как устроен языковой сервер В этом посте я хочу прокомментировать один любопытный комментарий из базы кода rust-analyzer. Вот этот комментарий. Здесь описан интересный рекурсивный алгоритм, неоднократно встречающийся в разных аспектах программирования языковых серверов. Я видел реализации такого алгоритма на Kotlin и C#, а затем сам реализовал его на Rust. https://habr.com/ru/companies/piter/articles/795335/ Алгоритмы и Структуры данных

Новый рекорд производительности FizzBuzz 283 ГБ/с на AMD Ryzen 9 7700X. https://habr.com/ru/articles/794925/ Алгоритмы и Структуры данных

О чем говорят руки. 2 место на соревновании Kaggle Соревнование под названием Google - Isolated Sign Language Recognition проводилось на платформе Kaggle и длилось около трех месяцев. Помимо Google в организации соревнования приняли участие Технологический институт Джорджии и организация D-PAN, которая поддерживает творческих профессионалов с нарушениями слуха. Целью данного соревнования было разработать алгоритмы для распознавания жестового языка. Эта инициатива была направлена на сокращение коммуникационного барьера между глухими и слышащими людьми, предлагая технологическое решение, которое могло бы облегчить процесс обучения языку жестов. В следующих разделах я расскажу более подробно о технических аспектах соревнования, нашем подходе к решению задачи и о том, какие проблемы возникли у нас на этом пути. https://habr.com/ru/articles/795109/ Алгоритмы и Структуры данных

Полиномиальные корневые методы синтеза САУ ч.2 Леонид Маркович Скворцов. Широко известный в узких кругах математик, профессионально занимающийся математическими проблемами автоматического управления. Например, его авторские методы использованы в SimInTech. Данный текст, еще готовится к публикации. Но с разрешения автора, читатели Хабр будут первыми кто сможет оценить. Первая часть здесь... https://habr.com/ru/articles/793010/ Алгоритмы и Структуры данных

Хотите построить карьеру в сфере IT, но не знаете, с чего начать? Начните с изучения легендарного языка программирования — C+
Хотите построить карьеру в сфере IT, но не знаете, с чего начать? Начните с изучения легендарного языка программирования — C++. Разработчики на C++ работают в крупных IT-компаниях, геймдеве, веб-разработке, создают корпоративные и банковские приложения, проектируют операционные системы и софт для роботов. Зарплаты разработчиков на С++ одни из самых высоких в отрасли. По данным сервиса zarplan. com, средняя зарплата таких специалистов на декабрь 2023 — 226 300 руб. На онлайн-курсе «Профессия Разработчик на C++ с нуля» от Skillbox вы сможете освоить профессию всего за 7 месяцев: ✔️ Выучите С++ — универсальный язык, на котором пишут веб-приложения, игры, драйверы и десктопные программы. ✔️ Пополните портфолио проектами, среди которых поисковый движок. ✔️ Получите гарантию трудоустройства после курса. В противном случае — вам вернут деньги за курс. Узнать подробнее и получить скидку до 50% можно здесь: https://epic.st/TUS01p Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880

Обзор библиотеки Stan в R Stan - это библиотека на C++, предназначенная для байесовского моделирования и вывода. Она использует сэмплер NUTS, чтобы создавать апостериорные симуляции модели, основываясь на заданных пользователем моделях и данных. Так же Stan может использовать алгоритм оптимизации LBFGS для максимизации целевой функции, к примеру как логарифмическое правдоподобие. Для облегчения работы с Stan из языка программирования R доступен пакет rstan, который предоставляет интерфейс R для Stan. Сегодня мы и рассмотрим этот пакет. https://habr.com/ru/companies/otus/articles/794196/ Алгоритмы и Структуры данных