Разработка алгоритмов

редактировать

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

Содержание
  • 1 Истоки
  • 2 Отличия от теории алгоритмов
  • 3 Методология
    • 3.1 Реалистичные модели и реальные исходные данные
    • 3.2 Дизайн
    • 3.3 Анализ
    • 3.4 Реализация
    • 3.5 Эксперименты
    • 3.6 Разработка приложений
    • 3.7 Библиотеки алгоритмов
  • 4 Конференции
  • 5 Ссылки
Истоки

В 1995 г. 27>Семинар, спонсируемый NSF, «с целью оценки текущих целей и направлений сообщества Теории вычислений (TOC)» определил медленную скорость принятия теоретических выводов практиками как важную проблему и предложил меры по

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

Но также и многообещающие алгоритмические подходы игнорировались из-за трудностей математического анализа.

Термин «разработка алгоритмов» впервые был использован со специфичностью в 1997 году, когда был проведен первый семинар по разработке алгоритмов (WAE97), организованный Джузеппе Ф. Итальяно.

Отличие от теории алгоритмов

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

Таким образом, он может по-новому взглянуть на эффективность и производительность алгоритмов в тех случаях, когда

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

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

Реалистичный модели и реальные входные данные

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

Дизайн

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

Анализ

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

Реализация

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

Эксперименты

См.: Экспериментальная алгоритмика

Разработка приложений

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

Библиотеки алгоритмов

Стабильно, хорошо Библиотеки протестированных алгоритмов, такие как LEDA, играют важную роль в передаче технологий, ускоряя внедрение новых алгоритмов в приложениях. Такие библиотеки снижают требуемые инвестиции и риски для практиков, поскольку снимают бремя понимания и применения результатов академических исследований.

Конференции

Ежегодно организуются две основные конференции по разработке алгоритмов, а именно:

  • Симпозиум по экспериментальным алгоритмам (SEA), основанный в 1997 году (ранее известный как WEA).
  • Совещание SIAM по разработке алгоритмов и экспериментам (ALENEX), учрежденное в 1999 г.

Семинар 1997 г. по разработке алгоритмов (WAE'97) проходил в Венеции (Италия) 11–13 сентября 1997 г. Третий международный семинар по разработке алгоритмов (WAE'99) был проведен в Лондоне, Великобритания, в июле 1999 года. Первый семинар по разработке алгоритмов и экспериментированию (ALENEX99) был проведен в Балтиморе, штат Мэриленд, 15–16 января 1999 года. Он был спонсирован DIMACS, Центр дискретной математики и теоретической информатикиУниверситете Рутгерса ), при дополнительной поддержке SIGACT, Специальной группы ACM по Теория алгоритмов и вычислений и SIAM, Общество промышленной и прикладной математики.

Ссылки
Последняя правка сделана 2021-06-10 22:44:24
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте