Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.37 Mб
Скачать

7.4. Упражнения 319

(a) (b)

Рисунок 7.24: (a) Режущий floorplan; (b) режущее дерево связался с floorplan.

P-7.10 Напишите программу, которая берет, как введено, полностью введенный, арифметика экс-

pression и новообращенные это к двойному дереву выражения. Ваша программа должна показать дерево в некотором роде и также напечатать стоимость, связанную с корнем. Для дополнительной проблемы допускайте листья, чтобы сохранить переменные формы x1, x2, x3, и так далее, которые являются первоначально 0 и который может быть обновлен в интерактивном режиме Вашей программой с соответствующим обновлением в печатной ценности корня дерева выражения.

P-7.11 Напишите программу, которая может играть Tic-Tac-Toe эффективно. (См. Раздел 3.1.3.)

Чтобы сделать это, Вы должны будете создать дерево игры T, который является деревом, где каждый узел соответствует конфигурации игры, которая, в этом случае, является представлением tic-tac-toe правления. Узел корня соответствует начальной конфигурации. Для каждого внутреннего узла v в T, дети v соответствуют государствам игры, которых мы можем достигнуть от государства игры v в единственном юридическом движении для соответствующего игрока, (первый игрок) или B (второй игрок). Узлы на даже глубинах соответствуют шагам для A, и узлы на странных глубинах соответствуют шагам для B. Внешние узлы - или государства финальной игры или на глубине, вне которой мы не хотим исследовать. Мы выигрываем каждый внешний узел со стоимостью, которая указывает, насколько хороший это государство для игрока А. В больших играх, как шахматы, мы должны использовать эвристическую функцию выигрыша, но для маленьких игр, как tic-tac-toe, мы можем построить

все дерево игры и выигрывает внешние узлы как +1, 0,-1, указывая

есть ли у игрока А победа, потяните или проиграйте в той конфигурации. Польза

алгоритм для выбора шагов является минимаксом. В этом алгоритме мы назначаем счет на каждый внутренний узел v в T, таком, что, если v представляет очередь А, мы вычисляем счет v как максимум множества детей v (который соответствует оптимальной игре А от v). Если внутренний узел v представляет очередь Б, то мы вычисляем счет v как минимум множества детей v (который соответствует оптимальной игре Б от v).

320 Глава 7. Деревья

Примечания к главе

Наше использование абстракции положения происходит из положения и введения абстракций узла - duced Aho, Хопкрофтом и Ульманом [5]. Обсуждения классического предварительного заказа, inorder, и методы пересечения дерева постзаказа могут быть найдены в Фундаментальной книге [56] Алгоритмов Нута. Туристический метод пересечения Эйлера прибывает из параллельных алгоритмов commu-вшивый, поскольку он введен Тарьяном и Вишкин [93] и обсужден J´J´ [49] и aa

Карп и Рамачандрэн [53]. Алгоритм для рисования дерева, как обычно полагают, является частью «фольклора» алгоритмов рисования графа. Читатель, заинтересованный рисунком графа, отнесен в книгу Ди Баттисты, Eades, Тамассии и Tollis [28] и обзора Тамассии и Лиотты [92]. Трудный вопрос в Упражнении R-7.11 был сообщен Micha Sharir.

Глава

8

Кучи и приоритетные очереди

Содержание

8.1

8.2

8.3

8.4

8.5

Приоритетный Тип данных Резюме Очереди........ 8.1.1 Ключи, Приоритеты и Полные Отношения Заказа...... 8.1.2 Компараторы...................... 8.1.3 Приоритетная Очередь ADT............... 8.1.4 C ++ Приоритетный Интерфейс Очереди............ 8.1.5 Сортировка с Приоритетной Очередью............. 8.1.6 Приоритетный Класс очереди STL.............

Осуществление Приоритетной Очереди со Списком...... 8.2.1 C ++ Приоритетное Внедрение Очереди, используя Список. 8.2.2 Вид выбора и Вид вставки...........

Кучи........................... 8.3.1 Структура данных Кучи............... 8.3.2 Полные Двоичные деревья и Их Представление.. 8.3.3 Осуществление Приоритетной Очереди с Кучей..... 8.3.4 C ++ Внедрение................. 8.3.5 Вид кучи....................... 8.3.6 Восходящее Строительство Кучи ..........

Приспосабливаемые приоритетные очереди............... 8.4.1 Основанное на списке внедрение............. 8.4.2 Осведомленные о местоположении записи................

Упражнения.........................

322 3 22 324 327 328 329 330 331 333 335 337 337 340 344 349 351 353 357 358 360 361

322

8.1