Algorithm 在图的两个顶点之间寻找唯一路径数的复杂性?

Algorithm 在图的两个顶点之间寻找唯一路径数的复杂性?,algorithm,graph,Algorithm,Graph,假设我从某个顶点(m,n)开始,想要到达一个顶点(I,j),图上有有效路径(值1)和无效路径(值0)。我想找到(I,j)的唯一路径数 我目前的想法有以下伪代码: 从起点将当前节点标记为使用占位符变量“存储原始状态”进行访问 DFS进入相邻节点,在该节点中DFS处理越界和无效路径。如果DFS此时进入节点访问(未访问),请停止DFS,因为存在一个循环 如果DFS发现(i,j),则增加要返回的值 DFS之后,恢复单元格的原始状态 在几个测试用例上进行测试,它是有效的,但我不相信这是最好的解决方案,因为

假设我从某个顶点(m,n)开始,想要到达一个顶点(I,j),图上有有效路径(值1)和无效路径(值0)。我想找到(I,j)的唯一路径数

我目前的想法有以下伪代码:

  • 从起点将当前节点标记为使用占位符变量“存储原始状态”进行访问

  • DFS进入相邻节点,在该节点中DFS处理越界和无效路径。如果DFS此时进入节点访问(未访问),请停止DFS,因为存在一个循环

  • 如果DFS发现(i,j),则增加要返回的值

  • DFS之后,恢复单元格的原始状态

  • 在几个测试用例上进行测试,它是有效的,但我不相信这是最好的解决方案,因为复杂性可能非常大。我不太确定这是否是正确的复杂性:

  • 时间:每个DFS的O(M+N)时间,并可能执行DFS O(MN)时间,所以O(MN*(M+N))时间

  • DFS的每个单元4个调用,所以O(4^(MN))空间

  • 这种复杂性看起来太大,不可行。是否有更好的算法,复杂度是否正确