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

Алгоритмы *

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

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

Генерация музыки на основе заданного стиля

Время на прочтение14 мин
Количество просмотров11K
В данном посте я хочу рассказать об очень простом способе генерации музыки в заданном стиле с помощью контекстно-зависимой грамматики.

А как это?

Векторизуем изображение генетическим алгоритмом

Время на прочтение21 мин
Количество просмотров6.5K
Итак, на выходных мы должны весело отдохнуть, а потому попробуем векторизовать изображение генетическим алгоритмом.
Векторизованный доктор Хаус
Хочу знать как!

Атака зомби: математическая модель заражения

Время на прочтение1 мин
Количество просмотров4.4K
В одном из американских издательств вышел любопытный сборник научных работ по моделированию инфекционных болезней. Одна из статей в сборнике (18-страничный PDF) посвящена весьма «актуальной» сегодня теме — моделированию атаки зомби [When Zombies Attack!: Mathematical Modelling Of An Outbreak Of Zombie Infection – P. Munz, I. Hudea, J. Imad and R.J. Smith?].

Учёные составили базовую математическую модель скорости распространения атаки зомби, в зависимости от количества жителей.
Читать дальше →

Структуры данных: бинарные деревья. Часть 2: обзор сбалансированных деревьев

Время на прочтение6 мин
Количество просмотров248K
Первая статья цикла

Интро


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

Алгоритмы на графах — Часть 2: Сортировка сетей

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

Пролог

В продолжение опубликованной на выходных статьи.

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

Структуры данных: бинарные деревья. Часть 1

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

Интро



Этой статьей я начинаю цикл статей об известных и не очень структурах данных а так же их применении на практике.

В своих статьях я буду приводить примеры кода сразу на двух языках: на Java и на Haskell. Благодаря этому можно будет сравнить императивный и функциональный стили программирования и увидить плюсы и минусы того и другого.

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

Поиск нечетких дубликатов. Алгоритм шинглов для веб-документов

Время на прочтение4 мин
Количество просмотров45K
Ранее я показал элементарную реализацию алгоритма шинглов, позволяющую определять, являются ли два документа почти дубликатами или нет. В этот раз я поясню реализацию алгоритма, описанную Зеленковым  Ю. Г. и Сегаловичем И.В. в публикации «Сравнительный анализ методов определения нечетких дубликатов для Web-документов».
Этим я начинаю серию из трех теоретических статей, в которых постараюсь доступным языком описать принцип алгоритмов шинглов, супершинглов и мегашинглов для сравнение веб-документов.
Читать дальше →

Алгоритмы на графах — Часть 0: Базовые понятия

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

Вступление


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

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

Задача о назначениях

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

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

Give us the tools, and we will finish the job

Фильтрация изображений методом свертки

Время на прочтение6 мин
Количество просмотров87K
Автором данного топика является хабраюзер Popik, который сам не может запостить этот топик в силу астральных причин.

Введение.


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

Что же там дальше?

Классические алгоритмы — интересна ли тема?

Время на прочтение1 мин
Количество просмотров15K
Добрый день!

В последнее время сталкиваюсь с большим количеством разнообразных классических алгоритмов (как на занятиях в ВУЗе так и на практике в проектах), поэтому хочу поделиться с хабра-сообществом интересными материалами на данную тему. Думаю что далеко не все здесь знают о каких алгоритмах идет речь, но вполне возможно что они могли бы быть полезны вам.
В недавний пост: «Максимальный поток минимальной стоимости» навел меня на мысль попробовать описать каждый из этих классических алгоритмов отдельно и подробно.
То есть дать описание каждого алгоритма, вместе с его вычислительной сложностью и сферами применения.

Что я имею ввиду под «классические алгоритмы»:
BFS, DFS, Min Spanning Tree (Prim, ..), Shortest Path(Dijkstra, B-F) и многие другие. Это основные алгоритмы которые изучаются на курсе по алгоритмам и затем широко применяются в различных сферах.

Поэтому собственно вопрос, стоит ли освещать эту тему здесь или нет?
Заранее спасибо за комментарии!

Максимальный поток минимальной стоимости

Время на прочтение15 мин
Количество просмотров86K
Транспортная задача (классическая) — задача об оптимальном плане перевозок товара со складов в пункты потребления на транспортных средствах.

Для классической транспортной задачи выделяют два типа задач: критерий стоимости (достижение минимума затрат на перевозку) или расстояний и критерий времени (затрачивается минимум времени на перевозку).

Под катом очень-очень много текста, т.к. рассказывается один из вариантов решения данной задачи «в картинках» для тех, кто мало знаком с графами. Листинг прилагается.

Путешествие в тысячу миль начинается с первого шага

Вычисление значения выражения

Время на прочтение7 мин
Количество просмотров48K
В продолжение поста Компилятор выражений. По просьбам читающих. Специально для michurin

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

Суть метода 2х стеков (наверняка у него есть красивое научное название.) заключается в том, что любое сложно выражение, в конечном счете, сводится к последовательности простых операций. В нашем случае это будет бинарная операция над операндами A и В.

Мы будем идти слева на право, добавляя операнды в один стек, а операции в другой. При каждом добавлении новой операции мы будем пытаться вытолкнуть из стека старые, руководствуясь приоритетами операций.
Читать дальше →

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

Делаем Liquid Resize своими руками

Время на прочтение12 мин
Количество просмотров16K
Вы наверное уже слышали о технологии масштабирования Liquid Resize, которая учитывает содержимое изображения. Если вам интересно как оно все работает и как можно реализовать все это самому, то читайте далее (осторожно, много рисунков).


(НЛО прилетело и растянуло этот рисунок здесь)
Читать дальше →

Легенда о «Сетуни»

Время на прочтение3 мин
Количество просмотров4.2K
В далёкие времена, когда деревья были ниже, а космос ещё так далёк, где-то в конце 50-х прошлого столетия, зарождалась эра вычислительных машин.
Инженеры в белых халатах творили историю.
Транзисторы, диоды, реле, ферритовые кубы… создавались первые ЭВМ.
В стенах МГУ появилась легенда. И имя ей — Сетунь.

Промышленный образец ЭВМ «Сетунь», ВДНХ, 1961 год
Продолжение

«Находка». Новый поисковый алгоритм Яндекса

Время на прочтение1 мин
Количество просмотров732
Наконец-то Yandex запустила алгоритм, анонсированный в начале лета. Обещаний касательно него было дано не мало и многие оптимизаторы его, мягко говоря, побаивались. Оказалось зря, в ночь с 10 на 11 сентября произошел мощное обновление выдачи с прикрученным алгоритмом «Находка». Мне, как оптимизатору, так и рядовому пользователю новая система ранжирования документов очень понравилась, из плюсов можно выделить:

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

Анимированое сравнение алгоритмов сортировки

Время на прочтение1 мин
Количество просмотров10K
На днях наткнулся на интересную страничку, позволяющую наглядно оценить различные алгоритмы сортировки на разных наборах данных.

(картинка Кликабельна)
Небольшое описание под катом...
12 ...
52

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