Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания к расчетно-графической работе.doc
Скачиваний:
23
Добавлен:
02.05.2014
Размер:
294.91 Кб
Скачать

4.1 Метод частных целей

Этот метод имеет весьма общую формулировку: «Необходимо свести трудную задачу к последовательности более простых задач».

Эта рекомендация выглядит естественной, любой человек очень часто использует этот метод решения стоящих перед ним задач, при этом даже не догадываясь (или не отдавая себе отчета) об имеющемся для данного метода названии. С другой стороны, в конкретной сложной задаче часто очень трудно указать способ ее разбиения на набор более простых задач. Здесь большое значение имеет опыт и искусство специалиста. Тем не менее, несмотря на общность метода и отсутствие «точного рецепта» его применения очень важно освоить этот метод, так как он лежит в основе решения многих задач и по своей сути составляет основу алгоритмизации и программирования.

Так, задача преобразования элементов матрицы (замена элементов с определенными значениями на другие вычисляемые значения) может быть сведена к следующим более простым задачам:

  • найти очередной элемент матрицы со значением, совпадающим с заданным;

  • вычислить новое значение элемента по заданной формуле преобразования;

  • заменить старое значение элемента на новое.

    1. Метод подъема

Этот метод, как и предыдущий, можно отнести к одному из общих «рецептов» разработки алгоритмов. Его суть заключается в следующей процедуре: алгоритм начинается с принятия начального предположения или построения начального решения задачи. Затем начинается (насколько возможно) быстрое движение «вверх» от начального уровня по направлению к лучшим решениям. Когда алгоритм достигает точки, из которой больше невозможно двигаться «наверх», он останавливается.

Такой метод применяется, например, в задачах поиска экстремумов (максимумов и минимумов) среди некоторой совокупности числовых данных.

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

Лучшим решением по отношению к начальному является такой элемент совокупности, у которого значение больше ( в случае поиска максимума) или меньше (в случае поиска минимума) по отношению к начальному значению или к промежуточному “лучшему” решению.

Критерием окончания алгоритма (точкой из которой больше невозможно двигаться “наверх”) является просмотр всех элементов из заданной совокупности.

4.3. Программирование с отходом назад

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

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

Задание на РГР не предполагают разработки таких сложных алгоритмов, поэтому на методе отхода назад останавливаться не будем. Интересующиеся студенты могут найти описание этого метода применительно к конкретной задаче в книге Острейковского / 3 /.

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

  1. Тестирование

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

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

Соседние файлы в предмете Архитектура вычислительных систем