Обновить
219.74

Алгоритмы *

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

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

Решение MintEye CAPTCHA в 31 строку кода, даже не открывая картинку

Время на прочтение4 мин
Количество просмотров42K
image
Вдохновленный статьей «Решение MintEye CAPTCHA в 23 строки кода», а также горя желанием глубже разобраться в методах выделения краев изображения, таких как оператор Собеля и оператор Кэнни, я решил попытаться самостоятельно повторить описанный в статье алгоритм.

Быстренько набросав скрипт, загружающий с сайта MintEye набор «подопытных» изображений, я было приготовился открыть любимую IDE, чтобы приступить к экспериментам с «высокими технологиями», но заглянув в каталог со скачанными картинками, обнаружил одну очень любопытную закономерность.
Что за закономерность?

Напиши алгоритм для МКС и выиграй 10 тыс. долларов

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

Международная космическая станция

НАСА объявило конкурс на оптимизацию алгоритмов движения солнечных панелей для Международной космической станции. Конкурс ISS Longeron Challenge проводится совместно с порталом TopCoder.
Читать дальше →

Степени — ключ к быстрой иерархии в реляционной БД

Время на прочтение7 мин
Количество просмотров12K
После публикации на Хабре своей первой статьи, об одном из способов организации иерархии в реляционной БД, у меня осталось чувство не доведенного до конца дела.
Судя по комментариям, кто-то принимал предложенный метод за другой, спрашивали чем не устраивает “django-mttp”, рассказывали о поддержке деревьев в PostgreSQL…
Спасибо всем отписавшимся, но из-за сумбурного изложения в самой статье, думаю, что я не сумел донести до читателя то, что хотел. А “если я чего решил, то выпью обязательно”(с)

Поэтому, я решился на еще одну попытку изложения интересующего меня подхода. А именно — хранение иерархии в числовом коде, вычисляемом на основании данных о размерности дерева. То есть, заранее определены максимальные количество Уровней и количество Детей у каждого Родителя (возможные диапазоны достаточно велики, поэтому, заранее пугаться этого не стоит). При таких вводных, код, каждого иерархического элемента, будет являться и путем до него, и включать диапазон всех Детей. А это сулит скорость, и много еще чего…
Далее — с картинками и таблицами, без привязки к какой-либо БД (ибо это не важно).
Читать дальше →

Знания предметной области бесполезны. Когда предсказания становятся игрой, эксперты проигрывают

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

Джереми Ховард — президент и «главный по науке» компании Kaggle, превратившей статистическое прогнозирование в спорт.

Peter Aldhous: Kaggle называет себя онлайн-биржей мозгов. Расскажите об этом.

Джереми Ховард: Это веб-сайт, на котором размещают конкурсы по статистическому прогнозированию. Мы провели много удивительных конкурсов. Например, разработка алгоритма оценки студенческих рефератов. Или вот недавно закончился конкурс на разработку системы обучения Microsoft Kinect жестам. Идея состояла в том, чтобы показать контроллеру жест один раз, а алгоритм должен обучиться распознавать такие жесты в будущем. Еще один конкурс — прогнозирование биологических свойств молекул при скрининге на возможные наркотические свойства.

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

Яндекс и ЦЕРН: новый этап сотрудничества

Время на прочтение8 мин
Количество просмотров33K
Сегодня Яндекс присоединился к ЦЕРНу. Наше партнёрство с Европейским центром ядерных исследований переходит на новую стадию развития: у ученых из ЦЕРНа появится доступ к технологии машинного обучения Матрикснет от Яндекса, а также новым вычислительным мощностям. А Яндекс становится ассоциированным членом европейского Центра ядерных исследований в рамках проекта CERN openlab. Кроме него членами openlab являются Intel, HP, Oracle, Siemens и Huawei.

Сотрудничество Яндекса с Центром началось в 2011 году, когда мы впервые предоставили ЦЕРНу свои серверные мощности. А в апреле прошлого года наши разработчики создали поиск по событиям эксперимента LHCb. LHCb — один из четырёх основных экспериментов ЦЕРНа и один из примеров того, насколько важными в современной науке стали не только данные опытов, но и их обработка. В ходе опытов LHCb исследуются соударения b-кварка (b от английского beauty, по-русски его называют прелестным). Объём информации об этих событиях только за год достигает тысяч терабайт. Благодаря созданнному нами поисковому индексу у учёных ЦЕРНа появилась возможность мгновенно получать нужную информацию.

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



Мы расспросили Андрея Устюжанина, руководителя проекта партнёрства с ЦЕРНом в Яндексе, о подробностях того, для чего именно ЦЕРНу нужна помощь Яндекса и как устроена работа с данными экспериментов. Смотрите видео и читайте более подробную текстовую версию после ката.
Читать дальше →

Решение MintEye CAPTCHA в 23 строки кода

Время на прочтение2 мин
Количество просмотров50K
Как заядлый читатель HAD я был заинтересован этим постом, описывающим способ взлома аудиокапчи MintEye. Графическая версия также выглядела довольно интересно, так что я подумал, что будет забавно взломать и её.

Вот один из примеров графической капчи MintEye:


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

Применяем на практике знания, полученные на курсе MIT 6.00x (edx.org)

Время на прочтение6 мин
Количество просмотров21K
В комментариях к моему посту про курс 6.002x MITx мне задавали вопрос — пригодилось ли изученное в жизни. И я отвечал — да, конечно, вот тут утром пока зубы чистил, RC-константу посчитал… Но пруфов не было. С тех пор я закончил еще два курса — UC Berkeley CS188.1x Introduction to Artificial Intelligence (открыта регистрация на 18 февраля) и MITx: 6.00x Introduction to Computer Science and Programming. И если после CS188.1x я просто был полон эмоций и не знал, куда бы приткнуть свежеполученные знания (кроме как решить задачу о ходе коня), то после прохождения 6.00x подвернулся случай блеснуть.
Читать дальше →

Симуляция жизни в системе Darwinbots. II. Симуляция и простейший бот

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

Приветствую вас еще раз, дорогие хабражители!
Эта статья выкладывается в разгар сессии, так что я могу пропасть из комментариев.

1. Первое знакомство

2. Симуляция и простейший бот


Сегодня разберёмся с настройками симуляции и посмотрим на простейшего бота (или робота, как вам будет удобно). Нет, я не буду досконально рассматривать интерфейс программы – это будет вашим домашним заданием:-) И да, само понятие «генетический алгоритм» четко расписано в Википедии, поэтому опустим это объяснение.
Читать дальше →

ViBe — алгоритм вычитания фона

Время на прочтение5 мин
Количество просмотров17K
Предыстория

Пару лет назад, в процессе выполнения одного проекта, связанного с выделением и сопровождением движущихся объектов, было просмотрено немало алгоритмов вычитания фона, и в итоге одним из самых интересных оказался тот, о котором дальше и пойдет речь. Основной его недостаток — куча патентов, которыми он защищен. Но одно из несомненных достоинств — наличие библиотеки под Linux, которую разрешено использовать в некоммерческих проектах. На странице с его описанием можно найти эту самую библиотеку, а также demo-программы под Windows и Android, ссылки на патенты (где и можно найти основные описания алгоритма) и прочую интересную информацию.
Читать дальше →

Параллельная обработка IEnumerable в .NET

Время на прочтение5 мин
Количество просмотров18K
В предложенной статье рассматривается решение задачи параллельной синхронной обработки IEnumerable, а также откуда такая задача вообще взялась.
Читать дальше →

Метод построения удобочитаемых текстов

Время на прочтение6 мин
Количество просмотров8.1K
Некоторые пояснения:
В мае 2012 года меня посетила идея систематизации процесса написания технических текстов (в основном, отчётов и статей). Взяв за основу некоторые предположения из области эргономики, я ввел несложные допущения и сделал попытку «на лету» составить текст, который бы описывал сам себя как метод построения текстов. Привожу результат такой попытки.
Читать дальше →

Что сложного может быть в вычислении гипотенузы?

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

На первый взгляд это может показаться тривиальной задачей, не так ли? Если сторонами треугольника являются x и y, то, формально, формулой для вычисления гипотенузы будет:

sqrt(x*x + y*y)

Это работает теоретически, но на практике данный подход может приводить к ошибке. Если значение x достаточно велико, то вычисление x*x может привести к переполнению типа данных (ни один тип данных от этого не застрахован, если не рассматривать длинную арифметику), и результатом вычислений будет бесконечность.
Читать дальше →

Заочная олимпиада ФУПМ МФТИ

Время на прочтение1 мин
Количество просмотров7.2K
Как и в прошлом году, в 2012-2013 году проводится Заочная олимпиада ФУПМ по программированию. Подробности на сайте judge.mipt.ru

Олимпиада проводится по кировской системе (то есть баллы приносит даже решение, которое проходит только часть тестов). Результаты будут учтены на собеседовании в МФТИ и при распределении первокурсников по группам по информатике.

Будут задачи разного уровня от самых простых до совсем сложных, чтобы всем было интересно. Победители получат призы и сувениры от факультета и спонсоров. Турнир доступен до 18 февраля.

Составителями контеста являются тренеры и часть состава команд MIPT Waterogers, золотых медалистов ACM ICPC 2011-2012 годов и MIPT Lambda, финалистов ACM ICPC 2012-2013. Все мы являемся аспирантами и выпускниками факультета управления и прикладной математики МФТИ.

Желаем успехов и надеемся, что задачи вам понравятся!
P.S. Вопросы задавайте через проверяющую систему.

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

Эмуляция троичной системы. Вариант концепции

Время на прочтение4 мин
Количество просмотров15K
1. Пролог

Недавно я прочитал замечательную статью [1]. В ней автор рассказывает о том, что не всегда вычислительные машины были двоичными. На заре компьютерной эры существовали машины, которые использовали десятичную и троичную систему счисления.
Десятичная система удобна человеку, но ее достаточно сложно реализовать на существующей элементной базе. Кроме того, десятичная система подвержена ошибкам в результате искажения сигнала при передаче. Троичную систему реализовать не на много сложнее двоичной ([2]), но она способна дать как минимум три преимущества.
Читать дальше →

Проект «робот-грузчик»: определение ориентации

Время на прочтение8 мин
Количество просмотров17K
Месяц назад я писал об определении моим роботом-грузчиком собственного положения. (Жаль, ту статью я запостил в неудачное время в ночь на субботу, так что её мало кто увидел.) Как я отметил, показания колёсных датчиков позволяют роботу определять своё положение достаточно точно — медленно накапливающаяся ошибка корректируется, как только робот сканирует баркод на любой из полок склада. С другой стороны, накапливающуюся ошибку направления корректировать было нечем.

Я обсудил свои затруднения с девушкой-гуманитарием, и спросил, какие ей известны способы ориентации в пространстве. По её словам, в Лондонском музее науки она застала экспозицию, посвящённую ориентации муравьёв по виду вертикально вверх над головой. Посетителям предлагалось взять зеркало и идти по комнате, разглядывая в это зеркало узоры на потолке и ориентируясь лишь по ним. (Карта потолка прилагалась.)

Я решил проверить: что видит на потолке склада мой робот?

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

Дарвиновская эволюция бактерий — полная картина

Время на прочтение8 мин
Количество просмотров18K
Я начну с провокационного заявления — «биологи не публикуют детали своих исследований». Казалось бы столько статей, столько исследований… но где описание и детализация информации, которая получена? Её в принципе нет. А статьи без такой информации пусты и спорны. Каждый нахваливает свой метод, но много ли кто озаботился верификацией чужих данных, а главное смог ли он её сделать?

Можно лишь приветствовать появление таких биоинформационных баз как NCBI genomes и PDB, в которые исследователи помещают данные о секвенированных геномах и структурах РНК, белков. И главное, некоторые ученные прежде чем опубликовать статью, прежде помещают данные в биоинформационные базы.

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

Конечно, так оно выглядит только для таких дилетантов как я. У настоящих же профессионалов все как в аптеке. Поэтому можете не утруждать себя ответом на эти пафосные заявления. Мы просто поговорим как выглядит биоинформатика в её частных областях глазами дилетанта. Но может и вас эта история к чему нибудь побудит.

Мы поговорим ниже о построение дерева эволюции согласно Дарвину, посмотрим на сколько это справедливо и таки я в итоге дам полное дерево (в рамках имеющейся информации) эволюции бактерий на основании самых консервативных генов тРНК. И дам пояснение о методе построения такого дерева.

Специалистам в биоинформатике рекомендую читать с раздела №5, пропустив весь мой пафос.

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

Симуляция жизни в системе Darwinbots. I. Первое знакомство

Время на прочтение3 мин
Количество просмотров30K
Привет, Хабр!

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

Способы передвижения компьютерных персонажей (часть 3)

Время на прочтение4 мин
Количество просмотров26K
Это заключительная часть серии статей, описывающих перемещения компьютерных персонажей. Я расскажу о смешанных видах передвижений, которые сочетают в себе векторные и плиточные методы, небольшая оптимизация плиточных перемещений и ускорение просчетов добавлением сетки к векторам. А так же поведу общее сравнение всех описанных методов в виде таблицы.
Читать дальше →

Результаты новогоднего Хабра-соревнования по программированию, анализ и обсуждение

Время на прочтение11 мин
Количество просмотров39K
Честно говоря, я не ожидал такого количества решений: за 24 часа было прислано 265 решений, из которых после удаления повторных отправок осталось 183.

Из 183 решений у 11 был превышен допустимый размер решения, в 19 случаях — не удалось скомпилировать (об этих ошибках подробнее ниже). Далее 47 дали неправильные ответы на простых тестах (1..1000000), 8 не успели посчитать ответ за минуту (образец решения из условия задачи для 1млн работал 5 минут 36 секунд).

На сложных тестах — 5 решений выдали неверный ответ, и 12 — не уложились в одну минуту. 86 — успешно прошли все тесты.

Если кто потерял, вот топик о старте соревнования с условиями задачи.
Читать дальше →

Способы передвижения компьютерных персонажей (часть 2)

Время на прочтение5 мин
Количество просмотров46K
В предыдущей статье я рассказал о видах передвижений и перемещений в плиточном мире. Сегодня расскажу подробней о векторных способах. Как и в прошлый раз расскажу теорию, объясню суть и покажу пример реализации перемещений на языке C++.
Читать дальше →

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