Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
59
Добавлен:
14.04.2015
Размер:
749 Кб
Скачать
☆

1.10. Контрольные вопросы и упражнения

  1. В чем суть проблемы алгоритмической неразрешимости? Каковы пути решения этой проблемы?

  2. Какие виды обработки данных знаете Вы?

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

4. Предложите несколько вариантов произвольных СА, содержащих 8..10 вершин, используя различные допустимые соединения вершин разных типов. Составьте фрагменты СА для формул (1.3) ... (1.6) и сравните попарно фрагменты . для формул (1.3), (1.5) и (1.4), (1.6). В каком случае вычисления рациональнее и почему ?

6. Для функции y=F(x), представленной разложением в ряд (1.8), постройте СА, позволяющего вычислить значение y в точках разбиения с погрешностью  при равномерном разбиении области определения [a,b] на m частей.

7. Составьте два варианта фрагмента СА для примера 1.6 с использованием и без использования оператора case ... of и сравните их . В чем принципиальное отличие этих вариантов ?

8. Составьте СА определения максимального элемента множества, содержащего 12 чисел. Какое количество сравнений и перестановок элементов понадобится в случае, если массив отсортирован в порядке возрастания элементов? Выведите формулу для количества сравнений и перестановок в случае произвольного количества элементов.

Каким требованиям должны удовлетворять размерности матриц A, B и C, чтобы корректно выполнить матричную операцию D = A + BхC . Сколько циклов понадобится для вычисления матрицы D?

Докажите, что для перемещения самого нижнего, n-го диска в задаче “Ханойские башни” на свободный стержень необходимо 2n-1 одиночных перемещений. Докажите также, что общее число перемещений на свободный диск определяется числом 2n-1.

Составьте СА поиска пути в лабиринте.

Если MIN_A (п.1.6.) описывает встроенную в некий вычислительный процесс (модуль) процедуру, то при обращении к этой процедуре возможны случаи, когда сформированный в основном процессе массив А содержит всего один элемент либо пуст. Составьте СА для процедуры MIN_A, в которой учитывались бы эти случаи .

В СА решения квадратного уравнения (рис 1.4.) используется преобразования уравнения общего вида (1.7.) к приведённому. В некоторых случаях может оказаться что а = 0; при этом вычисление p и q связано с делением на 0, что недопустимо. Скорректируйте данную СА с учётом этого обстоятельства.

Составьте словесное описание алгоритма перемножения двух матриц .

Почему некоммутативна в общем случае операция перемножения двух квадратных матриц одинаковой размерности? В каком частном случае коммутативность имеет место?

1.9. Заключение

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

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

3. Любой вычислительный процесс может быть представлен композицией следующих его фрагментов: линейный, ветвящийся, циклический. Для организации разветвлений и циклов могут быть использованы различные операторы; так, в простейшем случае (одно-два повторения) для организации разветвлений может быть использован оператор while .. do (repeat .. until). Выбор того или иного оператора в конкретном случае остаётся за программистом.

4. Схема алгоритма является наглядным способом представления вычислительного процесса, однако здесь имеется неоднозначность: конкретный алгоритм - это его схема плюс её интерпретация.

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

6. СА допускают эквивалентные преобразования, что может быть использовано для повышения эффективности алгоритмов. С этой же целью имеет смысл выносить из тела цикла все операторы, не связанные с параметром цикла. Важно также обеспечить стыковку циклов друг с другом при их вложенности или цикла с остальной частью алгоритма. Стыковка предполагает передачу переменных и параметров, их переобозначение, вспомогательные вычисления (например начальных параметров следующего цикла) и т.д. Необходимо повышенное внимание уделить особым случаям, встречающихся в данных либо в формулах (например, в алгоритме нахождения минимального числа - это случай, когда входное множество содержит один элемент либо оно пустое; деление на 0 и т.п.), а также двум моментам в организации циклов: как выполнено начало цикла и его конец.