0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

电路板电路布线设计相关问题

西西 来源:博客园 作者:祥昊 2020-08-08 11:01 次阅读

问题

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

如图,其中 π(i),1《=i《=n,是(1,2……,n)的一个排列。导线(i,π(i))称为该电路板上的第i条连线。对于任何 1《=i《s《=n,第i条连线和第s条连线相交的充分且必要条件是 π(i) 》 π(s)。

ps:注意 π(pi) 和 n,不是小写的n,别看错了

问:在制作电路板时,要求将这n条线分布到若干个绝缘层上,在同一层上的连线不能相交。电路布线问题要确定将哪些连线安排在第一层上,使得该层上有尽可能多的连线。

详细说明

首先 上下各有 n 个接线柱,用 a[i] 数组表示 与 上接线柱 相连线的 下接线柱,再用 set[i][j] 表示上接线柱 i 与下接线柱 j 相连线的 左边(包括 i ,j 连线)的最大不相交连线的个数。

ps(这里的 j ,i 和上面问题中说的不是一个东西,这里的 i指的是上接线柱,j指的是下接线柱)

1、公式如下:

如果 j != a[i] 则 max( set[i-1][j],set[i][j-1] )

set[i,j] =

如果 j == a[i] 则 set[i-1][j-1] + 1

循环遍历 i 和 j ,具体使用 i X j 的嵌套循环,其实就是每一个上接线柱和每一个下接线柱做一次匹配,这样就可以得出结果,set[n][n]即我们想要的结果。最后通过回溯把结果输出出来

==》 j == a[i],表示当上图中的某个上下接线柱相连时,这时这两个点不会在和其他的接线柱相连,

这时在 (i ,j) 处的最大不相交连线的个数就应该是就是 第 i-1个上接线柱 和第 j-1个下接线柱时的 最大不相交连线的个数 + 1。这个+1很重要。

==》 j != a[i],表示当上图中的某个上下接线柱相连时,这时 i 点和 非 j 点相连, j 点和 非 i 点相连,

这时在( i ,j) 处的最大不相交连线的个数就应该和 ( i - 1,j ) 处最大不相交连线的个数、 ( i,j - 1)处最大不相交连线的个数中较大的最大不相交连线的个数相同。

2、参考图如下:

红色标明的就是算法选择的路径(向上优先,也可以用向左优先,答案都是四个,但值会有一点不同)。在斜角值改变时可以取得所求的子集。即 9-》10,7-》9, 5-》5, 3-》4

代码块

#include 《stdio.h》

#include 《stdlib.h》

#define MAX( a, b ) ( (a) 》 (b) ? (a) : (b) )

void circut( int a[], int set[][11], int n );

void back_track( int i, int j, int set[][11] );

int main()

{

int a[] = { 0, 8, 7, 4, 2, 5, 1, 9, 3, 10, 6 };

int set[11][11];

circut( a, set, 10 );

printf( “max set: %d \n”, set[10][10] );

back_track( 10, 10, set );

printf( “\n” );

system( “pause” );

return(0);

}

void circut( int a[], int set[][11], int n )

{

int i, j;

for ( i = 0; i 《 n; i++ )

{

set[i][0] = 0;

set[0][i] = 0;

}

for ( i = 1; i 《= n; i++ )

{

for ( j = 1; j 《= n; j++ )

{

if ( a[i] != j )

set[i][j] = MAX( set[i - 1][j], set[i][j - 1] );

else

set[i][j] = set[i - 1][j - 1] + 1;

}

}

}

void back_track( int i, int j, int set[][11] )

{

if ( i == 0 )

return;

if ( set[i][j] == set[i - 1][j] )

back_track( i - 1, j, set );

else if ( set[i][j] == set[i][j - 1] )

back_track( i, j - 1, set );

else{

back_track( i - 1, j - 1, set );

printf( “(%d,%d) ”, i, j );

}

}

时间复杂度

circut 的时间复杂度为O(n2)

back_track的时间复杂度为 O(n)

如有错误请指正。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电路板
    +关注

    关注

    140

    文章

    4870

    浏览量

    97162
  • 电路设计
    +关注

    关注

    6658

    文章

    2420

    浏览量

    202756
收藏 人收藏

    评论

    相关推荐

    电路板设计过程中采用差分信号线布线的优势和布线技巧

    电路板设计过程中采用差分信号线布线的优势和布线技巧 布线
    发表于 09-06 08:20 1372次阅读
    <b class='flag-5'>电路板</b>设计过程中采用差分信号线<b class='flag-5'>布线</b>的优势和<b class='flag-5'>布线</b>技巧

    电路板布线设计(一)探索双层布线技艺

    成本时总是要求设计者在设计中使用双层电路板。虽然多层(四层、六层以及八层)的解决方式无论在尺寸、噪声,以及性能上都可以做得更好,但成本压力迫使工程师必须尽量使用双层。在本文中将讨论使用或不用自动
    发表于 04-28 11:45

    如何实现良好的电路板布局布线

      工程课程一般不会教授如何实现良好的电路板布局布线。高频RF类课程会研究走线阻抗的重要性,但需要自行构建系统电源的工程师,通常不会将电源视为高频系统,而忽视了电路板布局布线的重要性。
    发表于 11-15 08:27

    电磁兼容和印刷电路板(理论、设计和布线)

    电磁兼容和印刷电路板理论、设计和布线从理论、设计和布线的角度分析研究了电磁兼容(EMC)和印刷电路板(PCB)所涉及的问题,全书内容共有9章。第1-3章介绍了EMC的基本原理
    发表于 10-06 17:45 0次下载
    电磁兼容和印刷<b class='flag-5'>电路板</b>(理论、设计和<b class='flag-5'>布线</b>)

    印制电路板布线技术

    除了元器件的选择和电路设计之外,良好的印制电路板(PCB)布线在电磁兼容性中也是一个非常重要的因素。既然PCB是系统的固有成分,在PCB布线中增强电磁兼容性不会给产品
    发表于 04-24 21:48 39次下载
    印制<b class='flag-5'>电路板</b>的<b class='flag-5'>布线</b>技术

    用PROTEL DXP设计电路板的原则

    用PROTEL DXP电路板设计的原则 电路板设计的一般原则包括:电路板的选用、电路板尺寸、元件布局、布线、焊盘、填充、跨接线等。
    发表于 03-25 08:28 1081次阅读

    电路板布局布线要求及规律

    电路板布局布线要求及规律,感兴趣的小伙伴们可以看看。
    发表于 07-26 16:29 0次下载

    PCB设计高频电路板布线技巧和注意事项详细概述

    本文首先对高频电路板做了简单介绍,其次阐述了PCB设计高频电路板布线技巧,最后介绍了PCB设计高频电路板布线注意事项
    的头像 发表于 10-14 11:49 6366次阅读

    如何消除电路板布线中造成的耦合噪声干扰

    电路板布线所产生主要寄生组件分别是电阻、电容以及电感。从电路图转成实际电路板时,所有寄生组件都有机会干扰电路性能。当一系统混合数字与模拟组件
    发表于 07-31 15:35 4643次阅读
    如何消除<b class='flag-5'>电路板</b><b class='flag-5'>布线</b>中造成的耦合噪声干扰

    电路板布线设计的顺序

    电路板厂印制进行布线设计的顺序可能不同,在电路板布线设计师准备进行设计布线之前,他的
    发表于 06-04 17:58 2362次阅读

    印制电路板布线流程

    对于初次接触印制电路板设计的用户来说,首先面临的问题就是设计工作中究竟包括哪些步骤,应从什么地方入手、各个步骤之间的衔接关系如何?因此,在利用Protel99SE设计印刷电路板之前,必须了解基本工序,也就是印制电路板
    发表于 08-16 11:53 3290次阅读

    PCB电路板元件布局布线基本规则下载

    PCB电路板元件布局布线基本规则下载
    发表于 04-24 09:43 0次下载

    电路板级的EMC设计(3) PCB布线技术

    电路板级的EMC设计(3) PCB布线技术文章目录电路板级的EMC设计(3) PCB布线技术文档简介第三部分:印制电路板
    发表于 11-07 09:51 28次下载
    <b class='flag-5'>电路板</b>级的EMC设计(3) PCB<b class='flag-5'>布线</b>技术

    提高电路板EMC能力PCB设计和布线方法

    提高电路板EMC能力PCB设计和布线方法
    的头像 发表于 12-07 15:36 843次阅读
    提高<b class='flag-5'>电路板</b>EMC能力PCB设计和<b class='flag-5'>布线</b>方法

    蛇形走线设计在电路板布线中的秘密

    一站式PCBA智造厂家今天为大家讲讲蛇形走线设计在电路板布线中有什么用?蛇形走线设计在电路板布线中的作用。电路板设计中,
    的头像 发表于 08-20 09:18 255次阅读