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

Алгоритмы *

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

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

Еще раз о поиске простых чисел

Время на прочтение7 мин
Количество просмотров230K
Скульптура `Решето Эратосфена` (Стэнфордский университет) В заметке обсуждаются алгоритмы решета для поиска простых чисел. Мы подробно рассмотрим классическое решето Эратосфена, особенности его реализации на популярных языках программирования, параллелизацию и оптимизацию, а затем опишем более современное и быстрое решето Аткина. Если материал о решете Эратосфена предназначен в первую очередь уберечь новичков от регулярного хождения по граблям, то алгоритм решета Аткина ранее на Хабрахабре не описывался.

На снимке — скульптура абстрактного экспрессиониста Марка Ди Суверо «Решето Эратосфена», установленная в кампусе Стэнфорского университета
Читать дальше →

Алгоритмы LZW, LZ77 и LZ78

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

Хочется продолжить свою предыдущую тему об алгоритмах сжатия. В этот раз я расскажу об алгоритме LZW и немного об его родственниках алгоритмах LZ77 и LZ78.

Алгоритм LZW


Алгоритм Лемпеля — Зива — Велча (Lempel-Ziv-Welch, LZW) — это универсальный алгоритм сжатия данных без потерь.
Читать дальше →

Приближенное решение алгебраических и трансцендентных уравнений

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

Введение


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

Методы численного решения нелинейных уравнений


Задачу решения я разделил на 3 части:
  • Аналитический способ отделения корней
  • Численные методы уточнения корней
  • Программная реализация вычислительного процесса
Целью статьи, как я уже называл является разбор и анализ численных методов, по этому в этой статье аналитический способ отделения корней я рассматривать не буду.
Читать дальше →

Автоматическое подавление звуковых шумов в аудиозаписи

Время на прочтение2 мин
Количество просмотров15K
Однажды, при разработке одного проекта, я наткнулся на интересную задачку.
Исходные условия:
— устройство, которое посредством ffmpeg через веб-камеру записывало видео со звуковой дорожкой
— длинна записи около минуты
— создать условия, при которых 1 раз настроить шумодав, чтоб далее он работал автономно

Ну и естественно с этого момента начался мозговой штурм.
Читать дальше →

Алгоритмы используемые при сжатии данных

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

Одна из самых главных проблем при работе с данными — это их размер. Нам всегда хочется, что бы уместилось как можно больше. Но иногда этого не сделать. Поэтому нам на помощь приходят различные архиваторы. Но как они сжимают данные? Я не буду писать о принципе их работы, лишь расскажу о нескольких алгоритмах сжатия, которые они используют.
Читать дальше →

Генерация псевдослучайных чисел

Время на прочтение5 мин
Количество просмотров136K
Довольно часто программисты в своей работе встречаются с необходимостью работать со случайными числами. Чаще всего случайные числа требуются в задачах моделирования, численного анализа и тестирования, но существует и множество других весьма специфических задач.
Конечно, во всех современных языках программирования есть функция random или её аналоги. Эти функции чаще всего дают действительно хорошие псевдослучайные числа, но мне всегда было интересно, как эти функции работают.
В этом топике я постараюсь объяснить, как работает линейный конгруэнтный метод (который чаще всего используется в функции random), и метод получения случайных чисел с помощью полиномиального счётчика (который часто используется для тестирования аппаратуры).
Читать дальше →

Описание работы алгоритма Shift-OR для поиска подстроки в строке

Время на прочтение3 мин
Количество просмотров8.4K
1. Вместо вступления.

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

Собственно, главное отличие алгоритма от, например, «наивного сравнения», заключается в том, что в его основе лежит логические операции, а именно логическое умножение (оно же AND, оно же конъюнкция).
Читать дальше →

Еще немного про P и NP

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

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

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

Модель расчёта вероятности преступлений

Время на прочтение3 мин
Количество просмотров7.4K
В фантастическом фильме «Особое мнение» (Minority Report) действие происходит в 2054 году в отделе по предотвращению преступлений. Сотрудники отдела получают информацию от трёх «провидцев», чьи видения выводятся на экран. Будущих преступников арестовывают ещё до того, как он задумались об осуществлении своих планов.

В наши дни этот фантастический сюжет частично воплощается в реальность, с одним важным отличием: вместо «провидцев» информацию для полицейских патрулей поставляет математическая модель, которая обсчитывает статистику преступлений в разных районах города. Газета NY Times описывает работу полицейских патрулей в городе Санта-Крус (Калифорния), где подобная программа предотвращения преступлений работает в экспериментальном режиме.
Читать дальше →

Интернет-математика от Яндекса

Время на прочтение1 мин
Количество просмотров1.4K
Яндекс второй раз в этом году проводит конкурс «Интернет-математика».

Цель этого конкретного конкурса — предоставить всем желающим возможность провести исследования по предсказанию релевантности документов по пользовательскому поведению. Специально для конкурса Яндекс предоставляет уникальный набор данных — информацию о переходах на документы из результатов поиска и асессорские оценки релевантности этих документов. Все данные о поисковом поведении принципиально обезличены, а в данных, предоставляемых для данного конкурса, удалены также тексты запросов и адреса сайтов (путем замены на случайные числовые идентификаторы). Таким образом, конкурсная задача представлена в максимально абстрактном математическом виде.

Как и раньше, участвовать можно в одиночку или командой, за первые три места участников ждет денежный приз (до 5000$). Лучшему российскому участнику мы оплатим полет в Сиэтл, США, где пройдет презентация лучших решений (на WSCD 2012 workshop), и регистрацию на ведущую конференцию по веб поиску – WSDM 2012.

Подробная информация о конкурсе, данные и рейтинг решений — на сайте, общение участников — в клубе.

Обзор статей по теме.

P.S.: Зарегистрировалось уже более 200 участников.

Среднеквадратичное приближение функций

Время на прочтение3 мин
Количество просмотров61K
На днях нужно было написать программу, вычисляющую среднеквадратичное приближение функции, заданной таблично, по степенному базису — методом наименьших квадратов. Сразу оговорюсь, что тригонометрический базис я не рассматривал и в этой статье его брать не буду. В конце статьи можно найти исходник программы на C#.
Читать дальше →

Двумерное дерево отрезков (с групповой модификацией элементов)

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

Предисловие и постановка задачи


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

Рециркуляционные нейронные сети

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

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

Арифметическое кодирование

Время на прочтение3 мин
Количество просмотров103K
Сейчас существует множество алгоритмов сжатия информации. Большинство из них широко известны, но есть и некоторые весьма эффективные, но, тем не менее, малоизвестные алгоритмы. Эта статья рассказывает о методе арифметического кодирования, который является лучшим из энтропийных, но тем не менее мало кто о нём знает.
Читать дальше →

Неблокирующие очереди: обмен сообщениями между потоками

Время на прочтение6 мин
Количество просмотров14K
Идею к написанию подобного модуля породил PLM нашего корпоративного продукта. Инспектируя нашу дизайн-документацию, нам сказали, что наш код ни в коем случае не должен блокировать таску из которой он вызывается, и вообще отнимать как можно меньше ее времени, такова особенность построения системы
Читать дальше →

Re: Проблема «maximum-subarray» на примере курса доллара

Время на прочтение2 мин
Количество просмотров3.4K
После прочтения недавней статьи «Проблема «maximum-subarray» на примере курса доллара» 3 раза, мне захотелось плеваться. В статье предлагается найти промежуток дат, за который можно было заработать больше всего на разнице в курсе доллара к рублю за последние 5 лет. Автор предлагает свое «красивое» решение этой задачи, которое он нашел сам (разделяй и властвуй называется, ага), и которое работает за O(n lg n)…

Товарищи, это стыд и срам в блог «Алгоритмы» публиковать очевидно не оптимальное решение тривиальной задачи. Максимальная сумма элементов подмассива в массиве ищется за O(n)! Хоть бы википедию почитали по этой задаче.

Нормальное решение под катом.
Читать дальше →

Алгоритмы отсечения

Время на прочтение5 мин
Количество просмотров56K
С ростом мощности компьютеров всё большая часть людей пробует работать с графикой. На первый взгляд многие алгоритмы кажутся интуитивно понятными, но, если вы хотите, чтобы ваше приложение работало с приемлемой скоростью, вам придётся изучить классические алгоритмы.

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

Проблема «maximum-subarray» на примере курса доллара

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

В чём суть


В статье предлагается найти промежуток дат, за который можно было заработать больше всего на разнице в курсе доллара к рублю за последние 5 лет.
image
На русском языке наименование проблемы будет звучать примерно как максимальная сумма элементов подмассива в массиве. В статье приведен алгоритм вычислений, а так же результат его работы.
Читать дальше →

Соединение компьютер-компьютер через интернет с динамическими IP

Время на прочтение3 мин
Количество просмотров145K
Очень часто мы слышим о том, что установить соединение компьютер-компьютер через интернет с динамическими IP – нереально без внешнего сервера.
А также думал, до определенного времени. Потом у меня закрались подозрения… А после мне стало известно очень многое и тайное.

Однако скайп, аська для передачи файлов, торренты, в конце концов, используют каким-то образом прямое подключение.
Как? Об этом я и хочу рассказать.

Все совпадения случайны, цифры изначально выдуманы.

Читать дальше →

Почему в WiMax и LTE используют OFDM

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


Аббревиатура OFDM расшифровывается как Orthogonal frequency-division multiplexing. В русскоязычной литературе встречается несколько различных переводов, несущих, в принципе, один смысл: OFDM — это механизм мультиплексирования (уплотнения) посредством ортогональных поднесущих.



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





Иллюстраций: 18, символов: 27 399, строк кода: 99.



Читать дальше →

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