假设我从某个顶点(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))空间呢?
复杂性看起来太大而无法实现。有没有更好的算法,复杂度写得正确吗?