Как стать автором
Обновить
104.75
Рейтинг

Алгоритмы *

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

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

Паутина для чайников: алгоритм строительства паучьих сетей

Блог компании ua-hosting.company Алгоритмы *Математика *Научно-популярное Биология


К паукам можно относиться как угодно: их можно бояться, недолюбливать или держать в качестве питомцев. Но любой, от арахнофоба до арахнолога, согласится с тем, что они мастера по строительству своих сетей. Научное сообщество уже очень давно и с большим интересом наблюдает за членистоногими прядильщиками, но полностью раскрыть все их секреты пока еще не удалось. И вот ученые из университета Джонса Хопкинса (США) решили детально рассмотреть и описать процесс строительства паутины, используя при этом искусственный интеллект и приборы ночного видения. Выяснилось, что разные виды пауков подчиняются общим правилам в ходе создания своих сетей. Следовательно, наблюдение за движениями лапок может предсказать, что именно будет строить паук. На какие стадии можно разделить строительство паутины, как пауки ведут себя во время каждой из них, и как эти данные могут помочь в понимании нас самих? Ответы на эти вопросы мы найдем в докладе ученых. Поехали.
Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Просмотры 1.1K
Комментарии 2

Новости

Решаем логистическую задачу: алгоритм привязки фактической и плановой стоянок автомобилей

Программирование *Алгоритмы *Облачные вычисления *Математика *Облачные сервисы
Tutorial

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

Отмечу, что первоначальное и основное предназначение Муравьиной логистики – это формирование маршрутов по заданным пользователем параметрам. За 9 лет работы сервиса появилось множество дополнительных возможностей, в том числе построение фактического маршрута движения автомобиля на основании данных GPS-трекера. Но нашим клиентам было недостаточно просто видеть на карте траекторию движения автомобиля. Сервис должен предоставить в удобном формате уже проанализированные данные - каждой плановой точке маршрута автомобиля необходимо присвоить соответствующую фактическую стоянку.

Читать далее
Рейтинг 0
Просмотры 561
Комментарии 0

Открытый проект файловой системы для внутренней памяти STM32H

Open source *Алгоритмы *Программирование микроконтроллеров *Производство и разработка электроники *DIY или Сделай сам
Tutorial

Зачем ставить внешнюю IC памяти или SD карту если в микроконтроллере осталось много свободной Flash памяти! 

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

Как сделать из внутренней Flash подобие EEPROM сравнительно неплохо написано в этом апноуте от ST. Но с некоторого уровня комплексности встроенного ПО хранить данные в именованных файлах удобнее чем в жёстких структурах. Файлы упрощают реюзинг, облегчают поддержку преемственности версий, апгрейды и даунгрейды. Файлы освобождают от хлопот с планированием размещения во флэш и разруливанием конфликтов размещения, особенно если приложение модульное и модули разрабатываются отдельно. 

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Просмотры 1.5K
Комментарии 12

Уроки абстракции: чему FP может научить ООП

Программирование *Java *Проектирование и рефакторинг *Алгоритмы *ООП *
Перевод

Одним из наиболее распространенных «лучших практик» в программировании является принцип DRY: не повторяйся. Для реализации этого принципа можно использовать множество методов: инкапсуляция, параметризация, инверсия управления и многое другое. Одним из этих методов является абстракция, и одно из основных различий между функциональным программированием (FP) и объектно-ориентированным программированием (ООП) заключается в способе применения абстракции. Обычной практикой в ООП является ограничение абстракции до строгого полезного минимума для рассматриваемой проблемы. В ООП преждевременное абстрагирование часто считается ошибкой, как и преждевременная оптимизация.

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

В этой статье мы сравним, как ООП и ФП будут обрабатывать абстракцию в конкретной простой задаче: вычислении суммы целых чисел от 1 до произвольного значения n. Проблема настолько проста для решения с помощью императивного программирования, что кажется, что в этом нет ничего интересного. Вот как это можно сделать в Java:

Читать далее
Всего голосов 13: ↑11 и ↓2 +9
Просмотры 3K
Комментарии 2

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

Программирование *Алгоритмы *Математика *
Из песочницы

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

Читать далее
Всего голосов 8: ↑5 и ↓3 +2
Просмотры 1.1K
Комментарии 3

Получаем кривую плотности распределения вероятности… быстрее и точнее

Python *Алгоритмы *Математика *

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

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Просмотры 1.9K
Комментарии 16

Heap: объяснение структуры данных, операций и реализация на C

Алгоритмы *C *
Из песочницы
Tutorial

О том, что такое пирамида как структура данных и алгоритмах по отношению к ней.

Читать далее
Всего голосов 3: ↑2 и ↓1 +1
Просмотры 3.2K
Комментарии 2

Применение алгоритма Гровера для поиска гамильтоновых циклов в графе

Алгоритмы *Квантовые технологии
Из песочницы
Tutorial

Вариант применения квантового алгоритма Гровера для решения задачи поиска гамильтоновых циклов в графе. Вариант является учебным, он не даст так называемого «квантового превосходства», но возможно вдохновит кого-либо на поиск более оптимального решения задачи.

Читать далее
Всего голосов 18: ↑18 и ↓0 +18
Просмотры 1.7K
Комментарии 3

Конспект книги «Грокаем алгоритмы» Адитья Бхаргава

JavaScript *Программирование *Алгоритмы *Учебный процесс в IT
Из песочницы

Алгоритм - набор инструкций для выполнения задачи.

Бинарный поиск - алгоритм, который получает на вход отсортированный список элементов, если элемент, который вы ищите, есть в списке, то бинарный поиск возвращает ту позицию, в которой он был найден. В противном случае возвращает null.

Читать далее
Всего голосов 15: ↑14 и ↓1 +13
Просмотры 6.2K
Комментарии 2

Изучение RPA. Developer Roadmap

Алгоритмы *Визуализация данных Визуальное программирование *

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

Исходя из этого - я решил создать такой проект вместе со своей командой.

О результатах ниже...

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Просмотры 908
Комментарии 2

Глобальная блокировка интерпретатора (GIL) и её воздействие на многопоточность в Python

Блог компании Wunder Fund Python *Программирование *Алгоритмы *
Перевод

Прим. Wunder Fund: в статье рассказано, зачем появилась и существует глобальная блокировка интерпретатора в Питоне, как она работает, и как она влияет на скорость работы Питона, а также о том, куда в будущем, вероятно, будет двигаться Питон. У нас в фонде почти всё, что не написано на плюсах — написано на Питоне, мы пристально следим за тем, куда движется язык, и если вы тоже — вы знаете, что делать )

Как вы, наверное, знаете, глобальная блокировка интерпретатора (GIL, Global Interpreter Lock) — это механизм, обеспечивающий, при использовании интерпретатора CPython, безопасную работу с потоками. Но из-за GIL в конкретный момент времени выполнять байт-код Python может лишь один поток операционной системы. В результате нельзя ускорить Python-код, интенсивно использующий ресурсы процессора, распределив вычислительную нагрузку по нескольким потокам. Негативное влияние GIL на производительность Python-программ, правда, на этом не заканчивается. Так, GIL создаёт дополнительную нагрузку на систему. Это замедляет многопоточные программы и, что выглядит достаточно неожиданно, может даже оказать влияние на потоки, производительность которых ограничена подсистемой ввода/вывода.

Здесь я опираюсь на особенности CPython 3.9. По мере развития CPython некоторые детали реализации GIL, определённо, изменятся. Материал опубликован 22 сентября 2021 года, после публикации в него внесено несколько дополнений.

Читать далее
Всего голосов 57: ↑54 и ↓3 +51
Просмотры 7.6K
Комментарии 5

Разбор алгоритмических задач с собеседований в Google, Facebook, Amazon

Алгоритмы *
Tutorial

Всем привет!

В данной статье пройдемся по двум задачам, взятым с leetcode.com из списка часто встречаемых задач на собеседованиях в FAANG:

1. Guess the word
2. Number of Good Ways to Split a String

Я надеюсь на то, что вам понравятся задачки, и возможно, вы напишете свое личное решение и сдадите в тестирующую систему.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 8.3K
Комментарии 21

Распознаем числа в тексте

Ненормальное программирование *Программирование *Java *Алгоритмы *Kotlin *
Tutorial

Кому может быть полезна эта статья?

Извращенцам делающим ML на Java? Или может быть для обучения?

Хотя зачем эти оправдания? Весь код был написан because we can.Под катом мы рассмотрим как превращать числа вида "Двенадцать тысяч шестьсот пятьдесят девять целых четыре миллионных" в форму вроде 12 659, 000 004.

Погрузиться в Kotlin
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 2.9K
Комментарии 4

Лучший способ выбора случайной точки в круге

Python *Алгоритмы *Математика *
Перевод
image

Допустим, вам нужно найти случайную точку с равномерным распределением в круге. Как же это сделать лучше всего? Когда я впервые начал изучать эту задачу, я работал над программным проектом, требовавшим случайного распределения значений в круге, но довольно быстро я спустился в неожиданно глубокую кроличью нору, заполненную любопытной математикой, поэтому решил объединить все свои находки в одну статью.
Читать дальше →
Всего голосов 68: ↑68 и ↓0 +68
Просмотры 10K
Комментарии 38

Как посчитать синус быстрее всех на хабре

Блог компании RUVDS.com C++ *Алгоритмы *C# *Математика *
Tutorial

Несмотря на свою кажущуюся банальность, темы о вычислении синуса достаточно регулярно появляются на хабре. И каждый раз их авторы или делают сомнительные утверждения, или получают сомнительные результаты. Не в силах более терпеть, я тоже решил поучаствовать и внести свой, не менее сомнительный вклад в этот вопрос.
Читать дальше →
Всего голосов 92: ↑91 и ↓1 +90
Просмотры 19K
Комментарии 39

«Эти глаза напротив»: история внедрения биометрического решения в X5 Group

Блог компании X5 Group Платежные системы *Алгоритмы *Искусственный интеллект Будущее здесь

Привет, Хабр! Мы уже рассказывали о магазине с полностью автоматизированной системой покупок, который получил название «Пятерочки #налету». Но это далеко не все технологические проекты компании. Практически одновременно с новыми автономными «Пятёрочками» мы начали разрабатывать и систему биометрической оплаты. Покупателю достаточно посмотреть в камеру и всё — покупка оплачена. О том, как этот проект внедрялся и что из себя представляет, читайте в нашем новом материале – собрали всю начинку!

Читать далее
Всего голосов 20: ↑10 и ↓10 0
Просмотры 4.2K
Комментарии 39

Методы детоксификации текстов для русского языка

Блог компании МТС IT-инфраструктура *Алгоритмы *Искусственный интеллект Natural Language Processing *

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





Всем привет! Меня зовут Дарина Дементьева, я являюсь аспиранткой в Сколковской лаборатории обработки естественного языка (Skoltech NLP), где занимаюсь исследовательскими проектами совместной лаборатории Skoltech NLP и MTS AI. В рамках работы в совместной лаборатории мы провели серию исследований, посвященных важной социальной проблеме – борьбе с токсичной речью в Интернете или детоксификации текстов.

В этой статье мы расскажем про результаты исследований методов детоксификаций для русского языка. Эта работа была опубликована и презентована на конференции Диалог, а также принята в журнал MDPI. Результаты экспериментов на английском языке приняли для презентации на одной из ведущих конференций в области обработки естественного языка EMNLP. Мы представляем вам краткую выжимку с описанием моделей, постановкой и результатами экспериментов, а в конце вы сможете самостоятельно ̶п̶о̶м̶а̶т̶е̶р̶и̶т̶ь̶с̶я̶ ̶в̶ ̶ч̶а̶т̶е̶ протестировать модели в бою. Теперь – добро пожаловать под кат!
Читать дальше →
Всего голосов 15: ↑12 и ↓3 +9
Просмотры 4.4K
Комментарии 60

Танцы без бубнов или как я реализовал автомат на ПЛИС

Блог компании ЦИТМ Экспонента Алгоритмы *FPGA *Программирование микроконтроллеров *Инженерные системы

Всем привет, дорогие хабровчане! Сегодня я хочу поделиться своей «больной» идеей реализовать калькулятор на ПЛИС на основе конечного автомата. Почему больной? Потому что уж очень мудрёно получается: всё-таки реализация автоматов на ПЛИС – дорогая практика в смысле ресурсов. Почему хочу поделиться? Потому что вишенкой на торте в этом проекте является автоматическая генерация кода с помощью такого мощного средства, как HDL Coder в MATLAB, что в купе со Stateflow очень интересно смотрится: создание железного кода на основе графического составления графа системы – ни это ли верх мечтаний разработчика, которому необходимо реализовать сложнейший граф с кучей разных переходов и условий ?!

Итак, задачу перед собой я поставил следующую: у меня есть «китайский» кит с FPGA Spartan 6 на борту и старенький клавиатурный интерфейс PS/2. Я собираюсь залить проект калькулятора-автомата на ПЛИС вместе с выбранным интерфейсом и с клавиатуры осуществлять ввод данных. Вывод результата и текущего ввода будем наблюдать на 8-ми cемисегментных дисплеях, которые также имеются на отладочной плате.

В первой части мы познакомимся с пакетом Stateflow, как собиралась модель в SIMULINK и сгенерируем HDL-описание. Во второй части мы немного скорректируем проект для получения синтезируемого HDL кода.

Читать далее
Всего голосов 10: ↑9 и ↓1 +8
Просмотры 2.4K
Комментарии 6

Получаем кривую плотности распределения вероятности случайного процесса

Python *Программирование *Анализ и проектирование систем *Алгоритмы *Математика *

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

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

Читать далее
Всего голосов 12: ↑11 и ↓1 +10
Просмотры 3.3K
Комментарии 10

Шифры замены

Информационная безопасность *Криптография *Алгоритмы *Математика *Научно-популярное

В предыдущей статье были рассмотрены простые шифры, использующие алфавиты естественных языков (ЕЯ). Автоматическая обработка сообщений в компьютерных и сетях связи предусматривает использование искусственных языков (ИЯ), что более эффективно во многих отношениях. Ранее описывалась классификация шифров и для некоторых из них было показано как они применяются в области информационной безопасности. Здесь продолжим такое рассмотрение, но для более сложных шифров.

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 2.7K
Комментарии 4

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