Все потоки
Поиск
Написать публикацию
Обновить
173.79

Алгоритмы *

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

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

Простейший алгоритм разделения слова на слоги

Время на прочтение3 мин
Количество просмотров6.8K
Однажды на проводимом мной практическом занятии [по ЯП] я, скучая, разглядывал список студентов группы. Глаз зацепился за знак ударения в фамилии Лемзекóв, который я поставил [для себя] после того, как произнёс фамилию этого студента неправильно. Я мысленно прочёл эту фамилию по слогам, и тут у меня возник вопрос: «а по какому алгоритму мозг разбивает слова по слогам?» Почему-то интуитивно получается "Лем-зе-ков", а не "Ле-мзе-ков" или "Лем-зек-ов". Я выписал ещё несколько примеров, и разглядывая их размышлял о том, как перевести это в алгоритм.
Читать дальше →

Кластеризация текста в PySpark

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

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

На связи участники профессионального сообщества NTA Кухтенко Андрей, Кравец Максим и Сиянов Артем.

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

Узнать больше о кластеризации текста

«Перспективный вид общественного транспорта для больших и средних городов» — главная идея в кратком пересказе

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

(источник)

Зачем нужна еще одна статья


Недавно я опубликовал цикл статей “Дешевый как автобус, удобный как такси ...”:

Ссылка на Часть1: «Предварительный анализ» (ру / eng )
Ссылка на Часть2: «Эксперименты на торе» (ру / eng )
Cсылка на «Часть3: Практически значимые решения» (ру / eng )

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

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

Контекст, награда, много рук. Многорукие бандиты как метод принятия решений

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

Всем привет! В предыдущих двух статьях мы подробно рассмотрели технические и методологические аспекты A/B-тестирования в Ozon. А сейчас время перейти к не менее интересным темам. Так как наша команда занимается не только A/B-тестами, но и в целом развитием методов принятия решений с помощью causal inference, стоит уделить внимание многоруким бандитам. 

В этой статье мы рассмотрим методологию и границы применимости классических многоруких и контекстуальных бандитов, а также реализуем контекстного бандита, в основе которого будут сэмплирование Томпсона и нейронная сеть. Ну и, конечно, мы постараемся ответить на главный вопрос: могут ли многорукие бандиты заменить A/B-тесты? 

Читать далее

Глубокое погружение в LSM-дерево

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

С увеличением спроса на операции, которые требуют больших объемов записи, традиционные базы данных, использующие B-дерево, становятся узким местом, поскольку обновление записей в b-дереве приводит к многочисленным беспорядочным операциям ввода-вывода (IO) и обновлению нескольких страниц на диске. B-дерево очень хорошо подходит для "тяжелых" операций чтения. Для операций с большими объемами записи у нас есть LSM-дерево.

Давайте попробуем понять, что такое LSM-дерево, как оно работает на самом деле.

Читать далее

Новейшая технология КТ — измерения под контролем реконструкции

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

Привет, Хабр! Каждому из нас хотя бы однажды было интересно заглянуть внутрь какого-либо объекта, не разрушая его, не так ли? И на сегодняшний день это представляется возможным благодаря одному из методов неразрушающего анализа внутренней структуры объекта - методу компьютерной томографии (КТ), подробнее о котором уже мы писали в статье. Первое, что приходит на ум, когда мы слышим термин КТ: “... что-то из медицины, какое-то исследование ...”. К удивлению многих, КТ не менее успешно применяется и в области промышленности, и в области научных исследований, и даже в области таможенного контроля.

Тут мы расскажем о нашей новой разработке, которая одновременно решает два из наиболее обсуждаемых аспектов в области КТ: как снизить дозу облучения и как сократить время томографического эксперимента? Первый имеет огромную важность для медицины, а второй – для индустрии. В нанотомографии, например, время эксперимента может достигать десятков часов. В статье мы покажем результаты, которых достигли в ходе экспериментов по исследованию разработанного нами подхода.

Читать далее

Идеальный препроцессинговый пайплайн для NLP-моделей

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

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

Читать далее

[По полочкам] Алгоритмы сортировок. Часть 1

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

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

В этой статье рассматриваются следующие сортировки: сортировка обменами, сортировка выбором, сортировка пузырьком, сортировка вставками.

Читать далее

Принцип «Web of Trust» или как работает PGP

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

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

Но что это вообще такое?

Читать далее

Книга «Рекурсивная книга о рекурсии»

Время на прочтение10 мин
Количество просмотров8.2K
imageПривет, Хаброжители!

Книга «Рекурсивная книга о рекурсии» содержит примеры кода на языке Python и JavaScript, которые иллюстрируют основы рекурсии и проясняют фундаментальные принципы всех рекурсивных алгоритмов. Из книги вы узнаете о том, когда стоит использовать рекурсивные функции (и, главное, когда этого не нужно делать), как реализовывать классические рекурсивные алгоритмы, часто обсуждаемые на собеседованиях, а также о том, как рекурсивные методы помогают решать задачи, связанные с обходом дерева, комбинаторикой и другими сложными темами.

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

Единственным минимальным условием для изучения книги является наличие базового опыта программирования на языке Python или JavaScript, на которых написан код в листингах. Код в книге сведен к самой сути: если вы умеете вызывать и создавать функции, а также различать глобальные и локальные переменные — вы знаете достаточно, чтобы разобраться в этих примерах.
Читать дальше →

Как аналитику работать с задачами на интеграции — пошаговая инструкция

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

Каждый системный и бизнес-аналитик проходит "боевое крещение" в своей карьере, когда получает первую задачу на проектирование интеграций. Звучит серьезно и сложно. И это так, если ни разу не работал с таким видом задач.

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

Читать далее

FTM, который написал MUSIC: точное определение местоположения Wi-Fi-устройств в условиях многолучевости. Часть 3/3

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

Часть 1/3

Часть 2/3

Статья «When FTM Discovered MUSIC: Accurate WiFi-based Ranging in the Presence of Multipath» опубликована в материалах Международной конференции IEEE по компьютерным коммуникациям, которая прошла в Торонто, Канада, с 6 по 9 июля 2020 г. (IEEE International Conference on Computer Communications, INFOCOM 2020). Идеи, изложенные в этой публикации, получили дальнейшее развитие, в частности, в статье «FSI: A FTM Calibration Method Using Wi-Fi Physical Layer Information» («FSI: метод калибровки FTM с использованием информации о физическом уровне Wi-Fi»), опубликованной во 2-й части материалов 17-й Международной конференции по беспроводным алгоритмам, системам и приложениям, которая прошла в Даляне, Китай, с 24 по 26 ноября 2022 г. (Wireless Algorithms, Systems, and Applications; WASA 2022).

Читать далее

Нейросеть, что это такое и как создать свою? Детальная инструкция

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

В поисковых системах ежедневно растет количество запросов, что такое нейросеть (далее — НС). Прежде всего это связано с растущим интересом к технологиям на базе искусственного интеллекта (далее — ИИ). Многие из нас даже не подозревают, что мы практически ежедневно используем модели глубокого обучения. Запросы Siri или взаимодействие с чат-ботами в мессенджерах — один из ярких примеров использования НС. 

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

Читать далее

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

Графы и программирование

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

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

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

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

Читать далее

Новый подход к вычислениям переосмысливает искусственный интеллект

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

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

Читать далее

ИИ вместо врача: алгоритм определения тактики лечения пациентов с сепсисом

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


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

Русские шашки: реализация минимакса с альфа-бета отсечением в Golang

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

В предыдущих записях блога мы обсудили, как эффективно генерировать ходы и представлять шашечную доску в Golang. Теперь мы углубимся в сердце нашей игры в шашки: ИИ, который принимает решения. ИИ будет использовать алгоритм Minimax с Alpha-Beta отсечением, популярный метод принятия решений в настольных играх.

Читать далее

Математическое моделирование в ORtools: задача планирования расписаний

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

Математическое моделирование, оптимизация, исследование операций, программирование в ограничениях … Продолжим двигаться в этом направлении.

Статья выполнена в рамках проекта “Make optimization simple”, который погружает в область бизнес задач с точки зрения математического моделирования и оптимизации. Посредством готовых библиотек демонстрируются примеры решения такого рода задач.

В этой статье разберем одну из таких постановок. На примере задачи планирования сменного графика сотрудников сети стоматологических клиник пройдем этапы: от формулирования бизнес ограничений до получения готового решения. Для моделирования и поиска решения будем использовать инструменты Python и библиотеку OR-Tools.

Читать далее

Несколько мыслей по подготовке к алгоритмической части собеседования

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

Всем привет! На связи снова Петр Коробейников, техлид сервисов DBaaS for Redis и RabbitMQ (релиз скоро) в #CloudMTS. В этой статье хочу поделиться с вами некоторым опытом подготовки к прохождению алгоритмических интервью. Конечно, статья не про хардкорные алгоритмы. Это, скорее, эскиз к роадмапу по подготовке. Тем не менее, я надеюсь, он будет полезен новичкам (и даже некоторым «старичкам»).

Готовьтесь


Это первый и самый важный совет. Если вы думаете, что, ворочая базами в десятки терабайт, вывозя 50-100k RPS к фронту, обрабатывая десятки миллионов сообщений в Kafka, вы сможете перенести свой опыт на решение алгоритмических задач, то могу вас немного расстроить.

Двоичное дерево без подготовки вы сможете покрутить в лучшем случае только на неприличном месте. Это чем-то похоже на экзамен по математике или физике: вы не сможете вывести формулу, если не знакомы с теорией и не решали задачи заранее. И вас будет ждать обидный провал.
Читать дальше →

Как журналист помогает выявлять серийных убийц с помощью алгоритма

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

17 октября 2014 года в мотеле маленького городка Хаммонд, Индиана, был обнаружен труп 19 летней Африки Харди. Вызванные на место полицейские почти сразу пришли к выводу, что это было убийство. На поиски убийцы ушло меньше суток — его обнаружили по записям камер наблюдения, установленных возле мотеля, а также по анализу телефонных разговоров жертвы (в номере был найден её телефон).

43-летний Даррен Ванн был арестован уже 18 октября и, как ни странно, совсем не был удивлён появлению полиции. Когда наручники защёлкнулись на его запястьях, Даррен повернулся и сказал полицейскому: «Наконец-то вы меня поймали». Так попался серийный убийца, жертвами которого стали ещё минимум шесть женщин. Но как полагали детективы, на самом деле счёт приближался к 20. 

Примечательно в этой истории то, что полиция могла бы поймать Даррена Вана ещё за 4 года до этого. Но никто не хотел слушать Томаса Харгроува — бывшего журналиста, который помогает искать маньяков с помощью собственного алгоритма, о котором и пойдёт далее речь.

Поймать маньяка

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