Обновить
215.67

Алгоритмы *

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

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

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

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

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

Читать далее

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

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

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

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

В статье:

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

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

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

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

Крипта и SEO

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

Траст-менеджер здорового человека

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

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

Читать далее

Популярный, но неправильный способ перевода строки в нижний регистр

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

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

Но он ошибочен по многим причинам.

Во-первых, std::tolower — это неадресуемая функция. Среди прочего, это значит, что мы не можем брать адрес функции, как мы делаем это здесь, когда передаём указатель на функцию std::transform. То есть нам нужно использовать лямбду.

Читать далее

Почему важно оптимизировать формат данных

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

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

Алгоритмы — важнейшая часть программы: замена «горячего» алгоритма O(n) менее сложным, например, O(log n), обеспечивает практически произвольное увеличение производительности. Однако существенно влияет на производительность и структурированность данных: программы выполняются на физических машинах с физическими свойствами, например, разными задержками чтения/записи данных в кэши, на диски или в ОЗУ. После оптимизации алгоритмов стоит изучить эти свойства, чтобы достичь наибольшей производительности. Оптимизированный формат данных учитывает используемые алгоритмы и паттерны доступа при выборе того, как сохранять структуру данных на физическом носителе. Благодаря этому можно увеличить скорость алгоритмов в несколько раз. В этом посте мы покажем пример, в котором нам удалось достичь четырёхкратного повышения скорости чтения простым изменением формата данных в соответствии с паттерном доступа.

Сравнение хранилищ данных AoS и SoA


Современное оборудование, и, в частности CPU, спроектировано так, чтобы обрабатывать данные определённым образом. Расположение данных в памяти влияет на то, насколько эффективно программа сможет использовать кэш CPU, как часто она сталкивается с промахами кэша и насколько оптимально она сможет задействовать векторные команды (SIMD). Даже при использовании оптимальных алгоритмов выбор неподходящего формата данных может приводить к частым перезагрузкам кэша, простаивающим конвейерам и чрезвычайно большому объёму передач содержимого памяти; всё это снижает производительность.
Читать дальше →

Её величество Сортировка

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

Можно ли сортировать несортируемое? Почему декоратор в питоне называется "total_ordering"? Как отсортировать тексты по смыслу? Надо ли сохраняться, перед использованием "compare function"?

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

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

Читать далее

Как я искал рекомендации аналитиков по покупке российских ценных бумаг в JSON формате

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

Четыре года назад я написал систему поиска поиска недооцененных американских акций, используя данные Яху Финанс, ведь на американском рынке торгуется больше 10 тысяч бумаг, из которых 4 тысяч бумаг имеют рекомендации аналитиков о прогнозируемой цене. Это большие цифры, с которыми сложно работать. Но что по России?

Я вялотекуще пытался найти систему которая бы также отдавала рекомендации аналитиков, пока недавно не нашёл:

{
"uid": "b993e814-9986-4434-ae88-b086066714a0",
"ticker": "WUSH",
"company": "Финам",
"recommendation": "RECOMMENDATION_HOLD",
"recommendationDate": "2024-09-26T00:00:00Z",
"currency": "rub",
"currentPrice": {
"units": "192",
"nano": 0
},
"targetPrice": {
"units": "250",
"nano": 0
},
"priceChange": {
"units": "58",
"nano": 0
},
"priceChangeRel": {
"units": "30",
"nano": 210000000
},
"showName": "Whoosh"
}

Правда есть один нюанс в количестве. На московской бирже представлено 170 бумаг, из которых имеют рекомендации всего 89 акций.

Гораздо меньшее количество бумаг, зато API выдаёт конкретные имена компаний, которые давали рекомендации, а также дату дачи прогноза и прогнозную цену. Теоретически можно составлять списки самых точных аналитиков, через какое-то время собирая цены и сопоставляя их с прогнозными.

Но мне было больше интересно составить сводную таблицу по всем доступным 89 акциям.

Код представлен на GitHub.

Ищем 🧈

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

Как готовить EdgeAI в 2024/2025 году

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

Есть у меня такое развлечение - разные платы для AI тестировать.

Очень много того с чем я работаю - про Computer Vision на Edge. В какой то момент я понял что мне не хватает информации. Нет ничего кроме восторженного пресс-релизов. Дай бог ещё есть видео как официальные примеры запускают. Но обычно без этого.

Так что в какой-то момент начал тестировать всё сам. Просто чтобы понимать какие есть альтернативы, что можно а что нельзя.
Иногда (раз в год-два) я пишу обзорную статью. И это именно она. Тут я попробую рассмотреть критерии, которые можно считать важными для AI плат. А так же кратко рассмотреть основные платы на рынке.

Читать далее

Изучение различных видов сортировок

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

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

Читать далее

Как извлечь квадратный корень из перестановки чисел?

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

В этой статье мы исследуем проблему извлечения квадратного корня из перестановки p, иными словами задачу нахождения всех таких перестановок x, что x \cdot x = p. Будет сформулирован критерий возможности извлечения квадратного корня, алгоритм нахождения корней и формула их подсчёта в общем виде.

Читать далее

Учимся читать QR-коды без компьютера

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

Задавались ли вы когда-нибудь вопросом, как работают QR-коды? Если да, то эта статья для вас. Здесь вас ждёт интерактивное объяснение*, которое мы составили для семинара, проводившегося в рамках Всемирного конгресса хакеров 37C3, но вы также можете использовать его самостоятельно.

Прочитав статью, вы узнаете:

  • Из чего состоят QR-коды.
  • Как декодировать QR-коды вручную (используя нашу шпаргалку).
Читать дальше →

Поиск соседей в двумерном массиве

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

Поиск соседей в программировании — это процесс поиска элементов, расположенных рядом с заданным элементом в структуре данных (например, матрице или графе). Этот подход применяется для анализа взаимосвязей между элементами, определения их свойств на основе окружения и выполнения различных алгоритмов (например, поиск пути, кластеризация, фильтрация данных).

Читать далее

В поиске собственных значений (матриц)

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


Как найти собственные числа и собственные значения матрицы? Методы, излагаемые в курсе линейной алгебры, основанные на определении — применимы ли они к реальным данным? Существует ли простой алгоритм поиска этих величин, который можно понять, а не просто поверить?
Об этом мы поговорим под катом

Вычисления на RISC-V: исследуем производительность OpenCL на CPU и совместимых GPU

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

Привет! Меня зовут Михаил Козлов, я инженер-стажер в группе разработки математических библиотек в YADRO. Эта сфера активно развивается на RISC-V: известные математические библиотеки, такие как OpenBLAS, Eigen и многие другие, портируют и оптимизируют под открытую архитектуру. Большой интерес представляет OpenCL — открытый стандарт разработки программного обеспечения для гетерогенных вычислений. Он используется во многих областях: HPC, AI/ML, AR/VR, линейной алгебре, где он наиболее широко представлен с помощью библиотек clBLAS и CLBlast. 

В линейной алгебре OpenCL наиболее широко представлен с помощью библиотек clBLAS и CLBlast. Первая — более старая, вторая — более современная, со встроенным тюнером для оптимизации под конкретное железо. Далее я расскажу о своем проекте с летней стажировки: исследовании производительности этих библиотек на GPU

Читать далее

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