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

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

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

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

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

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

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

Разделим процесс строительства на три этапа:

  1. Изыскания
  2. Подготовка
  3. Стройка

Теперь этапы можно разрабатывать, доводить до частных действий по отдельности.

         Изыскания

  1. ЕСЛИ место стройки не N-ская область, то перейти к п. 6, иначе перейти к п. 2
  2. Найти площадку для строительства на берегу реки X
  3. Исследовать грунт
  4. Разработать проект
  5. Перейти к этапу ПОДГОТОВКА
  6. Перенести строительство на другой срок

    Подготовка

  7. ЕСЛИ все строители имеют жилье, то перейти к этапу СТРОЙКА
  8. Построить палатку
  9. Построить времянку

    Стройка

  10. И так далее.

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