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

Алгоритмы *

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

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

Дональд Кнут: Когда же, наконец, выйдет четвертый том

Время на прочтение10 мин
Количество просмотров26K
«Сейчас предельно ясно, что с той скоростью с которой я пишу, я не закончу весь проект до своего девяностолетия.»



Прочитайте и оцените объем работ. И не торопите дедушку Кнута, он и так старается.

Концепция жизни программы

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

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


design


Когда появляется программа? Скорее всего, программа появляется в голове у проектировщика/разработчика, можно назвать это design-time. Но так как этот момент не поддаётся контролю компьютера (пока), то предположим, что моментом появления программы является момент создания минимального запускаемого (о подробном смысле этого термина стоит поговорить отдельно) исходного кода.

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

NaNoGenMo: как компьютеры пишут новеллы

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

Ноябрь считается месяцем литературного творчества. Каждый год в интернете проходит мероприятие NaNoWriMo (National Novel Writing Month). Участники должны до конца месяца написать новеллу длиной не менее 50000 слов. За 17 лет в нем поучаствовали больше 20000 человек.


В 2013 году у программистов появилось аналогичное соревнование — NaNoGenMo (National Novel Generation Month). Задача NaNoGenMo — написать программу, которая сгенерирует новеллу длиной 50000 слов или больше. При этом требования к новелле довольно слабые — подойдет любой текст достаточной длины. Как вы увидите, это может быть сборник рассказов, пьеса, кулинарная книга, словарь или туристический путеводитель. На самом деле, произведение не обязано даже быть текстовым.


image

Графическая новелла «Сгенерированный детектив»

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

Лень двигатель прогресса. Генератор задач. Часть 1

Время на прочтение3 мин
Количество просмотров5K
За время работы преподавателем математики в начальных классах, возникла необходимость часто придумывать однотипные задачи, чтобы набить руку. Вот тут лень и знания пришли на помощь!


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

Ускорение библиотеки HeatonResearchNeural (нейросети) в 30 раз

Время на прочтение4 мин
Количество просмотров7.3K
Всем привет! Хочу поделиться небольшой историей допиливания HeatonResearchNeural — библиотеки разнообразных нейросетей. Сразу оговорюсь, что работаю аналитиком, а честным программистом перестал быть лет 10 назад.

Однако у меня есть собственный проект на C#, который развиваю в свободное время. Чтобы не заморачиваться написанием велосипеда когда-то скачал HeatonResearchNeural прикрутил скотчем и спокойно гонял тесты, дорабатывал логику своего кода и т.д. Для максимального ускорения заложил в архитектуру решения параллелизацию выполнения расчетов и глядя на загрузку CPU по 80-90% по телу разливалось приятное хозяйское тепло — все пашут, все при деле!
Читать дальше →

Голуби брутфорсят парадокс Монти Холла лучше людей

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

Голуби дают людям фору в решении дилеммы Монти Холла, что могло бы позволить им успешно выступать на одноименном ток-шоу. Это закономерность может, в свою очередь, излить свет на то, почему людям так трудно она дается.



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


Когнитивный психолог Massimo Piattelli-Palmarini заметил по этому поводу: Ни одна статистическая задача даже рядом не стоит по способности дурачить всех людей и во все времена.


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

оставить или поменять

[ В закладки ] Зоопарк архитектур нейронных сетей. Часть 1

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


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

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

Просто, мощно, навсегда. Элекард CodecWorks 990 — программный лайв транскодер для AVC и HEVC

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


В прошлой статье мы рассмотрели, как работает аппаратное ускорение кодирования и декодирования видео Quick Sync Video (QSV) в процессорах 6-го поколения Skylake. Маленький участок SoC специально выделили для размещения специализированных интегральных схем, которые занимаются только обработкой видео. Воспроизведение видео с аппаратной поддержкой стало гораздо меньше отнимать ресурсов у других задач в ОС, меньше нагревать CPU и потреблять меньше электроэнергии. Благодаря QSV, например, ноутбук MacBook Air воспроизводит более 10 часов видео на одном заряде аккумулятора.
Читать дальше →

Deep Learning: Сравнение фреймворков для символьного глубокого обучения

Время на прочтение5 мин
Количество просмотров30K
Представляем вам перевод серии статей посвященных глубокому обучению. В первой части описан выбор фреймворка с отрытым кодом для символьного глубокого обучения, между MXNET, TensorFlow, Theano. Автор подробно сравнивает преимущества и недостатки каждого из них. В следующих частях вы узнаете о тонкой настройке глубоких сверточных сетей, а также о сочетании глубокой сверточной нейронной сети с рекуррентной нейронной сетью.


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

Упрощаем бинарный поиск в Excel — реализация Double VLOOKUP Trick с помощью UDF

Время на прочтение3 мин
Количество просмотров11K
Добавлю в копилку статей Хабра о Бинарном поиске еще одну. Речь пойдет о кастомной реализации, может быть полезно всем, кто часто использует в работе ВПР для сравнения больших списков или для поиска данных в больших массивах.
Читать дальше →

Открываем доступ к инструменту для составления списков английских слов из фильмов, книг и статей

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


Skyeng делится с Хабром ссылкой на внутреннее приложение, которым пользуются наши методисты.

Мы в школе Skyeng убеждены, что чем быстрее ученик получает ощутимый эффект от занятия или тренировки, тем выше его мотивация и эффективнее само обучение. Традиционная методика изучения языков обещает конкретный результат лишь через длительное время — год, два, т.е. требует вложения значительных сил, времени и средств без немедленного эффекта. Мы считаем, что вполне реально получить “возврат инвестиций” быстро, если ставить перед собой небольшие конкретные задачи и решать их. Сегодня мы расскажем про один из наших служебных инструментов, предназначенный как раз для этого, и дадим читателям возможность попробовать его в деле, составить собственные списки слов, самые интересные из которых будут предложены всем пользователями Aword!
Читать дальше →

Процедурная генерация планетарных карт

Время на прочтение6 мин
Количество просмотров16K
Речь пойдёт о картографии, имеющей дело с фантастическими мирами.

Положение дел с процедурной генерацией карт


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

Тематическое моделирование на пути к разведочному информационному поиску. Лекция в Яндексе

Время на прочтение19 мин
Количество просмотров17K
Недавно в Москве прошла конференция Data Fest, организованная сообществом Open Data Science и Яндексом. Этой публикацией мы открываем серию расшировок докладов с Data Fest. Автор первого доклада — доктор наук, признанный специалист по машинному обучению и преподаватель Школы анализа данных Константин Вячеславович Воронцов.


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

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

Дональд Кнут: про жену, поцелуи, «Конкретную математику» и взгляд на преподавание в университете

Время на прочтение9 мин
Количество просмотров23K
«У нас вышла калифорнийская книга о математике. Книга, которая показывала неформальный стиль классов в Стэнфорде наравне с тем, что я считаю личным манифестом пути занятия математикой.»
— Дональд Кнут



«В то время была большая суматоха. Некоторые люди жаловались на то, что математика становится слишком абстрактной, что она слишком оторвана от реальности, так что я мог бы немного пошутить, назвав курс „конкретная математика“. Хотя я сказал, что слово „конкретный“ не является на самом деле антонимом абстрактного, это сочетание слова непрерывный и дискретный (CONtinuous and disCRETE).»
— Дональд Кнут

«Я всегда проводил мои занятия, почти как если бы это был языковой урок, а не информатика или математика, я адресовал вопрос студентам и они должны были выяснить, как решить эту проблему или, по крайней мере, сделать следующий шаг на пути к решению проблемы, или попробовать и потерпеть неудачу, а затем мы изучали как её исправить. Знаете, вы не найдете книг, которые описывают, как восстановиться после неудачных предположений. А так мы могли узнать как это делать в классе.»

Программирование&Музыка: Delay, Distortion и модуляция параметров. Часть 4

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

Всем привет! Вы читаете четвертую часть статьи про создание VST-синтезатора на С#. В прошлых частях мы генерировали сигнал, применяли к нему амплитудную огибающую и фильтр частот.


В этот раз мы рассмотрим эффекты Distortion — искажение сигнала, знакомое любому электрогитаристу и Delay (оно же эхо).


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


Исходный код написанного мною синтезатора доступен на GitHub'е.



Скриншот VST плагина GClip


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

Дональд Кнут: как я занялся анализом алгоритмов и ради этого поехал в СССР (37,91,97/97)

Время на прочтение10 мин
Количество просмотров32K
«Андрей (Ершов), представь, как было бы здорово организовать что-то вроде паломничества, где программисты со всего мира могли бы приехать в Хорезм и отпраздновать рождение этого понятия.»
— Дональд Кнут уговаривает Ершова организовать международный симпозиум

image
Кнут и Ершов

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

— Я думаю, я собираюсь стать программистом.
— О, так ты занимаешься численным анализом?
— Не совсем.
— Аааа, искусственный интеллект.
— Нет, и не искусственный интеллект.
— Тогда должно быть ты занимаешься языками программирования?

Divide&Conquer над алгоритмом Штрассена

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

Привет друзья! Будучи студентами одного небезызвестного образовательного проекта, мы с bo_0m, после вводной лекции по курсу Углубленное программирование на Java, получили свое первое домашнее задание. Необходимо было реализовать программу, которая бы перемножала матрицы. И всё бы ничего, да так совпало, что на следующей неделе должна была состояться конференция Joker, и наш преподаватель решил отменить по такому случаю занятие, подарив нам несколько часов свободного пятничного вечера. Не пропадать же времени зря! Раз никто не торопит, то можно подойти к делу творчески.

Welcome, under the hood ↓
Читать дальше →

Создание и оценка количества судоку

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

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

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

Конкурс по программированию на JS: Классификатор слов (специальные призы)

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

Английская версия этой записи — на GitHub.

Итак, 9 из присланных решений оказались самообучающимися. Идея самообучения такова: поскольку все слова выбираются из конечного словаря, а не-слова генерируются случайно, то всякая строка, которая была представлена тестируемой программе повторно, с большей вероятностью окажется словом, чем не-словом. При достаточно продолжительном тестировании большинство слов из словаря успеют повториться, тогда как для не-слов случайные повторения встречаются гораздо реже.

Чтобы пронаблюдать поведение самообучающихся решений, мы протестировали их на 1 000 000 блоков. Тестировать на таком количестве блоков все решения было бы нереально, но эти девять оказались достаточно быстрыми.

На графике ниже показана зависимость процента правильных ответов от числа обработанных блоков. Обратите внимание, что горизонтальная шкала — логарифмическая.

image

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

Google Cloud Vision API‎. Будущее Computer Vision as a service настало?

Время на прочтение8 мин
Количество просмотров42K
Год назад Google сваял платформу Cloud Vision API‎. Идея платформы — предоставить технологии Computer Vision, в которых Google является безусловным лидером, как сервис. Пару лет назад под каждую задачу существовала своя технология. Нельзя было взять что-то общее и добиться, чтобы алгоритм решал всё. Но Google замахнулся. Вот, прошёл уже год. А технология всё так же не на слуху. На хабре одна статья. Да и та ещё не про Cloud Vision api, а про Face api, которое было предшественником. Англоязычный интернет тоже не пестрит статьями. Разве что от самого Google. Это провал?



Мне было интересно посмотреть что это такое ещё весной. Но сил полноценно посидеть не хватало. Изредка что-то отдельное тестировал. Периодически приходили заказчики и спрашивали, почему нельзя применить Cloud Api. Приходилось отвечать. Или наоборот, отсылать с порога в этом направлении. И внезапно понял, что материала на статью уже достаточно. Поехали.
Читать дальше →

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