Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TA / Гл 1 ПРОСТЕЙШИЕ АЛГОРИТМЫ.doc
Скачиваний:
28
Добавлен:
14.04.2015
Размер:
749.06 Кб
Скачать

1.8.2. Задача “Ханойские башни”

Эта задача формулируется следующим образом. Имеется три стержня, на одном из которых (назовем его занятым) находятся диски разных диаметров, расположенные на стержне в порядке убывания диаметров снизу вверх; второй стержень назовем свободным, а третий - вспомогательным (рис 1.18). Требуется, производя одиночные перемещения дисков, переместить всю “стопку” дисков с занятого стержня на свободный, используя вспомогательный стержень; при этом на любом шаге диски должны быть расположены на каждом стержне в порядке убывания их диаметров.

Рис. 1.18. Ханойские башни

В табл. 1.15 приведено решение для случая четырех дисков. Здесь А - занятый в начальный момент (нулевой шаг) стержень, В - свободный , а С - вспомогательный стержень. Цифрами обозначен “номер” диска, причем бо`льшему номеру соответствует больший диаметр. Видно, что процесс перемещения стопки дисков можно разбить на фазы ( 1-я фаза - шаги 1-8, 2-я фаза - шаги 9-12, 3-я фаза - шаги 13 и 14, 4-я фаза - шаг 15), в течение каждой из которых на свободный стержень перемещается самый нижний из оставшихся в предыдущей фазе дисков. Подчёркнуты номера дисков на свободном стержне, которые были нижними в начале данной фазы, а прямоугольником обведены номера дисков, собранных на вспомогательном (занятом) стержне к началу следующей фазы. Отметим, что в середине процесса в качестве вспомогательного выступают то стержень А, то стержень С.

Анализ перемещений дисков по табл. 1.5 позволяет выявить определенные закономерности, составить словесное описание алгоритма перемещений для общего случая (количество дисков произвольно), а затем перейти к разработке схемы алгоритма.

Таблица 1.5.

Шаг

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

A

4-1

4-2

4,3

4,3

4

4,1

4,1

4

0

0

2

2,1

2,1

2

0

0

B

0

0

2

2,1

2,1

2

0

0

4

4,1

4,1

4

4,3

4,3

4-2

4-1

C

0

1

1

0

3

3

3,2

3-1

3-1

3,2

3

3

0

1

1

0

Чтобы переместить самый нижний диск на стержень В, необходимо 2n-1 перемещений. Общее число перемещений равно

. (1.23)

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

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, что недопустимо. Скорректируйте данную СА с учётом этого обстоятельства.

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

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

Соседние файлы в папке TA