- •5. Что такое пространственная сложность алгоритма?
- •6. Какая структура данных называется односвязным списком?
- •7. Какая структура данных называется двусвязным списком?
- •8. Какая структура данных называется циклическим списком?
- •9. Какая структура данных называется стеком?
- •10. Какая структура данных называется очередью?
- •19. Какая структура называется неориентированный граф?
- •20. Какая структура называется ориентированный граф?
- •21.Методы хранения графов (матрицы смежности, инцидентности, списки смежных вершин).
- •29. Стек и дерево вызовов подпрограмм.
- •36. Рекурсия и решение головоломок.
- •37. Рекурсия и игры двух игроков.
- •38. Дерево решений для игр двух игроков.
- •39. Стратегия минимакса.
- •40. Альфа-Бета отсечение.
- •41. Последовательный поиск.
- •42. Последовательный поиск.
29. Стек и дерево вызовов подпрограмм.
Стек - структура данных, в которых включения и исключение элементов осуществляется с одного конца. Чаще всего, принцип работы стека сравнивают со стопкой тарелок: чтобы взять вторую сверху, необходимо снять первую.
Один из основных способов применения стека связан с вызовом подпрограмм рекурсии. Система или подпрограмма должна помнить место, где произведен вызов, чтобы туда вернуться после того, как функция завершит работу. А также должна сохранять в стеке все локальные переменные и регистры. Для того чтобы вызвавшая подпрограмма могла продолжать свою работу после того, как вызываема подпрограмма завершила свою работу.
Дерево вызова подпрограмм – (связь между стеком и вызовом подпрограмм). Древовидная схема показывает порядок, в котором вызываются подпрограммы. Главная программа представлена в виде корня. Те функции, которые вызываются из нее, представляются в виде узлов над корнем. Если в тексте вызов встречается несколько раз, но в цикле, то в дереве несколько ответвлений. Если в тексте вызов встречается несколько раз, но в операторе условия или выбора, то в дереве будет одна вершина.
30. Хвостовая рекурсия.
Специальный случай рекурсии, при котором рекурсивный вызов функции самой себя является ее последней операцией.
31. Алгоритм прохождения (обхода) деревьев в глубину.
При поиске в глубину развертывается самый главный узел в текущей сын -> лист периферии поиска. Прохождение в глубину может выполняться в прямом и обратном порядках.
32. Алгоритм прохождения (обхода) деревьев в ширину.
В начале развертывается корневой узел, затем преемники корня, затем преемники этих преемников и т.д.
33. Двунаправленный поиск.
Если нам известна начальная и конечная вершина, то мы можем сократить поиск, запустив поиск из начальной в конечную вершину. Поиск заканчивается только в том случае, когда обнаруживается вершина на периферии двух поисков.
34. Алгоритм AI-поиска.
- Начальное состояние;
- Описание возможных действий;
- Проверка цели;
- Функция стоимости пути;
35. Рекурсия и задачи удовлетворения ограничениям.
Задача о ферзях:
Первая инкрементная формулировка:
1. Состояние – любое расположение ферзей на доске в количестве от 0 до N;
2. Начальное состояние – отсутствие ферзей на доске;
3. Функция определения приемника – установка ферзя на любую пустую клетку;
4. Проверка цели;
Вторая формулировка:
1. Состояние – расположение с n ферзями (0<=n<=N) по одному ферзю в каждой из находящихся слева n вертикалей.
2. Начальное состояние – отсутствие ферзей на доске.
3. Функция определения приемника. Установка ферзя на любой клетке в находящейся слева пустой вертикали таким образом, чтобы он не был атакован другими.
4. Проверка цели.
36. Рекурсия и решение головоломок.
Игра в «8» (аналог «15»).
1. Состояние – местонахождение каждой из восьми фишек.
2. Начальное состояние – любое состояние.
3. Функция определения приемника – результат попыток осуществления указанных 4 действий.
4. Проверка цели.
5. Стоимость пути – каждый этап стоит 1, стоимость пути = сумме этапов.
