Рубрика «Алгоритмы» - 311

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

image
Читая книгу “Идеальный код” под редакцией Энди Орама и Грега Уилсона мне довелось натолкнуться на интереснейшую задачу в главе посвященной параллельной обработке (гл. 24. стр. 444). В ней автор, Саймон Пейтон Джоунс, приводит решение на языке Haskell. Там же он утверждает, что существуют решения задачи Сата Клауса для языков Ada95 и Polyphonic C#. В силу профессиональных интересов несколько ранее мне приходилось обсуждать с коллегами возможности многопоточной Apple реализации для языка Objective-C.

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

АРСС моделирование в физике
Проблема прогнозирования и описания временных рядов будоражит умы учёных и людей уже много лет. Исторически сложилось что модели из эконометрии крайне редко используются в, к примеру, физике или биологии. И наоборот.
Читать полностью »

Удивительно, насколько жизнь человечества зависит от математики, если одна простенькая формула может породить мировой финансовый кризис.

Модель Блэка Шоулза: формула, которая изменила фондовый рынок

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

Математическая модель Блэка-Шоулза, представленная в 70-е годы, породила к жизни новую финансовую систему, основанную на торговле опционами, фьючерсами и деривативами. В этой новой системе не было ничего от старых классических фондовых рынков. Феноменальный успех и широкое распространение формулы привело к тому, что Майрон Шоулз получил Нобелевскую премию по экономике в 1997 году «за новый метод определения стоимости производных ценных бумаг».
Читать полностью »

Событие в объектно-ориентированное программировании (ООП) — это сообщение, которое возникает в различных точках исполняемого кода при выполнении определённых условий. Данные сообщения направляются обработчикам (слушателям), что позволяет своевременно реагировать на изменившееся состояние системы.

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

Подкаст

http://ruby.rpod.ru/274255.html

Новости

Читать полностью »

В настоящей статье я хотел бы сделать обзор популярных алгоритмов для решения задачи нахождения максимальной общей подпоследовательности или LCS (longest common sequense). Так как акцент сделан на обучении, а не на реальном использовании, в качестве языка для реализации выбран Python, что позволит сократить количество кода и сконцентрироваться на основных идеях.
Читать полностью »

Данная статья рассказывает не только о наиболее распространённых фильтрах обработки изображений, но в понятной форме описывает алгоритмы их работы. Статья ориентирована, прежде всего, на программистов, занимающихся обработкой изображений.

Читать полностью »

СловоманияВпервые увидев Словоманию, я запал на нее очень крепко, проводя бесконечные часы отгадывая слова. Суть игры: есть сетка 4х4, в каждой ячейке расположена буква. Задача игрока — составлять слова, последовательно соединяя буквы между собой.
После энного количества времени появилась идея: а что если автоматизировать процесс разгадывания слов? Ведь зачастую я и сам занимаюсь простым перебором комбинаций в попытках сложить слово. Очевидно, что компьютер справится с такой задачей гораздо продуктивнее любого человека. Конечно, за исключением тех случаев, когда слово сразу «видно» на поле, но эта задача уже решена нашим мозгом, так что было решено заняться разделением труда между мозгом и компьютером, чтобы каждый занимался тем, что ему проще дается.
Читать полностью »

Введение

Структуры данных можно разделить на две группы: эфемерные (ephemeral) и персистентные (persistent).

Эфемерными называются структуры данных, хранящие только последнюю свою версию.
Персистентные структуры, то есть те, которые сохраняют все свои предыдущие версии, в свою очередь можно разделить еще на две подгруппы: если структура данных, позволяет изменять только последнюю версию, она называется частично персистентной (partially persistent), если же позволяется изменять любую версию, такая структура считается полностью персистентной (fully persistent).

Далее будет рассмотрено дерево отрезков и его полностью персистентная версия.
Весь код доступен на GitHub.
Читать полностью »

Люди, использующие системы контроля версий исходного кода (SVN, Mercurial, Git и т.п.), наверняка часто пользуются возможностью сравнения версий файлов для просмотра внесенных пользователями изменений. Существует множество независимых программ сравнения версий (WinMerge, BeyondCompare и др.). При сравнении версий, как правило, две версии файла показываются рядом друг с другом таким образом, чтобы одинаковые (неизменившиеся) части документов были расположены напротив друг друга, а изменившиеся (добавленные и удаленные) выделяются соответствующим цветом.
Уверен, многим было бы интересно узнать, какие алгоритмы могут использоваться для реализации такого сравнения.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js