在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

沒(méi)想到,背包問(wèn)題解題也有套路

算法與數(shù)據(jù)結(jié)構(gòu) ? 來(lái)源:五分鐘學(xué)算法 ? 2020-06-03 17:31 ? 次閱讀

一、概述

背包問(wèn)題是一類(lèi)比較特殊的動(dòng)態(tài)規(guī)劃問(wèn)題,這篇文章的側(cè)重點(diǎn)會(huì)在答案的推導(dǎo)過(guò)程上,我們還是會(huì)使用之前提到的解動(dòng)態(tài)規(guī)劃問(wèn)題的四個(gè)步驟來(lái)思考這類(lèi)問(wèn)題。

在講述背包問(wèn)題之前,首先提及一下,背包類(lèi)動(dòng)態(tài)規(guī)劃問(wèn)題和其他的動(dòng)態(tài)規(guī)劃問(wèn)題的不同之處在于,背包類(lèi)動(dòng)態(tài)規(guī)劃問(wèn)題會(huì)選用值來(lái)作為動(dòng)態(tài)規(guī)劃的狀態(tài),你可以回顧下之前我們討論過(guò)的動(dòng)態(tài)規(guī)劃問(wèn)題,基本上都是利用數(shù)組或者是字符串的下標(biāo)來(lái)表示動(dòng)態(tài)規(guī)劃的狀態(tài)。

針對(duì)背包類(lèi)問(wèn)題,我們依然可以畫(huà)表格來(lái)輔助我們思考問(wèn)題,但是背包類(lèi)問(wèn)題有基本的雛形,題目特征特別明顯,當(dāng)你理解了這類(lèi)問(wèn)題的解法后,遇到類(lèi)似問(wèn)題基本上不需要額外的輔助就可以給出大致的解法,這也就是說(shuō),學(xué)習(xí)背包類(lèi)問(wèn)題是一個(gè)性?xún)r(jià)比很高的事情,理解了一個(gè)特定問(wèn)題的解法,基本上一類(lèi)問(wèn)題都可以直接套這個(gè)解法。

二、問(wèn)題雛形

首先我們來(lái)看看這樣一個(gè)問(wèn)題:

有 N 件物品和一個(gè)容量為 V 的背包。第 i 件物品的體積是 C[i],價(jià)值是 W[i]。求解將哪些物品裝入背包可使價(jià)值總和最大。求出最大總價(jià)值

話不多說(shuō),我們還是按之前的分析四步驟來(lái)看看這個(gè)問(wèn)題:

問(wèn)題拆解

我們要求解的問(wèn)題是 “背包能裝入物品的最大價(jià)值”,這個(gè)問(wèn)題的結(jié)果受到兩個(gè)因素的影響,就是背包的大小,以及物品的屬性(包括大小和價(jià)值)。對(duì)于物品來(lái)說(shuō),只有兩種結(jié)果,放入背包以及不放入背包,這里我們用一個(gè)例子來(lái)畫(huà)畫(huà)表格:

假設(shè)背包的大小是 10,有 4 個(gè)物品,體積分別是 [2,3,5,7],價(jià)值分別是 [2,5,2,5]。

1、如果我們僅考慮將前一個(gè)物品放入背包,只要背包體積大于 2,此時(shí)都可以獲得價(jià)值為 2 的最大價(jià)值:

圖一

2、如果我們僅考慮將前兩個(gè)物品放入背包,如果背包體積大于或等于 5,表示兩個(gè)物體都可放入,此時(shí)都可以獲得價(jià)值為 2+5=7 的最大價(jià)值,如果不能全都放入,那就要選擇體積不超,價(jià)值最大的那個(gè):

圖二

3、如果我們僅考慮將前三個(gè)物品放入背包,如果背包體積大于或等于 10,表示三個(gè)物體都可放入,此時(shí)都可以獲得價(jià)值為 2+5+2=9 的最大價(jià)值,如果不能全都放入,那就要選擇體積不超,價(jià)值最大的那個(gè)方案:

圖三

4、如果我們考慮將所有物品放入背包,我們可以依據(jù)前三個(gè)物品放入的結(jié)果來(lái)制定方案:

圖四

這樣,我們就根據(jù)物品和體積將問(wèn)題拆分成子問(wèn)題,也就是 “前 n 個(gè)物品在體積 V 處的最大價(jià)值” 可以由 “前 n - 1 個(gè)物品的情況” 推導(dǎo)得到。

狀態(tài)定義

在問(wèn)題拆解中,我們得知問(wèn)題其實(shí)和背包的體積還有當(dāng)前考慮的物品有關(guān),因此我們可以定義dp[i][j]表示 “考慮將前 i 個(gè)物品放入體積為 j 的背包里所獲得的最大價(jià)值”

遞推方程

當(dāng)我們考慮是否將第 i 個(gè)物品放入背包的時(shí)候,這里有兩種情況

不放入,也就是不考慮第 i 個(gè)物品,那么問(wèn)題就直接變成了上一個(gè)子問(wèn)題,也就是考慮將 i - 1 個(gè)物品放入背包中,這樣當(dāng)前問(wèn)題的解就是之前問(wèn)題的解:

dp[i][j]=dp[i-1][j]

如果背包體積大于第 i 個(gè)物品的體積,我們可以考慮將第 i 個(gè)物品放入,這個(gè)時(shí)候我們要和之前的狀態(tài)做一個(gè)比較,選取最大的方案:

dp[i][j]=Math.max(dp[i-1][j],dp[i-1][j-C[i]]+W[i])

實(shí)現(xiàn)

實(shí)現(xiàn)這一環(huán)節(jié)還是主要考慮狀態(tài)數(shù)組如何初始化,你可以看到,我們每次都要考慮 i - 1,另外還要考慮背包體積為 0 的情況,因此初始化數(shù)組時(shí)多開(kāi)一格可以省去不必要的麻煩

publicintzeroOnePack(intV,int[]C,int[]W){ //防止無(wú)效輸入 if((V<=?0)?||?(C.length?!=?W.length))?{ ????????return?0; ????} ????int?n?=?C.length; ????//?dp[i][j]:?對(duì)于下標(biāo)為?0~i?的物品,背包容量為?j?時(shí)的最大價(jià)值 ????int[][]?dp?=?new?int[n?+?1][V?+?1]; ????//?背包空的情況下,價(jià)值為?0 ????dp[0][0]?=?0; ????for?(int?i?=?1;?i?<=?n;?++i)?{ ????????for?(int?j?=?1;?j?<=?V;?++j)?{ ????????????//?不選物品?i?的話,當(dāng)前價(jià)值就是取到前一個(gè)物品的最大價(jià)值,也就是?dp[i?-?1][j] ????????????dp[i][j]?=?dp[i?-?1][j]; ????????????//?如果選擇物品?i?使得當(dāng)前價(jià)值相對(duì)不選更大,那就選取?i,更新當(dāng)前最大價(jià)值 ????????????if?((j?>=C[i-1])&&(dp[i][j]

這里還有一個(gè)空間上面的優(yōu)化,如果你回到我們之前畫(huà)的表格,考慮前 i 個(gè)問(wèn)題的狀態(tài)只會(huì)依賴(lài)于前 i - 1 個(gè)問(wèn)題的狀態(tài),也就是dp[i][...]只會(huì)依賴(lài)于dp[i - 1][...],另外一點(diǎn)就是當(dāng)前考慮的背包體積只會(huì)用到比其小的體積。

基于這些信息,我們狀態(tài)數(shù)組的維度可以少開(kāi)一維,但是遍歷的方向上需要從后往前遍歷,從而保證子問(wèn)題需要用到的數(shù)據(jù)不被覆蓋,優(yōu)化版本如下:

publicintzeroOnePackOpt(intV,int[]C,int[]W){ //防止無(wú)效輸入 if((V<=?0)?||?(C.length?!=?W.length))?{ ????????return?0; ????} ????int?n?=?C.length; ????int[]?dp?=?new?int[V?+?1]; ????//?背包空的情況下,價(jià)值為?0 ????dp[0]?=?0; ????for?(int?i?=?0;?i?=C[i];--j){ dp[j]=Math.max(dp[j],dp[j-C[i]]+W[i]); } } returndp[V]; }

這里,因?yàn)槲锲分荒鼙贿x中 1 次,或者被選中 0 次,因此我們稱(chēng)這種背包問(wèn)題為01 背包問(wèn)題。

還有一類(lèi)背包問(wèn)題,物品可以被選多次或者 0 次,這類(lèi)問(wèn)題我們稱(chēng)為完全背包問(wèn)題,這類(lèi)背包問(wèn)題和 01 背包問(wèn)題很類(lèi)似,略微的不同在于,在完全背包問(wèn)題中,狀態(tài)dp[i][j]依賴(lài)的是dp[i - 1][j]以及dp[i][k] k < j,你可以看看下面的實(shí)現(xiàn)代碼:

publicintcompletePack(intV,int[]C,int[]W){ //防止無(wú)效輸入 if(V==0||C.length!=W.length){ return0; } intn=C.length; //dp[i][j]:對(duì)于下標(biāo)為0~i的物品,背包容量為j時(shí)的最大價(jià)值 int[][]dp=newint[n+1][V+1]; //背包空的情況下,價(jià)值為0 dp[0][0]=0; for(inti=1;i<=?n;?++i)?{ ????????for?(int?j?=?1;?j?<=?V;?++j)?{ ????????????//?不取該物品 ????????????dp[i][j]?=?dp[i?-?1][j]; ????????????//?取該物品,但是是在考慮過(guò)或者取過(guò)該物品的基礎(chǔ)之上(dp[i][...])取 ????????????//?0-1背包則是在還沒(méi)有考慮過(guò)該物品的基礎(chǔ)之上(dp[i?-?1][...])取 ????????????if?((j?>=C[i-1])&&(dp[i][j-C[i-1]]+W[i-1]>dp[i][j])){ dp[i][j]=dp[i][j-C[i-1]]+W[i-1]; } } } //返回,對(duì)于所有物品(0~N),背包容量為V時(shí)的最大價(jià)值 returndp[n][V]; }

類(lèi)似的,我們還是可以對(duì)狀態(tài)數(shù)組進(jìn)行空間優(yōu)化,依據(jù)我們之前討論的狀態(tài)之間的依賴(lài)關(guān)系,完全背包的空間優(yōu)化我們直接把狀態(tài)數(shù)組少開(kāi)一維即可,遍歷方式都不需要改變:

publicintcompletePackOpt(intV,int[]C,int[]W){ if(V==0||C.length!=W.length){ return0; } intn=C.length; int[]dp=newint[V+1]; for(inti=0;i

下面,我們就根據(jù)這兩類(lèi)背包問(wèn)題,看看遇到類(lèi)似的問(wèn)題我們是否可以套用上面我們介紹的解法。

三、相關(guān)題目實(shí)戰(zhàn)

LeetCode 第 416 號(hào)問(wèn)題:分割等和子集。

題目來(lái)源:https://leetcode-cn.com/problems/partition-equal-subset-sum/

題目描述

給定一個(gè)只包含正整數(shù)的非空數(shù)組。是否可以將這個(gè)數(shù)組分割成兩個(gè)子集,使得兩個(gè)子集的元素和相等。

注意:

每個(gè)數(shù)組中的元素不會(huì)超過(guò) 100

數(shù)組的大小不會(huì)超過(guò) 200

示例 1:

輸入:[1,5,11,5] 輸出:true 解釋:數(shù)組可以分割成[1,5,5]和[11].

示例 2:

輸入:[1,2,3,5] 輸出:false 解釋:數(shù)組不能分割成兩個(gè)元素和相等的子集.

題目分析

題目給定一個(gè)數(shù)組,問(wèn)是否可以將數(shù)組拆分成兩份,并且兩份的值相等,這里并不是說(shuō)分成兩個(gè)子數(shù)組,而是分成兩個(gè)子集。

直觀的想法是直接遍歷一遍數(shù)組,這樣我們可以得到數(shù)組中所有元素的和,這個(gè)和必須是偶數(shù),不然沒(méi)法分,其實(shí)很自然地就可以想到,我們要從數(shù)組中挑出一些元素,使這些元素的和等于原數(shù)組中元素總和的一半,“從數(shù)組中找出一些元素讓它們的和等于一個(gè)固定的值”,這么一個(gè)信息能否讓你想到背包類(lèi)動(dòng)態(tài)規(guī)劃呢?

如果你能想到這個(gè)地方,再配上我們之前講的01 背包問(wèn)題的解法,那么這道題目就可以直接套解法了,這里我就不具體分析了。

參考代碼

publicbooleancanPartition(int[]nums){ if(nums==null||nums.length==0){ returnfalse; } intsum=0; intn=nums.length; for(inti=0;i=nums[i];--j){ dp[j]|=dp[j-nums[i]]; } } returndp[target]; }

LeetCode 第 322 號(hào)問(wèn)題:零錢(qián)兌換。

題目來(lái)源:https://leetcode-cn.com/problems/coin-change

題目描述

給定不同面額的硬幣coins和一個(gè)總金額amount。編寫(xiě)一個(gè)函數(shù)來(lái)計(jì)算可以湊成總金額所需的最少的硬幣個(gè)數(shù)。如果沒(méi)有任何一種硬幣組合能組成總金額,返回-1。

示例 1:

輸入:coins=[1,2,5],amount=11 輸出:3 解釋:11=5+5+1

示例 2:

輸入:coins=[2],amount=3 輸出:-1

說(shuō)明:
你可以認(rèn)為每種硬幣的數(shù)量是無(wú)限的。

題目分析

題目給定一個(gè)數(shù)組和一個(gè)整數(shù),數(shù)組里面的值表示的是每個(gè)硬幣的價(jià)值,整數(shù)表示的是一個(gè)價(jià)值,問(wèn)最少選擇多少個(gè)硬幣能夠組成這個(gè)價(jià)值,硬幣可以重復(fù)選擇。

雖然這里只有一個(gè)輸入數(shù)組,但是我們還是可以看到背包的影子,這里的整數(shù)就可以看作是背包的體積,然后數(shù)組里面的值可以看作是物品的體積,那物品的價(jià)值呢?

在這里,你可以形象地認(rèn)為每個(gè)物品的價(jià)值是 1,最后我們要求的是填滿背包的最小價(jià)值,因?yàn)檫@里物品是可以重復(fù)選擇多次的,因此可以歸類(lèi)于完全背包問(wèn)題,套用之前的解法就可以解題,唯一要注意的一點(diǎn)是,這里我們不在求最大價(jià)值,而求的是最小價(jià)值,因此我們需要先將狀態(tài)數(shù)組初始化成無(wú)窮大。

參考代碼

publicintcoinChange(int[]coins,intamount){ int[]dp=newint[amount+1]; Arrays.fill(dp,Integer.MAX_VALUE); dp[0]=0; for(inti=0;i

輔助動(dòng)畫(huà)

LeetCode 第 518 號(hào)問(wèn)題:零錢(qián)兌換II。

題目來(lái)源:https://leetcode-cn.com/problems/coin-change-2/

題目描述

給定不同面額的硬幣和一個(gè)總金額。寫(xiě)出函數(shù)來(lái)計(jì)算可以湊成總金額的硬幣組合數(shù)。假設(shè)每一種面額的硬幣有無(wú)限個(gè)。

示例 1:

輸入:amount=5,coins=[1,2,5] 輸出:4 解釋:有四種方式可以湊成總金額: 5=5 5=2+2+1 5=2+1+1+1 5=1+1+1+1+1

示例 2:

輸入:amount=3,coins=[2] 輸出:0 解釋:只用面額2的硬幣不能湊成總金額3。

示例 3:

輸入:amount=10,coins=[10] 輸出:1

注意:

你可以假設(shè):

0 <= amount (總金額) <= 5000

1 <= coin (硬幣面額) <= 5000

硬幣種類(lèi)不超過(guò) 500 種

結(jié)果符合 32 位符號(hào)整數(shù)

題目分析

這道題目是上一道題目的變形,題目的輸入?yún)?shù)還是不變,變的是最后的問(wèn)題,這里需要求的是 “有多少種組合方式能夠填滿背包”,我們還是可以套用完全背包的解法,只是最后求解的東西變了,那我們動(dòng)態(tài)規(guī)劃狀態(tài)數(shù)組中記錄的東西相應(yīng)的改變即可,在這道題中,狀態(tài)數(shù)組中記錄組合成該價(jià)值的方案的個(gè)數(shù)即可。

參考代碼

publicintchange(intamount,int[]coins){ int[]dp=newint[amount+1]; dp[0]=1; for(inti=0;i

K Sum。

題目描述

給定一個(gè)輸入數(shù)組 array,還有兩個(gè)整數(shù) k 和 target,在數(shù)組 array 中找出 k 個(gè)元素,使得這 k 個(gè)元素相加等于 target,問(wèn)有多少種組合方式,輸出組合方式的個(gè)數(shù)。

注:在一種組合方式中,一個(gè)元素不能夠被重復(fù)選擇

題目分析

我們之前講過(guò) Two Sum,也提到過(guò) 3 Sum,還有 4 Sum,那這道題是否可以套用之前的解法呢?

這里有一個(gè)細(xì)節(jié)不知道你是否發(fā)現(xiàn),就是這道題目?jī)H僅是讓你輸出所有組合方式的個(gè)數(shù),并沒(méi)有讓你輸出所有的組合方式,這是決定是否使用動(dòng)態(tài)規(guī)劃很重要的一點(diǎn)。

如果沒(méi)有這個(gè) k,我相信你會(huì)很直接地想到使用01 背包問(wèn)題的解法,那我們可以思考一下,基于原來(lái)的解法,如果增加了 k 這個(gè)限制,我們需要額外做些什么事情呢?

因?yàn)?k 會(huì)決定問(wèn)題的狀態(tài),因此我們的狀態(tài)數(shù)組中也要考慮 k,在考慮將第 k 個(gè)元素放入背包中,我們需要看的是背包中存放 k - 1 個(gè)元素的情況,這么看來(lái),其實(shí)相比普通的01 背包問(wèn)題,這道題目?jī)H僅是增加了一維狀態(tài),沒(méi)有其他的變化。

參考代碼

publicintkSum(int[]array,intk,inttarget){ int[][]dp=newint[target+1][k+1]; dp[0][0]=1; for(inti=0;i=array[i];--j){ //和普通01背包問(wèn)題相比,僅僅是多了一層狀態(tài)需要考慮 //這層狀態(tài)記錄的是背包里面元素的個(gè)數(shù) //我們放入第r個(gè)元素的時(shí)候,必須確保背包里面已經(jīng)有r-1個(gè)元素 for(intr=1;r<=?k;?++r)?{ ????????????????dp[j][r]?+=?dp[j?-?array[i]][r?-?1]; ????????????} ????????} ????} ????return?dp[target][k]; }

四、總結(jié)

背包類(lèi)的動(dòng)態(tài)規(guī)劃問(wèn)題我們就先講到這里,我們介紹了兩類(lèi)比較基礎(chǔ)的背包問(wèn)題,01 背包問(wèn)題和完全背包問(wèn)題,解這類(lèi)問(wèn)題有既定的模版和思路可以參照,理解了模版問(wèn)題,也就理解了一類(lèi)問(wèn)題,算是學(xué)習(xí)性?xún)r(jià)比很高的一類(lèi)動(dòng)態(tài)規(guī)劃問(wèn)題。

往往背包類(lèi)問(wèn)題可以很好地根據(jù)題目的描述判斷出來(lái),這類(lèi)問(wèn)題狀態(tài)的定義也比較特殊,就是用值來(lái)作為動(dòng)態(tài)規(guī)劃的狀態(tài),我們也用了一些習(xí)題來(lái)練習(xí)了一番,相信你對(duì)背包問(wèn)題有了大致的了解,也對(duì)動(dòng)態(tài)規(guī)劃有了更廣的認(rèn)識(shí)。

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

    關(guān)注

    1

    文章

    419

    瀏覽量

    26352

原文標(biāo)題:額,沒(méi)想到,背包問(wèn)題解題也有套路。。。

文章出處:【微信號(hào):TheAlgorithm,微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    慧能泰USB PD3.2 Type-C控制器HUSB368介紹

    在當(dāng)今智能化時(shí)代,快充技術(shù)發(fā)展迅猛。最開(kāi)始18W、20W就能讓人心動(dòng),后來(lái)60W、80W都覺(jué)得平平無(wú)奇,上百瓦才得勁,本以為用上了120W快充就夠快了,沒(méi)想到還是難以滿足電動(dòng)工具、無(wú)人機(jī)、機(jī)器人等新興場(chǎng)景對(duì)48V高電壓供電及復(fù)雜協(xié)議交互的要求。
    的頭像 發(fā)表于 03-17 17:02 ?453次閱讀
    慧能泰USB PD3.2 Type-C控制器HUSB368介紹

    漢威科技開(kāi)啟采摘機(jī)器人觸覺(jué)革命

    萬(wàn)萬(wàn)沒(méi)想到,在科技發(fā)達(dá)的現(xiàn)代,果蔬采摘依然是個(gè)大難題!一到水果成熟季,果農(nóng)們就為短期完成大量采摘的問(wèn)題發(fā)愁,尤其是草莓、車(chē)?yán)遄舆@類(lèi)皮薄嬌嫩的品類(lèi)。
    的頭像 發(fā)表于 02-28 16:40 ?556次閱讀

    使用ADS1198-FE下載了軟件按照說(shuō)明進(jìn)行了調(diào)試,出現(xiàn)了兩個(gè)問(wèn)題求解決

    ,AVSS設(shè)成-2.5V,通道顯示的值一直為2.4V 主要是第一個(gè)問(wèn)題啦,我想用它來(lái)測(cè)試肌電信號(hào)的,干擾特別大(已經(jīng)接了右腿驅(qū)動(dòng)),沒(méi)想到用信號(hào)發(fā)生器輸入波形都看不到,求解
    發(fā)表于 02-07 08:24

    不是!讓高速先生給個(gè)過(guò)孔優(yōu)化方案就那么難嗎?

    信號(hào)孔距離35mil和40mil,其他參數(shù)均滿足指導(dǎo)圖的case做對(duì)比,如下所示: 真沒(méi)想到吧,居然這樣也會(huì)有差異哦,從仿真結(jié)果看,也有超過(guò)3個(gè)歐姆的差異。 地平面多和少的區(qū)別 沒(méi)想到還有差異點(diǎn)吧
    發(fā)表于 01-21 08:50

    使用LM75BIMX作為溫度傳感器檢測(cè)環(huán)境溫度,得到的數(shù)據(jù)持續(xù)為不符合現(xiàn)實(shí)的錯(cuò)誤數(shù)據(jù),怎么解決?

    ,使用熱風(fēng)槍對(duì)著溫度傳感器吹,讀出的數(shù)據(jù)沒(méi)有任何變化。請(qǐng)各位專(zhuān)家就問(wèn)題的解決方向給予指導(dǎo)。項(xiàng)目時(shí)間挺緊急的,沒(méi)想到在這里卡住了。
    發(fā)表于 12-13 06:01

    PCM2704的ROM編程好了,竟然是亂碼,為什么?

    的說(shuō)法將ROM編程好,接入系統(tǒng),插入U(xiǎn)SB后,顯示正在安裝驅(qū)動(dòng),沒(méi)想到安裝完畢后竟然名稱(chēng)顯示為亂碼,百思不得其解。望各位大神幫我看看問(wèn)題出在哪里 這是德州儀器官方數(shù)據(jù)表中關(guān)于ROM的三段重要描述 我按照說(shuō)明編程如下 可是插入電腦后顯示是亂碼 求助大神,問(wèn)題出在哪里?
    發(fā)表于 11-05 08:04

    歐姆定律我是很熟,只是沒(méi)想到電流不按套路出牌!

    高速先生成員--黃剛 誠(chéng)如高速先生所言,其實(shí)電源的直流壓降和通流設(shè)計(jì)和仿真背后的原理真的很簡(jiǎn)單,那就是初中就學(xué)過(guò)的歐姆定律。請(qǐng)?jiān)试SChris不厭其煩的再再再一次給大家介紹下電源直流壓降和通流設(shè)計(jì)或者仿真的本質(zhì)。在電源輸出端,也就是VRM端,主要是給負(fù)載,也就是Sink端提供電流,并保證原始的輸出電壓。但是在實(shí)際鏈路中免不了會(huì)產(chǎn)生直流電阻R,因此最終需要電流I的Sink端的電壓就會(huì)比電源輸出端的U減少I(mǎi)*R的值。 那在常規(guī)PCB板級(jí)設(shè)計(jì)中,在VRM和Sink端中間就是PCB的鏈路產(chǎn)生直流電阻R。再細(xì)化一下PCB的結(jié)構(gòu),其實(shí)就是電源的平面和換層過(guò)孔兩大部分所產(chǎn)生,一個(gè)是水平面上的電阻,例如銅皮寬度,層數(shù),銅厚等;一個(gè)是垂直面上的電阻,例如過(guò)孔數(shù)量,過(guò)孔大小等。為什么說(shuō)大家普遍認(rèn)為電源壓降和通流的設(shè)計(jì)比較簡(jiǎn)單呢,因?yàn)槌死碚摵?jiǎn)單之外,行業(yè)內(nèi)還有不少免費(fèi)的小軟件可以在前期進(jìn)行銅皮和過(guò)孔的通流評(píng)估。 例如今天要講的關(guān)于過(guò)孔通流的設(shè)計(jì)問(wèn)題中,首先我們用一些軟件對(duì)電源過(guò)孔通流進(jìn)行評(píng)估,在軟件中輸入具體過(guò)孔的大小,包括約束的溫升等信息,就能夠快速的得到它通流的大小。例如下面,差不多一個(gè)10mil的過(guò)孔外,在約束溫升10度的情況下能過(guò)1A左右的電流。 嗯,然后我們就會(huì)根據(jù)不同過(guò)孔軟件評(píng)估的通流數(shù)值,再加上10-20%的裕量,給設(shè)計(jì)部的同事進(jìn)行推廣,相當(dāng)于給出不仿真情況下的過(guò)孔通流規(guī)則。 剛好Chris這周去我司的蘇州分部出差,路過(guò)設(shè)計(jì)部時(shí),無(wú)意中看到工作經(jīng)驗(yàn)2年左右的小云同學(xué)在處理一個(gè)電源的設(shè)計(jì)。湊近一看,那是一個(gè)20A左右的core電源的設(shè)計(jì),VRM電源在右上方,要往左下方的BGA芯片供電,由于層面的限制,中間電源平面需要從L8層換到L9層,于是Chris看到小云同學(xué)非常規(guī)整的在進(jìn)BGA的邊界處打了一排電源過(guò)孔進(jìn)行換層。大概數(shù)了下,40個(gè)過(guò)孔左右。 小云看到Chris后,于是很自豪的說(shuō),按照高速先生給出的約束,1個(gè)10mil的過(guò)孔能過(guò)1A的電流,理論上20個(gè)過(guò)孔就可以過(guò)20A電流,為了保險(xiǎn),還特意打多一倍。小樣,這20A電流還不輕輕松松搞掂! 的確看起來(lái)還行哈,過(guò)孔也打得比較規(guī)整,數(shù)量也是足夠的,應(yīng)該是比較理想的結(jié)果了吧。不過(guò)在Chris這里看來(lái),還是發(fā)現(xiàn)一些隱藏的問(wèn)題,還可以有進(jìn)一步去優(yōu)化的空間。于是在拜訪客戶之余的時(shí)間,拿著這個(gè)版本簡(jiǎn)單的做了個(gè)電源通流的仿真。你們猜猜仿真結(jié)果是怎么樣的? 晚上Chris給分部進(jìn)行培訓(xùn),順便就拿出了小云這個(gè)設(shè)計(jì)的案例進(jìn)行分享。首先Chris讓大家暢所欲言,看看這個(gè)電源設(shè)計(jì)怎么樣?大部分同事都覺(jué)得挑不出太多毛病,過(guò)孔數(shù)量足夠多,也打在距離BGA用電端外面最近的一排位置,常規(guī)不都這樣做的嘛。分部里最資深的郭工和唐工根據(jù)他們多年的設(shè)計(jì)經(jīng)驗(yàn),隱隱感覺(jué)有點(diǎn)問(wèn)題,電源位置和芯片位置是斜方向?qū)?yīng)的,如果在水平或豎直方向?qū)?yīng)的話這個(gè)設(shè)計(jì)沒(méi)有問(wèn)題,斜方向下來(lái)的電流感覺(jué)有點(diǎn)奇怪。 正所謂事出反常必有妖,有經(jīng)驗(yàn)的設(shè)計(jì)工程師其實(shí)會(huì)下意識(shí)的感覺(jué)到不是很對(duì),但是只是沒(méi)法將這種感覺(jué)量化出來(lái)。于是Chris分享了小云同學(xué)這個(gè)過(guò)孔設(shè)計(jì)的通流仿真結(jié)果,不看不知道,一看嚇好幾跳。在這40個(gè)過(guò)孔的通流仿真結(jié)果中,每個(gè)過(guò)孔的通流差異灰常的巨大,實(shí)際也就只有右邊的10個(gè)8個(gè)過(guò)孔能真正通流,左邊的20個(gè)以上幾乎不怎么過(guò)電流。最右邊的過(guò)孔居然有超過(guò)2.5A電流要承載。從原理上我們也知道,過(guò)孔如果承受了它應(yīng)該承受的電流大小后,輕則導(dǎo)致負(fù)載壓降變大,重則發(fā)熱嚴(yán)重,把自己燒了。 最后再稍微總結(jié)下唄。不是說(shuō)一個(gè)過(guò)孔評(píng)估起來(lái)就過(guò)1A嗎,更何況20A電流打了40個(gè)過(guò)孔,理論上1個(gè)過(guò)孔平均分0.5A就行了嗎,為什么會(huì)出現(xiàn)過(guò)孔間通流那么大差異的情況?問(wèn)題這不就出在“理論上”這三個(gè)字嘛。一些簡(jiǎn)單的評(píng)估軟件是理論上的評(píng)估,它沒(méi)法預(yù)料到電流要經(jīng)過(guò)具體哪些區(qū)域,只是單純的對(duì)這個(gè)過(guò)孔本身進(jìn)行通流的預(yù)測(cè),是有一定的參考作用,但是并不能百分百靠它。在這次培訓(xùn)中,Chris針對(duì)類(lèi)似這樣的案例進(jìn)行了原理的分析并分享了一些優(yōu)化的方案,大家聽(tīng)完后,突然自己又可以了。原來(lái)知道是什么影響了過(guò)孔間通流差異的現(xiàn)實(shí)版“歐姆定律”后,其實(shí)電流的設(shè)計(jì)也還是不是很難的嘛。 問(wèn)題:到底這個(gè)設(shè)計(jì)過(guò)孔間通流差異巨大的原因是啥?如果是你們,又會(huì)怎么去優(yōu)化呢?歡迎踴躍討論哈!
    發(fā)表于 10-28 17:41

    歐姆定律我是很熟,只是沒(méi)想到電流不按套路出牌!

    本來(lái)我真的覺(jué)得板級(jí)電源通流的PCB設(shè)計(jì)很簡(jiǎn)單,多鋪平面多打過(guò)孔就搞掂。自從讀到高速先生這篇文章后,我立馬就把以前的設(shè)計(jì)項(xiàng)目又翻出來(lái)看看……
    的頭像 發(fā)表于 10-28 17:40 ?507次閱讀
    歐姆定律我是很熟,只是<b class='flag-5'>沒(méi)想到</b>電流不按<b class='flag-5'>套路</b>出牌!

    Raspberry Pi CM5 還要幾周才能上市嗎?

    如果您經(jīng)常逛電子產(chǎn)品商店/網(wǎng)站,您可能會(huì)偶然發(fā)現(xiàn)一些您沒(méi)想到的產(chǎn)品。今天在 Mouser 上,我們似乎有一堆 Raspberry Pi CM5 配件。很快 TM 就會(huì)有?
    的頭像 發(fā)表于 10-28 10:26 ?771次閱讀
    Raspberry Pi CM5 還要幾周才能上市嗎?

    MLCC斷裂問(wèn)題解決方案

    MLCC斷裂問(wèn)題解決方案
    的頭像 發(fā)表于 10-16 09:43 ?1067次閱讀

    沒(méi)想到射頻導(dǎo)納物位計(jì)維護(hù)方法居然這么簡(jiǎn)單!

    物位計(jì)
    華泰天科
    發(fā)布于 :2024年10月08日 11:15:58

    TFPxxx常見(jiàn)問(wèn)題解

    電子發(fā)燒友網(wǎng)站提供《TFPxxx常見(jiàn)問(wèn)題解答.pdf》資料免費(fèi)下載
    發(fā)表于 09-29 09:56 ?0次下載
    TFPxxx常見(jiàn)問(wèn)<b class='flag-5'>題解</b>答

    萬(wàn)萬(wàn)沒(méi)想到振棒料位開(kāi)關(guān)接線時(shí)要這樣!

    料位計(jì)
    jzyb
    發(fā)布于 :2024年09月26日 11:11:31

    評(píng)測(cè)活動(dòng)第一名李工:我用Jupiter畫(huà)了個(gè)原理圖,然后成了段子手…

    為昕邀請(qǐng)了這次參與Jupiter評(píng)測(cè)活動(dòng)的第一名獲獎(jiǎng)?wù)呃罟李工寫(xiě)一下評(píng)測(cè)感想,沒(méi)想到,是位工程師界的段子手——爆笑時(shí)刻到來(lái)→李工感想各位EDA界的老鐵們,聽(tīng)我給你們吹個(gè)牛!最近我參加了為昕軟件試用
    的頭像 發(fā)表于 07-31 17:42 ?1022次閱讀
    評(píng)測(cè)活動(dòng)第一名李工:我用Jupiter畫(huà)了個(gè)原理圖,然后成了段子手…

    吃個(gè)瓜而已,AI居然寫(xiě)了份研究報(bào)告??

    救命,本來(lái)只是想隨手吃個(gè)瓜,沒(méi)想到AI較真起來(lái),寫(xiě)了份完整研究報(bào)告。一口氣查幾百篇資料,從中精選出42篇參考,十幾秒內(nèi)洋洋灑灑3000多字。
    的頭像 發(fā)表于 07-04 18:45 ?467次閱讀
    吃個(gè)瓜而已,AI居然寫(xiě)了份研究報(bào)告??
    主站蜘蛛池模板: 狠狠色狠狠色综合日日小蛇 | a资源在线观看 | 日本黄a | 亚洲一区二区三区精品视频 | 日本午夜大片免费观看视频 | 亚洲午夜久久久精品影院 | 九色综合伊人久久富二代 | 欧美a在线| 手机在线观看视频你懂的 | 国产在线精彩视频二区 | 亚洲午夜久久久久久91 | 日韩一级在线视频 | 欧洲色| 午夜国产福利 | aa毛片| 国产伦精品一区二区三区女 | 天天综合网天天综合色 | 在线观看一区二区三区四区 | 亚洲成a人片在线看 | 一级特黄aaa大片29 | 中文在线 | 中文 | 亚洲欧美视频一区二区三区 | 女人成午夜大片7777在线 | 性夜黄 a 爽免费看 性夜黄a爽影免费看 | 国产成人午夜片在线观看 | 五月婷婷视频在线 | 午夜色视频在线观看 | 欧美破处视频在线 | vr亚洲成年网址在线观看 | 伊人91在线| 美女视频黄a视频美女大全 美女视频一区二区 | 成人网在线 | 中文字幕亚洲天堂 | 永久免费精品影视网站 | 亚洲欧美日韩在线观看你懂的 | 一区二区三区四区在线视频 | 国产99在线播放 | 午夜无遮挡怕怕怕免费视频 | 香蕉爱爱视频 | 成人亚洲网站 | 国产成人高清一区二区私人 |