哈夫曼樹又稱最優(yōu)二叉樹,是一種帶權(quán)路徑長度最短的二叉樹。所謂樹的帶權(quán)路徑長度,就是樹中所有的葉結(jié)點(diǎn)的權(quán)值乘上其到根結(jié)點(diǎn)的路徑長度(若根結(jié)點(diǎn)為0層,葉結(jié)點(diǎn)到根結(jié)點(diǎn)的路徑長度為葉結(jié)點(diǎn)的層數(shù))。樹的帶權(quán)路徑長度記為WPL=(W1*L1+W2*L2+W3*L3+...+Wn*Ln),N個(gè)權(quán)值Wi(i=1,2,...n)構(gòu)成一棵有N個(gè)葉結(jié)點(diǎn)的二叉樹,相應(yīng)的葉結(jié)點(diǎn)的路徑長度為Li(i=1,2,...n)。可以證明哈夫曼樹的WPL是最小的。
上傳時(shí)間: 2017-06-09
上傳用戶:wang5829
介紹回歸問題中高斯過程的應(yīng)用,C. E. Rasmussen & C. K. I. Williams, Gaussian Processes for Machine Learning,
上傳時(shí)間: 2017-07-25
上傳用戶:skfreeman
批處理感知器算法的代碼matlab w1=[1,0.1,1.1;1,6.8,7.1;1,-3.5,-4.1;1,2.0,2.7;1,4.1,2.8;1,3.1,5.0;1,-0.8,-1.3; 1,0.9,1.2;1,5.0,6.4;1,3.9,4.0]; w2=[1,7.1,4.2;1,-1.4,-4.3;1,4.5,0.0;1,6.3,1.6;1,4.2,1.9;1,1.4,-3.2;1,2.4,-4.0; 1,2.5,-6.1;1,8.4,3.7;1,4.1,-2.2]; w3=[1,-3.0,-2.9;1,0.5,8.7;1,2.9,2.1;1,-0.1,5.2;1,-4.0,2.2;1,-1.3,3.7;1,-3.4,6.2; 1,-4.1,3.4;1,-5.1,1.6;1,1.9,5.1]; figure; plot(w3(:,2),w3(:,3),'ro'); hold on; plot(w2(:,2),w2(:,3),'b+'); W=[w2;-w3];%增廣樣本規(guī)范化 a=[0,0,0]; k=0;%記錄步數(shù) n=1; y=zeros(size(W,2),1);%記錄錯(cuò)分的樣本 while any(y<=0) k=k+1; y=a*transpose(W);%記錄錯(cuò)分的樣本 a=a+sum(W(find(y<=0),:));%更新a if k >= 250 break end end if k<250 disp(['a為:',num2str(a)]) disp(['k為:',num2str(k)]) else disp(['在250步以內(nèi)沒有收斂,終止']) end %判決面:x2=-a2*x1/a3-a1/a3 xmin=min(min(w1(:,2)),min(w2(:,2))); xmax=max(max(w1(:,2)),max(w2(:,2))); x=xmin-1:xmax+1;%(xmax-xmin): y=-a(2)*x/a(3)-a(1)/a(3); plot(x,y)
上傳時(shí)間: 2016-11-07
上傳用戶:a1241314660
#include <malloc.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define NULL 0 #define MaxSize 30 typedef struct athletestruct /*運(yùn)動員*/ { char name[20]; int score; /*分?jǐn)?shù)*/ int range; /**/ int item; /*項(xiàng)目*/ }ATH; typedef struct schoolstruct /*學(xué)校*/ { int count; /*編號*/ int serial; /**/ int menscore; /*男選手分?jǐn)?shù)*/ int womenscore; /*女選手分?jǐn)?shù)*/ int totalscore; /*總分*/ ATH athlete[MaxSize]; /**/ struct schoolstruct *next; }SCH; int nsc,msp,wsp; int ntsp; int i,j; int overgame; int serial,range; int n; SCH *head,*pfirst,*psecond; int *phead=NULL,*pafirst=NULL,*pasecond=NULL; void create(); void input () { char answer; head = (SCH *)malloc(sizeof(SCH)); /**/ head->next = NULL; pfirst = head; answer = 'y'; while ( answer == 'y' ) { Is_Game_DoMain: printf("\nGET Top 5 when odd\nGET Top 3 when even"); printf("\n輸入運(yùn)動項(xiàng)目序號 (x<=%d):",ntsp); scanf("%d",pafirst); overgame = *pafirst; if ( pafirst != phead ) { for ( pasecond = phead ; pasecond < pafirst ; pasecond ++ ) { if ( overgame == *pasecond ) { printf("\n這個(gè)項(xiàng)目已經(jīng)存在請選擇其他的數(shù)字\n"); goto Is_Game_DoMain; } } } pafirst = pafirst + 1; if ( overgame > ntsp ) { printf("\n項(xiàng)目不存在"); printf("\n請重新輸入"); goto Is_Game_DoMain; } switch ( overgame%2 ) { case 0: n = 3;break; case 1: n = 5;break; } for ( i = 1 ; i <= n ; i++ ) { Is_Serial_DoMain: printf("\n輸入序號 of the NO.%d (0<x<=%d): ",i,nsc); scanf("%d",&serial); if ( serial > nsc ) { printf("\n超過學(xué)校數(shù)目,請重新輸入"); goto Is_Serial_DoMain; } if ( head->next == NULL ) { create(); } psecond = head->next ; while ( psecond != NULL ) { if ( psecond->serial == serial ) { pfirst = psecond; pfirst->count = pfirst->count + 1; goto Store_Data; } else { psecond = psecond->next; } } create(); Store_Data: pfirst->athlete[pfirst->count].item = overgame; pfirst->athlete[pfirst->count].range = i; pfirst->serial = serial; printf("Input name:) : "); scanf("%s",pfirst->athlete[pfirst->count].name); } printf("\n繼續(xù)輸入運(yùn)動項(xiàng)目(y&n)?"); answer = getchar(); printf("\n"); } } void calculate() /**/ { pfirst = head->next; while ( pfirst->next != NULL ) { for (i=1;i<=pfirst->count;i++) { if ( pfirst->athlete[i].item % 2 == 0 ) { switch (pfirst->athlete[i].range) { case 1:pfirst->athlete[i].score = 5;break; case 2:pfirst->athlete[i].score = 3;break; case 3:pfirst->athlete[i].score = 2;break; } } else { switch (pfirst->athlete[i].range) { case 1:pfirst->athlete[i].score = 7;break; case 2:pfirst->athlete[i].score = 5;break; case 3:pfirst->athlete[i].score = 3;break; case 4:pfirst->athlete[i].score = 2;break; case 5:pfirst->athlete[i].score = 1;break; } } if ( pfirst->athlete[i].item <=msp ) { pfirst->menscore = pfirst->menscore + pfirst->athlete[i].score; } else { pfirst->womenscore = pfirst->womenscore + pfirst->athlete[i].score; } } pfirst->totalscore = pfirst->menscore + pfirst->womenscore; pfirst = pfirst->next; } } void output() { pfirst = head->next; psecond = head->next; while ( pfirst->next != NULL ) { // clrscr(); printf("\n第%d號學(xué)校的結(jié)果成績:",pfirst->serial); printf("\n\n項(xiàng)目的數(shù)目\t學(xué)校的名字\t分?jǐn)?shù)"); for (i=1;i<=ntsp;i++) { for (j=1;j<=pfirst->count;j++) { if ( pfirst->athlete[j].item == i ) { printf("\n %d\t\t\t\t\t\t%s\n %d",i,pfirst->athlete[j].name,pfirst->athlete[j].score);break; } } } printf("\n\n\n\t\t\t\t\t\t按任意建 進(jìn)入下一頁"); getchar(); pfirst = pfirst->next; } // clrscr(); printf("\n運(yùn)動會結(jié)果:\n\n學(xué)校編號\t男運(yùn)動員成績\t女運(yùn)動員成績\t總分"); pfirst = head->next; while ( pfirst->next != NULL ) { printf("\n %d\t\t %d\t\t %d\t\t %d",pfirst->serial,pfirst->menscore,pfirst->womenscore,pfirst->totalscore); pfirst = pfirst->next; } printf("\n\n\n\t\t\t\t\t\t\t按任意建結(jié)束"); getchar(); } void create() { pfirst = (struct schoolstruct *)malloc(sizeof(struct schoolstruct)); pfirst->next = head->next ; head->next = pfirst ; pfirst->count = 1; pfirst->menscore = 0; pfirst->womenscore = 0; pfirst->totalscore = 0; } void Save() {FILE *fp; if((fp = fopen("school.dat","wb"))==NULL) {printf("can't open school.dat\n"); fclose(fp); return; } fwrite(pfirst,sizeof(SCH),10,fp); fclose(fp); printf("文件已經(jīng)成功保存\n"); } void main() { system("cls"); printf("\n\t\t\t 運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì)\n"); printf("輸入學(xué)校數(shù)目 (x>= 5):"); scanf("%d",&nsc); printf("輸入男選手的項(xiàng)目(x<=20):"); scanf("%d",&msp); printf("輸入女選手項(xiàng)目(<=20):"); scanf("%d",&wsp); ntsp = msp + wsp; phead = (int *)calloc(ntsp,sizeof(int)); pafirst = phead; pasecond = phead; input(); calculate(); output(); Save(); }
標(biāo)簽: 源代碼
上傳時(shí)間: 2016-12-28
上傳用戶:150501
取各障礙物頂點(diǎn)連線的中點(diǎn)為路徑點(diǎn),相互連接各路徑點(diǎn),將機(jī)器人移動的起點(diǎn)和終點(diǎn)限制在各路徑點(diǎn)上,利用最短路徑算法來求網(wǎng)絡(luò)圖的最短路徑,找到從起點(diǎn)P1到終點(diǎn)Pn的最短路徑。上述算法使用了連接線中點(diǎn)的條件,因此不是整個(gè)規(guī)劃空間的最優(yōu)路徑,然后利用遺傳算法對找到的最短路徑各個(gè)路徑點(diǎn)Pi (i=1,2,…n)調(diào)整,讓各路徑點(diǎn)在相應(yīng)障礙物端點(diǎn)連線上滑動,利用Pi= Pi1+ti×(Pi2-Pi1)(ti∈[0,1] i=1,2,…n)即可確定相應(yīng)的Pi,即為新的路徑點(diǎn),連接此路徑點(diǎn)為最優(yōu)路徑。
標(biāo)簽: 遺傳算法 路徑規(guī)劃 matlab
上傳時(shí)間: 2017-05-05
上傳用戶:tttt123
作者:Charles K Alexander ,Matthew N.O Sadiku 內(nèi)容:電路基礎(chǔ)知識,電子工程師必學(xué)課程
標(biāo)簽: 電路基礎(chǔ)
上傳時(shí)間: 2021-02-03
上傳用戶:
P P I I CK I I T T3 3 使用 說明--- - 連機(jī) 、 脫 機(jī)操作試用 MPLAB IDE 軟件一 、 P P I I C CK K I I T3 接 口說 明, , 硬 件 二 、 P P I I C CK K I I T3 連 接 電腦 MPL L AB I I DE 聯(lián)機(jī)三 、 聯(lián)機(jī)四 、聯(lián)機(jī)讀芯片程序五 、 脫機(jī) 燒寫 調(diào)試
標(biāo)簽: kit3 聯(lián)機(jī) 脫機(jī)
上傳時(shí)間: 2022-03-24
上傳用戶:
(1)輸入E條弧<j,k>,建立AOE-網(wǎng)的存儲結(jié)構(gòu) (2)從源點(diǎn)v出發(fā),令ve[0]=0,按拓?fù)渑判蚯笃溆喔黜?xiàng)頂點(diǎn)的最早發(fā)生時(shí)間ve[i](1<=i<=n-1).如果得到的拓樸有序序列中頂點(diǎn)個(gè)數(shù)小于網(wǎng)中頂點(diǎn)數(shù)n,則說明網(wǎng)中存在環(huán),不能求關(guān)鍵路徑,算法終止 否則執(zhí)行步驟(3)(3)從匯點(diǎn)v出發(fā),令vl[n-1]=ve[n-1],按逆拓樸排序求其余各頂點(diǎn)的最遲發(fā)生時(shí)間vl[i](n-2>=i>=2). (4)根據(jù)各頂點(diǎn)的ve和vl值,求每條弧s的最早發(fā)生時(shí)間e(s)和最遲開始時(shí)間l(s).若某條弧滿足條件e(s)=l(s),則為關(guān)鍵活動.
上傳時(shí)間: 2014-11-28
上傳用戶:fredguo
最佳高度問題。 問題描述: 假設(shè)有n個(gè)任務(wù)由K個(gè)可并行工作的機(jī)器完成。完成任務(wù)i需要的時(shí)間為t(i)。試設(shè)計(jì)一個(gè)算法找出完成這n個(gè)任務(wù)的最佳調(diào)度,使得完成全部任務(wù)的時(shí)間最早。
標(biāo)簽: 并行 機(jī)器 算法 調(diào)度
上傳時(shí)間: 2014-12-07
上傳用戶:Amygdala
本章重點(diǎn)是如何在Wi n d o w s套接字應(yīng)用程序中對I / O(輸入/輸出)操作進(jìn)行管理。 Wi n s o c k分別提供了“套接字模式”和“套接字I / O模型”,可對一個(gè)套接字上的I / O行為加以 控制
標(biāo)簽: 套接 Wi 分 應(yīng)用程序
上傳時(shí)間: 2013-12-14
上傳用戶:Shaikh
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1