Как стать автором
Поиск
Написать публикацию
Обновить
135.02

Алгоритмы *

Все об алгоритмах

Сначала показывать
Порог рейтинга
Уровень сложности

Как получить на 30% больше подписчиков, раздавая промокоды в Telegram

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров1.5K

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

Вместо того, чтобы втюхивать подписку холодной аудитории, узнай:
- Как согреть холодных пользователей и превратить их в лояльных;
- Как использовать промокод грамотно и мотивировать подписку на Telegram-канал;
- Как автоматизировать выдачу промокодов и защитить их от злоупотреблений;

Плюс, в конце статьи тебя ждет реальный код для создания бота на PHP, который будет автоматически выдавать промокоды.

Читать далее

Пошаговое повышение производительности алгоритма

Время на прочтение11 мин
Количество просмотров2.5K

Недавно мне довелось работать над новым алгоритмом приближённого поиска ближайших соседей, который называется RaBitQ. Автор этого алгоритма уже предоставил достаточно скоростную реализацию на C++. Я попытался переписать этот алгоритм на Rust (ещё один случай «а почему бы не переписать на Rust»). Однако, я обнаружил, что моя реализация гораздо медленнее оригинальной. Далее я расскажу, как шаг за шагом доработал её производительность.

Читать далее

ИИ в диагностике рака кожи

Время на прочтение16 мин
Количество просмотров1.3K


Одним из самых коварных и гадких заболеваний у человека является рак. Независимо от его локализации, он может нанести колоссальный ущерб здоровью или привести к летальному исходу. Одним из самых распространенных считается рак кожи, а именно меланома. Проблема этого типа рака заключается в том, что он может быть на видном месте и не вызывать каких-либо ощутимых симптомов до момента, когда уже будет поздно что-либо делать. Именно потому людям, которые входят в группу риска, необходимо регулярно проверяться у дерматоонколога. Однако даже самый опытный специалист все равно остается человеком, который может упустить малозаметные признаки, тем самым подарив раку шанс на развитие. По этой причине человечество начало изобретать множество разнообразных инструментов диагностики, помогающие врачам найти рак вовремя. Одним из потенциально полезных инструментов в данном начинании может быть искусственный интеллект. Ученые из Университета им. Раскина (Великобритания) провели исследование, в котором обучили систему ИИ определять ранние признаки меланомы. Как именно проходило это обучение, и насколько эффективен ИИ в качестве диагноста? Ответы на эти вопросы мы найдем в докладе ученых.
Читать дальше →

Насколько быстры B-деревья по сравнению с хэш-таблицами?

Время на прочтение12 мин
Количество просмотров13K

Во многих «скриптовых» языках для стандартных ассоциативных структур данных используется хэш-таблица (hashmap) (объекты Javascript, словари Python и так далее). Хэш-таблицы обладают множеством раздражающих свойств:

  • Уязвимость к hash flooding.
  • В случае защиты от hash flooding случайными seed порядок итераций становится недетерминированным, что мешает при тестировании снэпшотов, создании воспроизводимых сборок и так далее.
  • При вставке может требоваться рехэширование, что в наихудших случаях создаёт для больших хэш-таблиц ужасные задержки.
  • Многократное увеличение больших распределений памяти без фрагментации сложно реализовать в целевых платформах wasm, потому что трюки с виртуальной памятью недоступны, а для страниц невозможно выполнить unmapping.
  • Векторные команды в wasm ограничены, а команды AES отсутствуют. Это делает многие хэш-функции ещё более медленными.

Упорядоченные структуры данных наподобие B-деревьев не имеют этих недостатков. Обычно они медленнее хэш-таблиц, но меня удивило, насколько разнятся ожидания людей относительно их скорости.
Читать дальше →

Как мы в Яндексе делаем роборуку с искусственным интеллектом

Время на прочтение7 мин
Количество просмотров12K

Ещё 10–20 лет назад многие думали, что роботы под управлением искусственного интеллекта возьмут на себя всю тяжёлую и опасную работу на предприятиях. Однако нейросети нашли применение в офисах, колл‑центрах, службе поддержки и даже стали полезны людям из творческих профессий — копирайтерам, дизайнерам, программистам. Тем не менее создание роботов, которые могут самостоятельно выполнять сложные физические манипуляции с материальными объектами, остаётся трудной и нерешённой задачей.

В этой статье я расскажу, как команда ML R&D в отделе робототехники Маркета создаёт роборуку и обучает нейросети, благодаря которым робот взаимодействует с физическим миром.

Читать далее

ПО шагам: Защищаем сайт от парсеров и поведенческих ботов с помощью DNS-прокси

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров8.3K

- контент не будет спаршен
- с ВПН работает
- выявит высокоуровневых JS ботов
- реальных не заблокирует
- фиксирование только настоящих просмотров
- рекомендательная система будет работать изумительно

Как интегрировать защиту, как выявить фейковых http ботов, как написать свой код верификации пользователя на прокси сервере и еще читайте далее.

Читать далее

Задачки «полуфинала» соревнования МТС (True Tech Arena 2024) — обзор, разбор

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров1.3K

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

Оговорюсь: я не имею отношения к МТС и не занимаюсь "спортивным/олимпиадным" программированием. Обычный мидл-девелопер из обычной конторы. Отчасти поэтому мне как и большинству из вас подобные задачки в излишних количествах кажутся немного скучными :)

Здесь речь про "алгоритмический трек" - а насчет параллельного соревнования по "роботам" можно посмотреть мою предыдущую статью.

Итак, к задачкам!

Предиктивная аналитика политических кризисов с помощью machine learning (на исторических данных)

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров3.1K

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

Читать далее

Закон распределения делителей числа (расширенная версия)

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров2.8K

В арифметике известны элементарные действия с числами (+), (–), (×), (/) и др., использование которых при заданных исходных данных дает нам возможность получать определенные результаты: сумму, разность, произведение, частное. Обратное действие с результатами в качестве исходных данных возможно далеко не всегда. Например, возведение в третью степень числа 7 3 = 343, обратным действием имеет извлечение из результата корня третьей степени (343)1/3= 7. При заданных результатах определить какими были исходные данные не всегда возможно.  Для суммы даже двух слагаемых 7 + 6 = 13 такого единственного обратного действия нет. Для числа 13 мы можем получить очень разные исходные 13 = 1+12 = 2+11 = 3+10 = 4 +9 = 5 + 8 = 6+7.

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

Такие делители, вообще говоря, как-то распределены в числовых рядах. Например, в натуральном ряде чисел (НРЧ) или в последовательности нечетных чисел (ПНЧ) простые числа-делители и их кратные имеют достаточно регулярные распределения, каждое со своим шагом.

Задавая произведение простых чисел N = p˖q˖h˖s, мы понимаем, что каждое из p, q, h, s меньше самого N. Если ограничить начальный фрагмент НРЧ или ПНЧ значением N, то в пределах выделенного фрагмента будут присутствовать кратные делителей с возрастающими от 1 коэффициентами (для ПНЧ коэффициенты будут нечетными). Сможем ли мы увидеть и выделить такие кратные делителей N? Они ведь нам неизвестны.

Сегодня ответ на этот вопрос положителен. В 2014 году мной на Хабре был опубликован закон распределения делителей (ЗРД) натурального числа N в НРЧ. Применение закона позволяет получать для заданного натурального N его простые делители и их кратные в НРЧ. Ниже я кратко повторю публикацию 2014 года и приведу расширенную версию ЗРД на ряд целых чисел N.

Читать далее.

PinkHash: Незабываемые розовые хеши

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.5K

Розовый хеш — это как розовый слон, только хеш.

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

К эндокринологам и многомерным антихристам

Продуктовая матрица. Что это такое? Как её сделать? Подробное руководство для маркетолога

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров5.1K

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

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

И еще: всё, что далее написано, работает только, если это внедрять, поэтому лучше всего сразу брать и переносить эти наработки на собственные проекты.

Результат изучения статьи:

Читать далее

Решение задачи с Leetcode про возведение числа в степень

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров1.5K

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

Читать далее

Два в одном: как древние морские существа спасаются от гибели, сливаясь в единое нечто

Время на прочтение3 мин
Количество просмотров7.2K

Хабр, привет! Это Дарья Фролова из команды спецпроектов МТС Диджитал. Сегодня поговорим о скилах, которые освоила живая природа. Однажды я наблюдала, как у аксолотля моей подруги отросла утраченная конечность. Выглядело впечатляюще, ведь это реальность, а не фильм о Дэдпуле. А вот гребневики ничего общего с грибами и медузами выдают штуки еще поинтереснее, чем аксолотли. Эти странные существа не только умеют восстанавливать части тела, но и в случае сильных повреждений сливаются с другими особями своего вида и таким образом выживают. Подробнее об этой суперсиле — под катом.

Читать далее

Ближайшие события

При чем здесь крипта  –  концептуальное SEO WEB 3.0:  в 2025 году все изменится

Время на прочтение5 мин
Количество просмотров2.1K

Дж. Биллингс: «Я не предложу и двух центов за простоту по эту сторону сложности, но отдам жизнь за простоту по ту сторону сложности». 

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

В статье:

Почему Google стал таким какой он сейчас

Не даем пользы, а удовлетворяем сиюминутные желания

Как SEO-шник читает твои мысли

Концептуальный подход в SEO  –  это не для всех

Крипта и SEO

Как работать с SEO-специалистом

Читать далее

Антология матричных расширений: от популярного обзора до запуска на эмуляторе

Время на прочтение4 мин
Количество просмотров1.4K

Матричные расширения в мире технологий появились лишь в 2020 году. Даже в сравнении с относительно «молодыми» темами ИИ и квантовых вычислений это буквально «новорожденный» материал в IT-мире. И что самое интересное, матричные расширения уравняли тот разрыв в развитии, который существует между процессорными архитектурами. Свои расширения создают и Intel, и Apple, и IBM, и рабочие группы международного альянса RISC-V. 

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

Читать далее

Как мы перенесли распознавание на базе ИИ в веб и изменили веб-банкинг? А в Markswebb это оценили

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров1.4K

Привет, Хабр! Недавно аналитическое агентство Markswebb выкатило ежегодный рейтинг лучших веб-версий банковских приложений в 2024 году. Эксперты сравнили удобство и функциональность использования банковских услуг в браузере и выбрали банки с лучшими веб-приложениями по качеству клиентского опыта. Лидирующие позиции в обеих номинациях рейтинга - «Цифровой офис» (Digital Office) и «Цифровой банк для повседневных операций» (Daily Banking) - заняли наши клиенты!

Достичь крутых результатов удалось в том числе благодаря использованию систем распознавания Smart Engines. Рассказываем, как наши ИИ-решения помогли ведущим банкам поставить новые рекорды в сфере цифрового гостеприимства. 

Добро пожаловать!

Взлом старого ZIP-файла с криптопрограммами подпольщиков ЮАР

Время на прочтение8 мин
Количество просмотров14K

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

Недавно я заинтересовался защищёнными коммуникациями, которые использовались Африканским национальным конгрессом в рамках операции «Вула», проводившейся в конце 1980-х годов. Операция «Вула» заключалась в проникновении лидеров АНК (и передаче снаряжения) в ЮАР для подготовки тайной сети, реализующей различные элементы политической активности АНК внутри страны.

Для успеха операции требовались защищённые коммуникации, организованные на основе 8-битных компьютеров, DTMF-сигналов, акустических преобразователей и различного другого оборудования для обмена сообщений с одноразовым шифрованием, использующих программы, написанные на PowerBASIC.
Читать дальше →

Это база. Алгоритмы сортировки для начинающих

Время на прочтение11 мин
Количество просмотров46K

Привет! В этой статье я расскажу о двух алгоритмах сортировки: Quick Sort и Merge Sort. Объясню, как они работают, как выглядят примеры кода на Python и Java, а также — как выбрать подходящий алгоритм под ваши задачи. Подробности — под катом.
Читать дальше →

Сорок мегабайт простоты

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров21K

Привет, Хабр!

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

Без лишних предисловий - найдено 52-ое известное простое число Мерсенна!

Какое-какое число?

QR-код: улучшение считывания на сложных поверхностях

Время на прочтение13 мин
Количество просмотров1.8K


Одним из направлений, на которое непосредственно влияет технологический прогресс, является передача информации. В каком виде она передается, каким методом, насколько быстро и как считывается — все это зависит от уровня доступных технологий. Ярким примером того является QR-код, появившийся в начале 90-ых в Японии и ставший одним из самых популярных методов передачи небольшой информации. В наши дни QR-код можно встретить и на упаковках различных товаров, и на рекламных буклетах, и на визитках и т. д. Однако, несмотря на свою универсальность и простоту, QR-код может столкнуться с проблемой считывания, связанной с топологией поверхности, на которую он нанесен. Ученые из Барселонского университета (Испания) разработали новую методологию улучшения считывания QR-кодов, основанную на подгонке топографии базовой произвольной поверхности с помощью тонкопластинчатых сплайнов. Как именно ученые пришли к созданию этого метода, и насколько он эффективен? Ответы на эти вопросы мы найдем в докладе ученых.
Читать дальше →

Вклад авторов