电路布线java代码,算法设计与分析——电路布线(动态规划)

本文介绍了电路布线问题,即如何在电路板上安排导线使得同一层上的连线不相交,并最大化连线数量。通过动态规划算法思路进行分析,包括最优子结构性质、递归计算最优值、构造最优解的过程。同时提供了C++代码实现,用于演示算法的运行。
摘要由CSDN通过智能技术生成

一、问题描述

在一块电路板的上下两端分别有n个接线柱。根据电路设计,要求用导线 (i,π(i)),将上端接线柱 i 与下端接线柱 π(i) 相连,

如图,其中 π(i),1<=i<=n,是(1,2……,n)的一个排列。导线(i,π(i))称为该电路板上的第i条连线。对于任何 1<=i π(s)。

434274ffa7b6a178c9fa50562283c692.png

在制作电路板时,要求将这n条线分布到若干个绝缘层上,在同一层上的连线不能相交。电路布线问题要确定将哪些连线安排在第一层上,使得该层上有尽可能多的连线。换句话说,该问题要求确定导线集Nets = { (i,π(i)),1<=i<=n }的最大不相交子集。

二、算法思路

1、最优子结构性质

08a8b8615b5257a4492bd4cb90ab2464.png

N(i,j)表示上面节点i与下面节点j连线的左侧区域内(包括i j连线)的连线集合,MNS(i,j)表示连线左侧区域内最大不相交连线子集,Size(i,j)表示MNS(i,j)集合中连线的个数。

在这里注意N(i,j)和MNS(i,j)表示的都是集合!!内存储

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值