chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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ù)結(jié)構(gòu)與算法中什么是最小生成樹

算法與數(shù)據(jù)結(jié)構(gòu) ? 來源:bigsai ? 作者:bigsai ? 2021-10-28 17:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

在數(shù)據(jù)結(jié)構(gòu)與算法圖論中,(生成)最小生成樹算法是一種常用并且和生活貼切比較近的一種算法。但是可能很多人對(duì)概念不是很清楚,什么是最小生成樹?

一個(gè)有 n 個(gè)結(jié)點(diǎn)的連通圖的生成樹是原圖的極小連通子圖,且包含原圖中的所有 n 個(gè)結(jié)點(diǎn),并且有保持圖連通的最少的邊。最小生成樹可以用kruskal(克魯斯卡爾)算法或prim(普里姆)算法求出。

通俗易懂的講就是最小生成樹包含原圖的所有節(jié)點(diǎn)而只用最少的邊最小的權(quán)值距離。因?yàn)?code style="margin-right:2px;margin-left:2px;padding:2px 4px;font-size:inherit;color:rgb(248,35,117);line-height:inherit;background:rgb(248,248,248);">n個(gè)節(jié)點(diǎn)最少需要n-1個(gè)邊聯(lián)通,而距離就需要采取某種策略選擇恰當(dāng)?shù)倪叀?/p>

學(xué)習(xí)最小生成樹實(shí)現(xiàn)算法之前我們要先高清最小生成樹的結(jié)構(gòu)和意義所在。咱么首先根據(jù)一些圖更好的祝你理解。

一個(gè)故事

在城市道路規(guī)劃中,是一門很需要科學(xué)的研究(只是假設(shè)學(xué)習(xí)不必當(dāng)真)。在公路時(shí)代城市聯(lián)通的主要矛盾是時(shí)間慢,而造價(jià)相比運(yùn)輸時(shí)間是次要矛盾。所以在公路時(shí)代我們盡量使得城市能夠直接聯(lián)通,縮短城市聯(lián)系時(shí)間,而稍微考慮建路成本!隨著科技發(fā)展、高級(jí)鐵路、信息傳輸相比公路運(yùn)輸快非常非常多,從而事件的主要矛盾從運(yùn)輸時(shí)間轉(zhuǎn)變?yōu)樵靸r(jià)成本,故有時(shí)會(huì)關(guān)注聯(lián)通所有點(diǎn)的路程(最短),這就用到最小生成樹算法。

城市道路鋪設(shè)可能經(jīng)歷以下幾個(gè)階段。

  • 初始,各個(gè)城市沒有高速公路(鐵路)。

  • 政府打算各個(gè)城市鋪設(shè)公路(鐵路),每個(gè)城市都想成為交通樞紐,快速到達(dá)其他城市,但每個(gè)城市都有這種想法,如果實(shí)現(xiàn)下去造價(jià)太昂貴。并且造成巨大浪費(fèi)。

  • 最終國(guó)家選擇一些主要城市進(jìn)行聯(lián)通,有個(gè)別城市只能稍微繞道而行,而繞道太遠(yuǎn)的、人流量多的國(guó)家考慮新建公路(鐵路),適當(dāng)提高效率。

不過上面鐵路規(guī)劃上由于龐大的人口可能不能夠滿足與"有鐵路"這個(gè)需求,人們對(duì)速度、距離、直達(dá)等條件一直在追求中……

但是你可以想象這個(gè)場(chǎng)景:有些東西造假非常非常昂貴,使用效率非常高,我這里假設(shè)成黃金鑲鉆電纜鋪設(shè),所以各個(gè)城市只要求不給自己落下,能通上就行(沒人敢跳了吧)。

要從有環(huán)圖中選取代價(jià)和最小的路線一方面代價(jià)最小(總距離最小最省黃金)另一方面聯(lián)通所有城市。

然而根據(jù)上圖我們可以得到以下最小生成樹,但是最么生成這個(gè)最小生成樹,就是下面要講的了。

而類似的還有局部區(qū)域島嶼聯(lián)通修橋,海底通道這些高成本的都多多少少會(huì)運(yùn)用。

Kruskal算法

上面介紹了最小生成樹是什么,現(xiàn)在需要掌握和理解最小生成樹如何形成。給你一個(gè)圖,用一個(gè)規(guī)則生成一個(gè)最小生成樹。而在實(shí)現(xiàn)最小生成樹方面有prim和kruskal算法,這兩種算法的策略有所區(qū)別,但是時(shí)間復(fù)雜度一致。

Kruskal算法,和前面講到的并查集關(guān)系很大,它的主要思想為:

先構(gòu)造一個(gè)只含 n 個(gè)頂點(diǎn)、而邊集為空的子圖,把子圖中各個(gè)頂點(diǎn)看成各棵樹上的根結(jié)點(diǎn),之后,從網(wǎng)的邊集 E 中選取一條權(quán)值最小的邊,若該條邊的兩個(gè)頂點(diǎn)分屬不同的樹,則將其加入子圖,即把兩棵樹合成一棵樹,反之,若該條邊的兩個(gè)頂點(diǎn)已落在同一棵樹上,則不可取,而應(yīng)該取下一條權(quán)值最小的邊再試之。依次類推,直到森林中只有一棵樹,也即子圖中含有 n-1 條邊為止。

簡(jiǎn)而言之,Kruskal算法進(jìn)行調(diào)度的單位是邊,它的信仰為:所有邊能小則小,算法的實(shí)現(xiàn)方面要用到并查集判斷兩點(diǎn)是否在同一集合。

而算法的具體步驟為:

  1. 將圖中所有邊對(duì)象(邊長(zhǎng)、兩端點(diǎn))依次加入集合(優(yōu)先隊(duì)列)q1中。初始所有點(diǎn)相互獨(dú)立

  2. 取出集合(優(yōu)先隊(duì)列)q1最小邊,判斷邊的兩點(diǎn)是否聯(lián)通。

  3. 如果聯(lián)通說明兩個(gè)點(diǎn)已經(jīng)有其它邊將兩點(diǎn)聯(lián)通了,跳過,如果不連通,則使用union(并查集合并)將兩個(gè)頂點(diǎn)合并,這條邊被使用(可以儲(chǔ)存或者計(jì)算數(shù)值)。

  4. 重復(fù)2,3操作直到集合(優(yōu)先隊(duì)列)q1為空。此時(shí)被選擇的邊構(gòu)成最小生成樹。

Prim算法

除了Kruskal算法以外,普里姆算法(Prim算法)也是常用的最小生成樹算法。雖然在效率上差不多。但是貪心的方式和Kruskal完全不同。

prim算法的核心信仰是:從已知擴(kuò)散尋找最小。它的實(shí)現(xiàn)方式和Dijkstra算法相似但稍微有所區(qū)別,Dijkstra是求單源最短路徑,而每計(jì)算一個(gè)點(diǎn)需要對(duì)這個(gè)點(diǎn)重新更新距離,而prim不用更新距離。直接找已知點(diǎn)的鄰邊最小加入即可!primkruskal算法都是從邊入手處理。

對(duì)于具體算法具體步驟,大致為:

  1. 尋找圖中任意點(diǎn),以它為起點(diǎn),它的所有邊V加入集合(優(yōu)先隊(duì)列)q1,設(shè)置一個(gè)boolean數(shù)組bool[]標(biāo)記該位置(邊有兩個(gè)點(diǎn),每次加入沒有被標(biāo)記那個(gè)點(diǎn)的所有邊)。

  2. 從集合q1找到距離最小的那個(gè)邊v1判斷邊是否存在未被標(biāo)記的一點(diǎn)`p`,如果p不存在說明已經(jīng)確定過那么跳過當(dāng)前邊處理,如果未被標(biāo)(訪問)記那么標(biāo)記該點(diǎn)p,并且與p相連的未知點(diǎn)(未被標(biāo)記)構(gòu)成的邊加入集合q1,邊v1(可以進(jìn)行計(jì)算距離之類,該邊構(gòu)成最小生成樹).

  3. 重復(fù)1,2直到q1為空,構(gòu)成最小生成樹 !

大體步驟圖解為:

因?yàn)閜rim從開始到結(jié)束一直是一個(gè)整體在擴(kuò)散,所以不需要考慮兩棵樹合并的問題,在這一點(diǎn)實(shí)現(xiàn)上稍微方便了一點(diǎn)。

當(dāng)然,要注意的是最小生成樹并不唯一,甚至同一種算法生成的最小生成樹都可能有所不同,但是相同的是無論生成怎樣的最小生成樹:

  • 能夠保證所有節(jié)點(diǎn)連通(能夠滿足要求和條件)

  • 能夠保證所有路徑之和最小(結(jié)果和目的相同)

  • 最小生成樹不唯一,可能多樣的

代碼實(shí)現(xiàn)

上面分析了邏輯實(shí)現(xiàn)。下面我們用代碼簡(jiǎn)單實(shí)現(xiàn)上述的算法。

prim

package圖論;

importjava.util.ArrayList;
importjava.util.Arrays;
importjava.util.Comparator;
importjava.util.List;
importjava.util.PriorityQueue;
importjava.util.Queue;

publicclassprim{

publicstaticvoidmain(String[]args){
intminlength=0;//最小生成樹的最短路徑長(zhǎng)度
intmax=66666;
Stringcityname[]={"北京","武漢","南京","上海","杭州","廣州","深圳"};
intcity[][]={
{max,8,7,max,max,max,max},//北京和武漢南京聯(lián)通
{8,max,6,max,9,8,max},//武漢——北京、南京、杭州、廣州
{7,6,max,3,4,max,max},//南京——北京、武漢、上海、杭州
{max,max,3,max,2,max,max},//上?!暇?、杭州
{max,9,4,2,max,max,10},//杭州——武漢、南京、上海、深圳
{max,8,max,max,max,max,2},//廣州——武漢、深圳
{max,max,max,max,10,2,max}//深圳——杭州、廣州
};//地圖

booleanistrue[]=newboolean[7];
//南京
Queueq1=newPriorityQueue(newComparator(){
publicintcompare(sideo1,sideo2){
//TODOAuto-generatedmethodstub
returno1.lenth-o2.lenth;
}
});
for(inti=0;i<7;i++)
{
if(city[2][i]!=max)
{
istrue[2]=true;
q1.add(newside(city[2][i],2,i));
}
}
while(!q1.isEmpty())
{
sidenewside=q1.poll();//拋出
if(istrue[newside.point1]&&istrue[newside.point2])
{
continue;
}
else{
if(!istrue[newside.point1])
{
istrue[newside.point1]=true;
minlength+=city[newside.point1][newside.point2];
System.out.println(cityname[newside.point1]+""+cityname[newside.point2]+"聯(lián)通");
for(inti=0;i<7;i++)
{
if(!istrue[i])
{
q1.add(newside(city[newside.point1][i],newside.point1,i));
}
}
}
else{
istrue[newside.point2]=true;
minlength+=city[newside.point1][newside.point2];
System.out.println(cityname[newside.point2]+""+cityname[newside.point1]+"聯(lián)通");
for(inti=0;i<7;i++)
{
if(!istrue[i])
{
q1.add(newside(city[newside.point2][i],newside.point2,i));
}
}
}
}

}
System.out.println(minlength);
}

staticclassside//邊
{
intlenth;
intpoint1;
intpoint2;
publicside(intlenth,intp1,intp2){
this.lenth=lenth;
this.point1=p1;
this.point2=p2;
}
}

}

輸出結(jié)果:

上海 南京 聯(lián)通
杭州 上海 聯(lián)通
武漢 南京 聯(lián)通
北京 南京 聯(lián)通
廣州 武漢 聯(lián)通
深圳 廣州 聯(lián)通
28

Kruskal:
package圖論;

importjava.util.Comparator;
importjava.util.PriorityQueue;
importjava.util.Queue;

import圖論.prim.side;
/*
*作者:bigsai(公眾號(hào))
*/
publicclasskruskal{

staticinttree[]=newint[10];//bing查集
publicstaticvoidinit(){
for(inti=0;i<10;i++)//初始
{
tree[i]=-1;
}
}
publicstaticintsearch(inta)//返回頭節(jié)點(diǎn)的數(shù)值
{
if(tree[a]>0)//說明是子節(jié)點(diǎn)
{
returntree[a]=search(tree[a]);//路徑壓縮
}
else
returna;
}
publicstaticvoidunion(inta,intb)//表示a,b所在的樹合并小樹合并大樹(不重要)
{
inta1=search(a);//a根
intb1=search(b);//b根
if(a1==b1){//System.out.println(a+"和"+b+"已經(jīng)在一棵樹上");
}
else{
if(tree[a1]//這個(gè)是負(fù)數(shù),為了簡(jiǎn)單減少計(jì)算,不在調(diào)用value函數(shù)
{
tree[a1]+=tree[b1];//個(gè)數(shù)相加注意是負(fù)數(shù)相加
tree[b1]=a1;//b樹成為a的子樹,直接指向a;
}
else
{
tree[b1]+=tree[a1];//個(gè)數(shù)相加注意是負(fù)數(shù)相加
tree[a1]=b1;//b樹成為a的子樹,直接指向a;
}
}
}
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
init();
intminlength=0;//最小生成樹的最短路徑長(zhǎng)度
intmax=66666;
Stringcityname[]={"北京","武漢","南京","上海","杭州","廣州","深圳"};
booleanjud[][]=newboolean[7][7];//加入邊需要防止重復(fù)比如ba和ab等價(jià)的
intcity[][]={
{max,8,7,max,max,max,max},
{8,max,6,max,9,8,max},
{7,6,max,3,4,max,max},
{max,max,3,max,2,max,max},
{max,9,4,2,max,max,10},
{max,8,max,max,max,max,2},
{max,max,max,max,10,2,max}
};//地圖
booleanistrue[]=newboolean[7];
//南京
Queueq1=newPriorityQueue(newComparator(){//優(yōu)先隊(duì)列存邊+
publicintcompare(sideo1,sideo2){
//TODOAuto-generatedmethodstub
returno1.lenth-o2.lenth;
}
});
for(inti=0;i<7;i++)
{
for(intj=0;j<7;j++)
{
if(!jud[i][j]&&city[i][j]!=max)//是否加入隊(duì)列
{
jud[i][j]=true;jud[j][i]=true;
q1.add(newside(city[i][j],i,j));
}
}
}
while(!q1.isEmpty())//執(zhí)行算法
{
sidenewside=q1.poll();
intp1=newside.point1;
intp2=newside.point2;
if(search(p1)!=search(p2))
{
union(p1,p2);
System.out.println(cityname[p1]+""+cityname[p2]+"聯(lián)通");
minlength+=newside.lenth;
}
}
System.out.println(minlength);


}
staticclassside//邊
{
intlenth;
intpoint1;
intpoint2;
publicside(intlenth,intp1,intp2){
this.lenth=lenth;
this.point1=p1;
this.point2=p2;
}
}
}

輸出結(jié)果

上海 杭州 聯(lián)通
廣州 深圳 聯(lián)通
南京 上海 聯(lián)通
武漢 南京 聯(lián)通
北京 南京 聯(lián)通
武漢 廣州 聯(lián)通
28

總結(jié)

最小生成樹算法理解起來也相對(duì)簡(jiǎn)單,實(shí)現(xiàn)起來也不是很難。Kruskal和Prim主要是貪心算法的兩種角度。一個(gè)從整體開始找最小邊,遇到關(guān)聯(lián)不斷合并,另一個(gè)從局部開始擴(kuò)散找身邊的最小不斷擴(kuò)散直到生成最小生成樹。在學(xué)習(xí)最小生成樹之前最好學(xué)習(xí)一下dijkstra算法和并查集,這樣在實(shí)現(xiàn)起來能夠快一點(diǎn),清晰一點(diǎn)。

力扣1584就是一個(gè)最小生成樹的入門題,不過哪個(gè)有點(diǎn)區(qū)別的就是默認(rèn)所有點(diǎn)是聯(lián)通的,所以需要你剪枝優(yōu)化。

責(zé)任編輯:haq
聲明:本文內(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)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7256

    瀏覽量

    91890
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4710

    瀏覽量

    95403

原文標(biāo)題:最小生成樹,秒懂!

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    ez-usb3.0如何更改slfifosync數(shù)據(jù),可以生成8bit數(shù)據(jù)位的usb固件?

    使用gpif ii生成.h文件后,ez usb suite載入slfifosync文件夾,并將.h文件放進(jìn)去。由于原slfifosync好像只能選擇16或者32bit數(shù)據(jù)位的,
    發(fā)表于 05-14 07:53

    程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)

    的地址)出發(fā),采用推導(dǎo)的方式,深入淺出的分析了廣大C程序員學(xué)習(xí)和開發(fā)遇到的難點(diǎn)。 2. 從方法論的高度對(duì)C語言在數(shù)據(jù)結(jié)構(gòu)算法方面的應(yīng)用進(jìn)行了深入講解和闡述。 3. 講解了絕大多數(shù)C程序員開發(fā)
    發(fā)表于 05-13 16:45

    PanDao:實(shí)際約束條件下成像系統(tǒng)的初始結(jié)構(gòu)生成

    的是,尋找合適的初始設(shè)計(jì)方案以進(jìn)行后續(xù)適配與優(yōu)化,已經(jīng)被證明是一項(xiàng)艱巨的工作。為避免這一耗時(shí)流程,本次研究的目標(biāo)是從既定規(guī)格與約束條件中直接生成多種優(yōu)質(zhì)的初始結(jié)構(gòu)。此研究將會(huì)為光學(xué)設(shè)計(jì)師帶來兩大好處:其一
    發(fā)表于 05-07 08:57

    科技在物聯(lián)網(wǎng)方面

    。 人工智能算法優(yōu)化:宇科技不斷優(yōu)化其機(jī)器人的人工智能算法,使其能夠在物聯(lián)網(wǎng)環(huán)境更好地進(jìn)行智能決策。通過機(jī)器學(xué)習(xí)、深度學(xué)習(xí)等技術(shù),機(jī)器人可以從大量的
    發(fā)表于 02-04 06:48

    使用TFTP加載內(nèi)核設(shè)備

    在嵌入式項(xiàng)目開發(fā),為了適配新外設(shè)、調(diào)整硬件資源分配或修復(fù)驅(qū)動(dòng)問題,需要頻繁修改設(shè)備和內(nèi)核。修改完成后,通常需要重新編譯生成鏡像,并將其燒錄到開發(fā)板上進(jìn)行測(cè)試。然而,傳統(tǒng)的燒錄方式不僅需要連接物理接口,還可能因?yàn)殓R像體積較大而
    的頭像 發(fā)表于 01-17 15:52 ?1452次閱讀
    使用TFTP加載內(nèi)核設(shè)備<b class='flag-5'>樹</b>

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-初識(shí)設(shè)備之設(shè)備組成和結(jié)構(gòu)

    的一項(xiàng)技能。設(shè)備的起源設(shè)備(Device Tree)是一種描述硬件資源的數(shù)據(jù)結(jié)構(gòu),它由uboot傳遞給Linux內(nèi)核,被內(nèi)核解析,內(nèi)核根據(jù)設(shè)備
    發(fā)表于 01-08 08:32

    飛凌嵌入式ElfBoard ELF 1板卡-初識(shí)設(shè)備之設(shè)備組成和結(jié)構(gòu)

    的一項(xiàng)技能。設(shè)備的起源設(shè)備(Device Tree)是一種描述硬件資源的數(shù)據(jù)結(jié)構(gòu),它由uboot傳遞給Linux內(nèi)核,被內(nèi)核解析,內(nèi)核根據(jù)設(shè)備
    發(fā)表于 01-07 09:16

    AIGC與傳統(tǒng)內(nèi)容生成的區(qū)別 AIGC的優(yōu)勢(shì)和挑戰(zhàn)

    、AIGC與傳統(tǒng)內(nèi)容生成的區(qū)別 數(shù)據(jù)類型與處理 : AIGC主要面向非結(jié)構(gòu)數(shù)據(jù)生成,如自然語言文本、圖像、音頻、視頻等。這類
    的頭像 發(fā)表于 11-22 16:04 ?1432次閱讀

    DDC264配置寄存器數(shù)據(jù)寫入和320 DCLK時(shí)鐘脈沖后的回讀數(shù)據(jù)結(jié)構(gòu)是什么?

    配置寄存器數(shù)據(jù)寫入和320 DCLK時(shí)鐘脈沖后的回讀數(shù)據(jù)結(jié)構(gòu)是什么? 根據(jù)注和表9,16位配置寄存器數(shù)據(jù),4位修訂ID, 300位校驗(yàn)?zāi)J?,怎么可能?024 TOTAL READBACK BITS, format = 0
    發(fā)表于 11-19 07:58

    RNN在圖片描述生成的應(yīng)用

    輸入圖像的內(nèi)容。 RNN的基本原理 RNN是一種用于處理序列數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò),它通過循環(huán)結(jié)構(gòu)來處理序列的每個(gè)元素,并保持前一個(gè)元素的信息。RNN的主要特點(diǎn)是它能夠處理任意長(zhǎng)度的序列,并且能夠捕捉序列
    的頭像 發(fā)表于 11-15 09:58 ?955次閱讀

    視覺軟件HALCON的數(shù)據(jù)結(jié)構(gòu)

    在研究機(jī)器視覺算法之前,我們需要先了解機(jī)器視覺應(yīng)用涉及的基本數(shù)據(jù)結(jié)構(gòu)。Halcon數(shù)據(jù)結(jié)構(gòu)主要有圖像參數(shù)和控制參數(shù)兩類參數(shù)。圖像參數(shù)包括:image、region、XLD,控制參數(shù)包
    的頭像 發(fā)表于 11-14 10:20 ?1294次閱讀
    視覺軟件HALCON的<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>

    魯棒性算法數(shù)據(jù)處理的應(yīng)用

    一、魯棒性算法的基本概念 魯棒性算法是指在面對(duì)數(shù)據(jù)的異常值、噪聲和不確定性時(shí),仍能保持穩(wěn)定性能的算法。這類
    的頭像 發(fā)表于 11-11 10:22 ?1834次閱讀

    AIGC與傳統(tǒng)內(nèi)容生成的區(qū)別

    AIGC : 主要面向非結(jié)構(gòu)數(shù)據(jù)生成,如自然語言文本、圖像、音頻、視頻等。 這類數(shù)據(jù)規(guī)模更大,內(nèi)在結(jié)構(gòu)更復(fù)雜,對(duì)處理技術(shù)提出了更高要求
    的頭像 發(fā)表于 10-25 15:13 ?1261次閱讀

    什么是默克爾(Merkle Tree)?如何計(jì)算默克爾根?

    01 默克爾的概念 默克爾(Merkle Tree)是一種特殊的二叉,它的每個(gè)節(jié)點(diǎn)都存儲(chǔ)了一個(gè)數(shù)據(jù)塊的哈希值。哈希值是一種可以將任意長(zhǎng)度的數(shù)據(jù)
    的頭像 發(fā)表于 09-30 18:22 ?2364次閱讀
    什么是默克爾<b class='flag-5'>樹</b>(Merkle Tree)?如何計(jì)算默克爾根?

    嵌入式常用數(shù)據(jù)結(jié)構(gòu)有哪些

    在嵌入式編程數(shù)據(jù)結(jié)構(gòu)的選擇和使用對(duì)于程序的性能、內(nèi)存管理以及開發(fā)效率都具有重要影響。嵌入式系統(tǒng)由于資源受限(如處理器速度、內(nèi)存大小等),因此對(duì)數(shù)據(jù)結(jié)構(gòu)的選擇和使用尤為關(guān)鍵。以下是嵌入式編程中常用的幾種
    的頭像 發(fā)表于 09-02 15:25 ?1042次閱讀