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

Алгоритмы *

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

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

Анализ алгоритма

Время на прочтение3 мин
Количество просмотров18K
image
Что такое анализ?
Анализируя алгоритм, можно получить представление о том, сколько времени займет решение данной задачи при помощи данного алгоритма. Одну и ту же задачу можно решить с помощью различных алгоритмов. Анализ алгоритмов дает нам инструмент для выбора алгоритма.
Результат анализа алгоритмов — не формула для точного количества секунд или компьютерных циклов, которые потребует конкретный алгоритм. Нужно понимать, что разница между алгоритмом, который делает N + 5 операций, и тем, который делает N + 250 операций, становится незаметной, как только N становится очень большим.
Читать дальше →

Стереоизображение — это просто

Время на прочтение3 мин
Количество просмотров52K
Привет, %username%.

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

Введение


Для начала рассмотрим, как устроено стереоизображение и как на него смотреть.
Читать дальше →

Алгоритм Соловея-Штрассена

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

Тест Соловея–Штрассена


Роберт Соловей и Фолькер Штрассен разработали алгоритм вероятностного тестирования простоты числа, который использует символ Якоби. Определяет числа как составные или вероятно простые. Распознает числа Кармайкла как составные.
Читать дальше →

Microsoft Research объявило о прорыве в распознавании речи

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

Коротко и на русском


О новой технологии, над которой в MR работаю уже довольно долго, было объявлено на Interspeech 2011, проходящей сейчас во Флоренции.
С помощью гибридной контекстно-зависимой глубокой нейронной сети (Hybrid Context-Dependent Deep Neural Networks for Large Vocabulary Speech Recognition — CD-DNN-HMM) и Джорджа Дала (George Dahl) из Университета Торонто команде MR удалось улучшить качество и скорость распознавания речи до «почти человеческих» показателей. За счет сходства структур этой нейронной сети с 3D команда добилась значительного прироста скорости при использовании вычислений на GPU.

[ Оригинальная новость ]

Читаем QR код

Время на прочтение5 мин
Количество просмотров1.1M
Иногда возникают такие ситуации, когда нужно прочитать QR код, а смартфона под рукой нет. Что же делать? В голову приходит лишь попробовать прочитать вручную. Если кто-нибудь сталкивался с такими ситуациями или кому просто интересно как же читается QR код машинами, то данная статья поможет вам разобраться в этой проблеме.

В статье рассмотрены базовые особенности QR кодов и методика дешифрирования информации без использования вычислительных машин.

Иллюстраций: 14, символов: 8 510.
Читать дальше →

Декодирование GIF

Время на прочтение4 мин
Количество просмотров18K
В прошлый раз мы разобрались как устроен JPEG (Декодирование JPEG для чайников). Вполне логично, что следующим форматом стал GIF. Кстати, он гораздо проще. Его, в отличии от JPEG, можно декодировать имея только ручку с бумажкой. Сначала, продолжая традицию, я захотел закодировать в GIF favicon Гугла, но потом решил, что лучше расписать процесс декодирования всего файла на маленьком изображении. Без всяких «а дальше по аналогии...». Пришлось долго экспериментировать, и картинка получилась неказистой, зато вполне наглядной для изучения.

Итак, мы будем ковырять вот эту картинку . Видите? :) Тогда она же, увеличенная в 10 раз:


Внутренности в hex-редакторе:

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

Хранения данных алгоритмом «Хранилище, структурированное журналом»

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

«Бойтесь алгоритмов, которые управляют вашей жизнью»

Время на прочтение5 мин
Количество просмотров3.7K
Перевод интервью с Кевином Слэвином (Kevin Slavin), разработчиком игр из Нью-Йорка, сооснователем компании Area/Code (теперь Zynga NY). Он ведёт курс компьютинга и дизайна в Нью-Йоркском университете, а в июле прочитал лекцию на конференции TED на тему алгоритмизации жизни (видеозапись лекции). Интервью опубликовано в журнале New Scientist (выпуск 2826 от 22.08.2011).

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

Основы фрактального сжатия изображений

Время на прочтение4 мин
Количество просмотров35K
Фракталы — удивительные математические объекты, подкупающие своей простотой и богатыми возможностями по построению объектов сложной природы при помощи всего лишь нескольких коэффициентов и простой итеративной схемы.
Именно эти возможности и позволяют использовать их для сжатия изображений, особенно для фотографий природы и прочих сложных самоподобных изображений.
В этой статье я постараюсь коротко дать ответ на простой вопрос: «Как же это делается?».
Узнать, как это делается

Скобочная форма описания графов

Время на прочтение5 мин
Количество просмотров7.8K
Написать эту заметку меня побудила статья «Хранение иерархических данных в плоском виде», в которой автор занимается решением задачи хранения дерева комментариев в виде плоского текста. Дерево это ведь граф, поэтому я вспомнил о молодом и мало известном аппарате описания графов их скобочными образами, на который наткнулся в процессе написания диссертации. О технологии построения скобочных образов графов я и расскажу.
Читать дальше →

Задача о браках и режим возвратов

Время на прочтение6 мин
Количество просмотров4.3K
Бектрекинг – механизм решения переборных задач. Позволяет выбрать либо 1 приемлемую альтернативу, либо наилучшую.
Читать дальше →

Удивительное рядом или как поиздеваться над биржевыми аналитиками (при помощи Excel)

Время на прочтение2 мин
Количество просмотров7K
С каналов вроде CNBC люди в костюмах и дорогих аксессуарах вещают с умным видом о предположительном движении того или иного курса. В качестве визуальной помощи они используют графики курсов с нарисованными поверх них линиями разнообразных индикаторов и фигур технического анализа.

Индикатор (в контексте этой статьи) – это просто какая-то функция над ценой. Например, скользящее среднее (moving average). Существуют сотни разных индикаторов.

Фигура технического анализа – это какой-то известный паттерн, например, треугольник, двойное дно, голова и плечи. Фигур этих тоже сотни.
Читать дальше →

Сжатие данных

Время на прочтение3 мин
Количество просмотров8.6K
Этим вопросом начал интересоваться достаточно давно. Идея экономия памяти, места на дисках витала давно и наверно у всех. Первая попытка написать свой алгоритм сжатия схожий на алгоритм RLE была в 2000 году, затем было еще несколько оригинальных концепций сжатия, но дальше предварительных тестов дело не пошло. В 2005 году взялся за идею сжатия всерьёз. Спустя 6 лет делюсь некоторыми выдержками из исследований.
Читать дальше →

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

FXAA — новый алгоритм сглаживания от NVIDIA

Время на прочтение6 мин
Количество просмотров156K
Здравствуйте.

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

Кластеризация. Алгоритм а-квазиэквивалентности

Время на прочтение3 мин
Количество просмотров7.5K
Странно, но статей о извлечение знаний (data mining) и кластеризации (как одном из основных инструментом, которие используются для извлечения знаний) на Хабре совсем немного. А если говорить говорить о конкретных алгоритмах, то рассматривались только hard/soft k-means.

В статье ниже описывается теория и реализация (Python + matplotlib) не очень известного, но крайне интересного иерархического метода который можно назвать алгоритмом а-квазиэквивалентности.

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

Хранение иерархических данных в плоском виде

Время на прочтение3 мин
Количество просмотров7.9K
На примере хранения дерева комментариев.

Многие наверняка сталкивались с проблемой хранения комментариев, по крайней мере задумывались об этом. Очевидным решением «в лоб» является ссылка на родительский комментарий и, как следствие, рекурсивные вызовы при необходимости отобразить дерево. Современные СУБД поддерживают иерархические запросы, но мне кажется, что это просто перенос проблемы за пределы области видимости, может быть я не прав. В любом случае я писал для Google Application Engine, там разговора об иерархических запросах не идёт вообще.

Мне очень не нравилась перспектива рекурсии и множество мелких запросов к базе, поэтому я стал изобретать какой-то способ получить все комментарии одним простым запросом. И такой способ я довольно быстро «изобрёл». Опросил нескольких знакомых, оказалось, что мало кто на эту тему задумывался, поэтому возьму на себя смелость описать что именно я реализовал.

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

Нечеткая логика на практике

Время на прочтение5 мин
Количество просмотров140K
Стандартная статья о нечеткой логике обычно грешит двумя вещами:

  1. В 99% случаев статья касается исключительно применения нечеткой логики в контексте нечетких множеств, а точнее нечеткого вывода, а еще точнее алгоритма Мамдани. Складывается впечатление, что только этим способом нечеткая логика может быть применена, однако это не так.
  2. Почти всегда статья написана на математическом языке. Замечательно, но программисты пользуются другим языком с другими обозначениями. Поэтому оказывается, что статья просто непонятна тем, кому, казалось бы, должна быть полезна.

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

Алгоритм нахождения N первых простых чисел — Решето Аткина

Время на прочтение6 мин
Количество просмотров19K
В процессе реализации одной программы я столкнулся с задачей поиска простых чисел до числа N порядка 10^9. На хабре уже неоднократно писали про различные способы и методы, но не упоминали про основной метод решения, что я сегодня и постараюсь исправить.

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

Дерево ван Эмде Боаса

Время на прочтение6 мин
Количество просмотров19K
Всем доброго времени суток!

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

Дерево ван Эмде Боаса (van Emde Boas tree) — ассоциативный массив, который позволяет хранить целые числа в диапазоне [0; U), где U = 2k, проще говоря, числа, состоящие не более чем из k бит. Казалось бы, зачем нужно еще какое-то дерево, да еще позволяющее хранить только целые числа, когда существует множество различных сбалансриованных двоичных деревьев поиска, позволяющих выполнять операции вставки, удаления и прочие за O(log n), где n — количество элементов в дереве?

Главная особенность этой структуры — выполнение всех операций за время O(log(log(U))) независимо от количества хранящихся в ней элементов.

Что же там еще есть такого вкусного?

Алгоритм определения попадания точки в контур на основе комплексного анализа

Время на прочтение4 мин
Количество просмотров131K
Привет всем Хабра людям. Хочу представить уважаемым читателям пример, когда сухая и далекая от жизни в нашем понимании высшая математика дала не плохой практический результат.

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

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