每个矩阵在概念上都对应一个图吗?
Does every matrix correspond to a graph conceptually?
我知道有 3 种常用的图形表示方法:
- 邻接矩阵
- 邻接表
- 边缘列表
也就是说,我在 LeetCode 上解决的问题通常使用矩阵,解决方案需要 DFS 或 BFS。例如,给定下面的矩阵,当您向左、向右、向上和向下(但不是对角线)时,查找目标字符串是否存在。
[
[‘a’,‘p’,’p’],
[‘e’,’a’,’l’],
[‘r’,’t’,’e’]
]
这需要 DFS 方法。这是因为这个矩阵表示一个图,还是 DFS 和 BFS 也适用于矩阵而不仅仅是树和图?
DFS 和 BFS always/mostly 是在实现中针对矩阵(二维数组)使用还是在某些情况下针对图 class 使用?
图算法通常用于解决未明确表示图的数据结构问题,例如矩阵。该图不在数据中。当您解决问题时,它就在您的脑海中。例如,"If I think of this as a graph, the I can solve the problem with DFS or BFS"。然后你编写一个 BFS 或 DFS 算法,将遍历操作映射到你 do 拥有的数据结构中的任何等效项。
这称为在 "implicit graph" 上操作:https://en.wikipedia.org/wiki/Implicit_graph
如果您实际上从您的数据中制作了一个图形数据结构——一个显式图形——那么你可以编写一个BFS或直接进行 DFS,但这通常是不必要的,而且实际上是浪费。
我知道有 3 种常用的图形表示方法:
- 邻接矩阵
- 邻接表
- 边缘列表
也就是说,我在 LeetCode 上解决的问题通常使用矩阵,解决方案需要 DFS 或 BFS。例如,给定下面的矩阵,当您向左、向右、向上和向下(但不是对角线)时,查找目标字符串是否存在。
[
[‘a’,‘p’,’p’],
[‘e’,’a’,’l’],
[‘r’,’t’,’e’]
]
这需要 DFS 方法。这是因为这个矩阵表示一个图,还是 DFS 和 BFS 也适用于矩阵而不仅仅是树和图?
DFS 和 BFS always/mostly 是在实现中针对矩阵(二维数组)使用还是在某些情况下针对图 class 使用?
图算法通常用于解决未明确表示图的数据结构问题,例如矩阵。该图不在数据中。当您解决问题时,它就在您的脑海中。例如,"If I think of this as a graph, the I can solve the problem with DFS or BFS"。然后你编写一个 BFS 或 DFS 算法,将遍历操作映射到你 do 拥有的数据结构中的任何等效项。
这称为在 "implicit graph" 上操作:https://en.wikipedia.org/wiki/Implicit_graph
如果您实际上从您的数据中制作了一个图形数据结构——一个显式图形——那么你可以编写一个BFS或直接进行 DFS,但这通常是不必要的,而且实际上是浪费。