印刷电路板将布线区域分为n*m个方阵阵列,如图所示。精确的电路部分问题要求确定方格a的中点到方格b的中点的最短布线方案。在布线时,电路只能沿着直线或者直角布线,如图b所示。为了避免线路相交,已经布了线的方格做了封锁标记,其他线路不允许穿过被封锁的方格。
思路主要时利用分支限界法,首先将起始点作为当前活结点,寻找活结点四周可以布线的点加入队列作为下一个拓展结点。
后弹出队列第一个元素作为当前活结点继续寻找拓展结点,循环直至找到终点或者队列为空(表示无解)
import numpy as np
from queue import Queue
class Position(object):
def __init__(self, row, col):
self.row = row
self.col = col
def FindPath(start, finish, n, m, grid): # 起始点,结束点,路径长,路径
global path, PathLen1
if start.row == finish.row and start.col == finish.col:
Pathlen = 0
return True
grid[0, 0:m + 1] = grid[n + 1, 0:m + 1] &#