Минимальные сальто, необходимые для создания пути между источником и назначением в матрице - PullRequest
0 голосов
/ 29 ноября 2018

Расширение задачи https://www.geeksforgeeks.org/find-whether-path-two-cells-matrix/

Здесь необходимо выяснить, существует ли путь в углу матрицы от top left до bottom right.Между ними будут препятствия, как указано в проблеме.Теперь мой вопрос: если не существует пути от источника к месту назначения, каковы минимальные препятствия, которые необходимо перевернуть в матрице, чтобы построить:

  • a) Путь.
  • b) Кратчайший путь

между источником и пунктом назначения.

1 Ответ

0 голосов
/ 29 ноября 2018

Для большей ясности в вашей проблеме, давайте предположим, что нам будет предоставлена ​​двумерная сетка с row числом строк и col числом столбцов целых чисел, содержащих целые числа 0 и 1.

0 : пустая ячейка.
1 : препятствие.

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

a) Путь с минимальным количеством препятствий:
Мы можем найти путь с минимальным количеством препятствий, просто применяя поиск в ширину (BFS) или сначала в глубинупоиск (DFS) и принимая стоимость входа в пустое пространство как 0 и стоимость входа в препятствие как 1.И из каждой клетки мы можем пройти все направления вверх, вниз, вправо и влево.Расстояние по кратчайшему пути, рассчитанное таким образом, даст нам минимальный путь пролета препятствия от верхнего левого до нижнего правого угла матрицы.

b) Кратчайший путь с минимальным количеством препятствий:
Кратчайшая возможная длина пути, начиная с верхнего левого до нижнего правого угла матрицы, всегда будет одинаковой, что равно строке + col - 2, что может быть достигнуто путем обхода направления вправо или вниз от каждой ячейки в сетке.Таким образом, эта проблема также может быть решена с использованием BFS или DFS и обхода только справа или вниз от каждой ячейки, принимая стоимость входа в пустое пространство как 0 и стоимость входа в препятствие как 1.Рассчитанное таким образом расстояние по кратчайшему пути даст нам минимальное количество препятствий, которые нужно перевернуть, чтобы пройти из верхнего левого в нижний правый угол матрицы, используя один из самых коротких путей.Поскольку при обходе не будет цикла, мы также можем решить эту проблему с помощью динамического программирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...