Я понимаю, что есть 3 распространенных способа представления графиков:
- Матрица смежности
- Список смежности
- Список краев
Тем не менее, проблемы, которые я решил с помощью LeetCode, часто используют матрицы, а для решения требуется DFS или BFS. Например, учитывая приведенную ниже матрицу, найдите, существует ли целевая строка при go влево, вправо, вверх и вниз (но не по диагонали).
[
[‘a’,‘p’,’p’],
[‘e’,’a’,’l’],
[‘r’,’t’,’e’]
]
Для этого требуется подход DFS. Это потому, что эта матрица представляет граф или DFS и BFS применимы и к матрицам, а не только к деревьям и графам?
Всегда ли / в основном DFS и BFS используются против матриц (двумерных массивов) в реализации или есть случаи, когда они используются против класса Graph?