0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

電路板電路布線設(shè)計(jì)相關(guān)問題

西西 ? 來(lái)源:博客園 ? 作者:祥昊 ? 2020-08-08 11:01 ? 次閱讀

問題

在一塊電路板的上下兩端分別有n個(gè)接線柱。根據(jù)電路設(shè)計(jì),要求用導(dǎo)線 (i,π(i)),將上端接線柱 i 與下端接線柱 π(i) 相連,

如圖,其中 π(i),1《=i《=n,是(1,2……,n)的一個(gè)排列。導(dǎo)線(i,π(i))稱為該電路板上的第i條連線。對(duì)于任何 1《=i《s《=n,第i條連線和第s條連線相交的充分且必要條件是 π(i) 》 π(s)。

ps:注意 π(pi) 和 n,不是小寫的n,別看錯(cuò)了

問:在制作電路板時(shí),要求將這n條線分布到若干個(gè)絕緣層上,在同一層上的連線不能相交。電路布線問題要確定將哪些連線安排在第一層上,使得該層上有盡可能多的連線。

詳細(xì)說明

首先 上下各有 n 個(gè)接線柱,用 a[i] 數(shù)組表示 與 上接線柱 相連線的 下接線柱,再用 set[i][j] 表示上接線柱 i 與下接線柱 j 相連線的 左邊(包括 i ,j 連線)的最大不相交連線的個(gè)數(shù)。

ps(這里的 j ,i 和上面問題中說的不是一個(gè)東西,這里的 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

循環(huán)遍歷 i 和 j ,具體使用 i X j 的嵌套循環(huán),其實(shí)就是每一個(gè)上接線柱和每一個(gè)下接線柱做一次匹配,這樣就可以得出結(jié)果,set[n][n]即我們想要的結(jié)果。最后通過回溯把結(jié)果輸出出來(lái)

==》 j == a[i],表示當(dāng)上圖中的某個(gè)上下接線柱相連時(shí),這時(shí)這兩個(gè)點(diǎn)不會(huì)在和其他的接線柱相連,

這時(shí)在 (i ,j) 處的最大不相交連線的個(gè)數(shù)就應(yīng)該是就是 第 i-1個(gè)上接線柱 和第 j-1個(gè)下接線柱時(shí)的 最大不相交連線的個(gè)數(shù) + 1。這個(gè)+1很重要。

==》 j != a[i],表示當(dāng)上圖中的某個(gè)上下接線柱相連時(shí),這時(shí) i 點(diǎn)和 非 j 點(diǎn)相連, j 點(diǎn)和 非 i 點(diǎn)相連,

這時(shí)在( i ,j) 處的最大不相交連線的個(gè)數(shù)就應(yīng)該和 ( i - 1,j ) 處最大不相交連線的個(gè)數(shù)、 ( i,j - 1)處最大不相交連線的個(gè)數(shù)中較大的最大不相交連線的個(gè)數(shù)相同。

2、參考圖如下:

紅色標(biāo)明的就是算法選擇的路徑(向上優(yōu)先,也可以用向左優(yōu)先,答案都是四個(gè),但值會(huì)有一點(diǎn)不同)。在斜角值改變時(shí)可以取得所求的子集。即 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 );

}

}

時(shí)間復(fù)雜度

circut 的時(shí)間復(fù)雜度為O(n2)

back_track的時(shí)間復(fù)雜度為 O(n)

如有錯(cuò)誤請(qǐng)指正。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 電路板
    +關(guān)注

    關(guān)注

    140

    文章

    4810

    瀏覽量

    96131
  • 電路設(shè)計(jì)
    +關(guān)注

    關(guān)注

    6637

    文章

    2398

    瀏覽量

    201158
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    電路板設(shè)計(jì)過程中采用差分信號(hào)線布線的優(yōu)勢(shì)和布線技巧

    電路板設(shè)計(jì)過程中采用差分信號(hào)線布線的優(yōu)勢(shì)和布線技巧 布線
    發(fā)表于 09-06 08:20 ?1335次閱讀
    <b class='flag-5'>電路板</b>設(shè)計(jì)過程中采用差分信號(hào)線<b class='flag-5'>布線</b>的優(yōu)勢(shì)和<b class='flag-5'>布線</b>技巧

    電路板布線設(shè)計(jì)(一)探索雙層布線技藝

    成本時(shí)總是要求設(shè)計(jì)者在設(shè)計(jì)中使用雙層電路板。雖然多層(四層、六層以及八層)的解決方式無(wú)論在尺寸、噪聲,以及性能上都可以做得更好,但成本壓力迫使工程師必須盡量使用雙層。在本文中將討論使用或不用自動(dòng)
    發(fā)表于 04-28 11:45

    如何實(shí)現(xiàn)良好的電路板布局布線

      工程課程一般不會(huì)教授如何實(shí)現(xiàn)良好的電路板布局布線。高頻RF類課程會(huì)研究走線阻抗的重要性,但需要自行構(gòu)建系統(tǒng)電源的工程師,通常不會(huì)將電源視為高頻系統(tǒng),而忽視了電路板布局布線的重要性。
    發(fā)表于 11-15 08:27

    電磁兼容和印刷電路板(理論、設(shè)計(jì)和布線)

    電磁兼容和印刷電路板理論、設(shè)計(jì)和布線從理論、設(shè)計(jì)和布線的角度分析研究了電磁兼容(EMC)和印刷電路板(PCB)所涉及的問題,全書內(nèi)容共有9章。第1-3章介紹了EMC的基本原理
    發(fā)表于 10-06 17:45 ?0次下載
    電磁兼容和印刷<b class='flag-5'>電路板</b>(理論、設(shè)計(jì)和<b class='flag-5'>布線</b>)

    印制電路板布線技術(shù)

    除了元器件的選擇和電路設(shè)計(jì)之外,良好的印制電路板(PCB)布線在電磁兼容性中也是一個(gè)非常重要的因素。既然PCB是系統(tǒng)的固有成分,在PCB布線中增強(qiáng)電磁兼容性不會(huì)給產(chǎn)品
    發(fā)表于 04-24 21:48 ?39次下載
    印制<b class='flag-5'>電路板</b>的<b class='flag-5'>布線</b>技術(shù)

    用PROTEL DXP設(shè)計(jì)電路板的原則

    用PROTEL DXP電路板設(shè)計(jì)的原則 電路板設(shè)計(jì)的一般原則包括:電路板的選用、電路板尺寸、元件布局、布線、焊盤、填充、跨接線等。
    發(fā)表于 03-25 08:28 ?1060次閱讀

    電路板布局布線要求及規(guī)律

    電路板布局布線要求及規(guī)律,感興趣的小伙伴們可以看看。
    發(fā)表于 07-26 16:29 ?0次下載

    PCB設(shè)計(jì)高頻電路板布線技巧和注意事項(xiàng)詳細(xì)概述

    本文首先對(duì)高頻電路板做了簡(jiǎn)單介紹,其次闡述了PCB設(shè)計(jì)高頻電路板布線技巧,最后介紹了PCB設(shè)計(jì)高頻電路板布線注意事項(xiàng)
    的頭像 發(fā)表于 10-14 11:49 ?6260次閱讀

    印制電路板的種類有哪些_印制電路板布線要求

    印制電路板{PCB線路},又稱印刷電路板,是電子元器件電氣連接的提供者。它的發(fā)展已有100多年的歷史了;它的設(shè)計(jì)主要是版圖設(shè)計(jì);采用電路板的主要優(yōu)點(diǎn)是大大減少
    發(fā)表于 04-26 14:53 ?4340次閱讀

    電路板布線設(shè)計(jì)的順序

    電路板廠印制進(jìn)行布線設(shè)計(jì)的順序可能不同,在電路板布線設(shè)計(jì)師準(zhǔn)備進(jìn)行設(shè)計(jì)布線之前,他的
    發(fā)表于 06-04 17:58 ?1964次閱讀

    印制電路板布線流程

    對(duì)于初次接觸印制電路板設(shè)計(jì)的用戶來(lái)說,首先面臨的問題就是設(shè)計(jì)工作中究竟包括哪些步驟,應(yīng)從什么地方入手、各個(gè)步驟之間的銜接關(guān)系如何?因此,在利用Protel99SE設(shè)計(jì)印刷電路板之前,必須了解基本工序,也就是印制電路板
    發(fā)表于 08-16 11:53 ?3182次閱讀

    PCB電路板元件布局布線基本規(guī)則下載

    PCB電路板元件布局布線基本規(guī)則下載
    發(fā)表于 04-24 09:43 ?0次下載

    電路板級(jí)的EMC設(shè)計(jì)(3) PCB布線技術(shù)

    電路板級(jí)的EMC設(shè)計(jì)(3) PCB布線技術(shù)文章目錄電路板級(jí)的EMC設(shè)計(jì)(3) PCB布線技術(shù)文檔簡(jiǎn)介第三部分:印制電路板
    發(fā)表于 11-07 09:51 ?28次下載
    <b class='flag-5'>電路板</b>級(jí)的EMC設(shè)計(jì)(3) PCB<b class='flag-5'>布線</b>技術(shù)

    提高電路板EMC能力PCB設(shè)計(jì)和布線方法

    提高電路板EMC能力PCB設(shè)計(jì)和布線方法
    的頭像 發(fā)表于 12-07 15:36 ?757次閱讀
    提高<b class='flag-5'>電路板</b>EMC能力PCB設(shè)計(jì)和<b class='flag-5'>布線</b>方法

    蛇形走線設(shè)計(jì)在電路板布線中的秘密

    一站式PCBA智造廠家今天為大家講講蛇形走線設(shè)計(jì)在電路板布線中有什么用?蛇形走線設(shè)計(jì)在電路板布線中的作用。電路板設(shè)計(jì)中,
    的頭像 發(fā)表于 08-20 09:18 ?177次閱讀