Двунаправленный поиск
Двунаправленный поиск – это алгоритм поиска, который находит расстояние от исходной точки до конечной точки в ориентированном графе. Алгоритм запускает 2 одновременных поиск: от начальной точки к конечной и от конечной точки к начальной. Алгоритм заканчивает свою работу, когда оба поиска приходят в одну точку. Т.к. прямой и обратный поиск могут быть выполнены параллельно друг с другом в разных потоках приложения, чисто теоретически, это позволяет получить двукратное уменьшение времени затрачиваемого на поиск. Однако на практике существует ряд дополнительных проблем, которые связаны с таким ускорением алгоритма. Алгоритм двунаправленный поиска должен содержать дополнительную логику, которая будет принимать решение по какой из дуг перейти на следующем шаге. От этого выбора сильно зависит успешность алгоритма. Конечная точка должна быть жёстко задана, но на практике часто возникает необходимость задать конечную точку какими либо параметрами, в этом случае алгоритм двунаправленного поиска в исходном виде не применим. Алгоритм двунаправленного поиска так же должен включать логику, которая будет эффективно определять пересечение двух деревьев поиска для нахождения общей точки, что сильно осложняет реализацию, особенно учитывая тот факт, что коэффициент ветвления обратного поиска может отличаться от коэффициента ветвления прямого поиска.
Такая сложность реализации наталкивает на мысль, что алгоритм поиска A* является лучшим решением в случае если мы может определить эффективную эвристическую функцию.
Однако, не смотря на все сложности реализации алгоритм двунаправленного поиска, зачастую работает эффективней, чем алгоритм A*. Тесты Иры Поль, проведённые на 15 элементной мозаике, показали, что алгоритм двунаправленного поиска позволяет найти кратчайшие пути по сравнению с алгоритмом A*, когда эвристическая функция подобрана не достаточно хорошо. К тому же, существует множество ситуаций когда алгоритм А* требует намного больше ресурсов компьютера для успешного завершения.
- Общие сведения Сведения об эумк
- Методические рекомендации по изучению дисциплины
- Рабочая учебная программа Учреждение образования «Белорусский государственный университет информатики и радиоэлектроники»
- Пояснительная записка
- Содержание дисциплины
- 1. Название тем лекционных занятий, их содержание, объем в часах Наименование тем, их содержание
- 2. Перечень тем ипр
- Перечень тем контрольных работ
- 4. Литература
- 4.1 Основная
- 4.2 Дополнительная
- 5. Перечень компьютерных программ, наглядных и других пособий, методических указаний и материалов и технических средств обучения
- 6. Учебно-методическая карта дисциплины содержание дисциплины
- Теоретический раздел Вступление
- Дискретная и вычислительная математика
- Часть 1. Вычислительная математика Математическое моделирование и вычислительный эксперимент
- 1 Решение систем линейных алгебраических уравнений
- 1.1 Точные методы
- 1.1.1 Метод Гаусса
- 1.1.2 Связь метода Гаусса с разложением матрицы на множители. Теорема об lu разложении
- Теорема об lu разложении
- 1.1.3 Метод Гаусса с выбором главного элемента
- 1.1.4 Метод Холецкого (метод квадратных корней)
- 1.2 Итерационные методы решений систем алгебраических уравнений
- 1.2.1 Метод Якоби (простых итераций)
- 1.2.2 Метод Зейделя
- 1.2.3 Матричная запись методов Якоби и Зейделя
- 1.2.4 Метод Ричардсона
- 1.2.5 Метод верхней релаксации (обобщённый метод Зейделя)
- 1.2.6 Сходимость итерационных методов
- 2 Плохо обусловленные системы линейных алгебраических уравнений
- 2.1 Метод регуляризации для решения плохо обусловленных систем
- 2.2 Метод вращения (Гивенса)
- 3 Решение нелинейных уравнений
- 3.1 Метод простых итераций
- 3.1.1 Условия сходимости метода
- 3.1.2 Оценка погрешности
- 3.2 Метод Ньютона
- 3.2.1 Сходимость метода
- 4 Решение проблемы собственных значений
- 4.1 Прямые методы
- 4.1.1 Метод Леверрье
- 4.1.2 Усовершенствованный метод Фадеева
- 4.1.3 Метод Данилевского
- 4.1.4 Метод итераций определения первого собственного числа матрицы
- 5 Задача приближения функции
- 5.1 Интерполяционный многочлен Лагранжа
- 5.1.1 Оценка погрешности интерполяционного многочлена
- 5.2 Интерполяционные полиномы Ньютона
- 5.2.1 Интерполяционный многочлен Ньютона для равноотстоящих узлов
- 5.2.2 Вторая интерполяционная формула Ньютона
- 5.3 Интерполирование сплайнами
- 5.3.1 Построение кубического сплайна
- 5.3.2 Сходимость процесса интерполирования кубическими сплайнами
- 5.4 Аппроксимация функций методом наименьших квадратов
- 6 Численные методы решения задачи Коши для обыкновенных дифференциальных уравнений и систем дифференциальных уравнений
- 6.1 Семейство одношаговых методов решения задачи Коши
- 6.1.1 Метод Эйлера (частный случай метода Рунге-Кутта)
- 6.1.2 Методы Рунге-Кутта
- 6.2 Многошаговые разностные методы решения задачи Коши для обыкновенных дифференциальных уравнений
- 6.2.1 Задача подбора числовых коэффициентов aк , bк
- 6.2.2 Устойчивость и сходимость многошаговых разностных методов
- 6.2.3 Примеры m-шаговых разностных методов Адамса для различных m
- 6.3 Численное интегрирование жестких систем обыкновенных дифференциальных уравнений
- 6.3.1 Понятие жесткой системы оду
- 6.3.2 Некоторые сведения о других методах решения жестких систем
- 6.3.2.1 Методы Гира
- 6.3.2.2 Метод Ракитского(матричной экспоненты) решения систем оду
- 6.4 Краевые задачи для обыкновенных дифференциальных уравнений
- 6.5 Решение линейной краевой задачи
- 6.6 Решение двухточечной краевой задачи для линейного уравнения второго порядка сведением к задаче Коши
- 6.7 Методы численного решения двухточечной краевой задачи для линейного уравнения второго порядка
- 6.7.1 Метод конечных разностей
- 6.7.2 Метод прогонки (одна из модификаций метода Гаусса)
- 7 Приближенное решение дифференциальных уравнений в частных производных
- 7.1 Метод сеток для решения смешанной задачи для уравнения параболического типа (уравнения теплопроводности)
- 7.2 Решение задачи Дирихле для уравнения Лапласа методом сеток
- 7.3 Решение смешанной задачи для уравнения гиперболического типа методом сеток
- Часть 2. Дискретная математика
- 1. Основные Элементы теории множеств
- 1.1 Элементы и множества
- 1.2 Задание множеств. Парадокс Рассела
- 1.3 Операции над множествами
- 1.4 Булеан множества
- 1.5 Представление множеств в эвм
- Разбиения и покрытия
- 2 Отношения и функции
- 2.1 Прямое произведение множеств
- Элементы комбинаторики
- Теория конфигураций и теория перечисления
- Размещения
- Сочетания
- 3.1 Перестановки и подстановки
- 4 Элементы математической логики
- 5 Конечные графы и сети Основные определения
- 5.1 Матрицы графов
- Матрица смежности Списки инцидентности
- 5.2 Достижимость и связность
- 5.3 Эйлеровы и гамильтоновы графы
- 5.4 Деревья и циклы
- 5.5 Алгоритмы поиска пути
- Двунаправленный поиск
- Поиск по первому наилучшему совпадению
- Алгоритм Дейкстры
- АлгоритмА*
- Остовное дерево
- Матрица Кирхгофа
- 5.6 Конечные автоматы
- 5.6 Элементы топологии
- 5.7 Метрическое пространство
- Указания по выбору варианта
- Контрольная работа № 2 Общие сведения
- Квадратурная формула Гаусса
- Указания по выбору варианта
- Индивидуальные практические работы Индивидуальная практическая работа № 1 Общие сведения
- Интерполяционный полином Лагранжа
- Аппроксимация функций с помощью кубического сплайна
- Приближение формулами Ньютона
- Аппроксимация функций методом наименьших квадратов
- Индивидуальная практическая работа № 2