分支限界法解布线问题Python实现

印刷电路板将布线区域分为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] &#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值