




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
算法設(shè)計(jì)與分析作業(yè)
姓名:學(xué)號:專業(yè):
習(xí)題一
1-1函數(shù)的漸進(jìn)表達(dá)式
3n2+10n=O(n2);
n2/10+2n=O(2n);
21+l/n=0(l);
logn3=O(logn);
10log3n=O(n)
1-2O⑴和0(2)的區(qū)別
分析與解答:根據(jù)符號0的定義可知。(1)=0(2)用。(1)和。(2)
表示同一個函數(shù)時,差別僅在于其中的常數(shù)因子。
1-3按漸進(jìn)階排列表達(dá)式
分析與解答:按漸進(jìn)階從低到高,函數(shù)排列順序如下:
0(2)<0(logn)<0(n2/3)<0(20n)<0(4n2)<0(3n)<0(n!)
習(xí)題二
算法分析題
2-27個二分搜索算法
分析與解答:(1)與主教材中的算法Binarysearch相比,數(shù)組段左、右游
標(biāo)left和right的調(diào)整不正確,導(dǎo)致陷入死循環(huán)。
(2)數(shù)組段左、右游標(biāo)left和right的調(diào)整不正確,導(dǎo)致當(dāng)x=a[n-l]時返回
錯誤。
(3)數(shù)組段左、右游標(biāo)left和right的調(diào)整不正確,導(dǎo)致當(dāng)x=a[n-l]時返回
錯誤。
(4)數(shù)組段左、右游標(biāo)left和right的調(diào)整不正確,導(dǎo)致陷入死循環(huán)。
(5)算法正確,且當(dāng)數(shù)組中有重復(fù)元素時,返回滿足條件的最右元素。
(6)數(shù)組段左、右游標(biāo)left和right的調(diào)整不正確,導(dǎo)致當(dāng)x=a[n-l]時返回
錯誤。
(7)數(shù)組段左、右游標(biāo)left和right的調(diào)整不正確,導(dǎo)致當(dāng)x=a⑼時陷入死
循環(huán)。
2-26修改快速排序算法,使它在最壞情況下的計(jì)算時間為0(nlogn).
分析與解答:從一個無序的序列中隨機(jī)取出一個值q做為支點(diǎn),然后把大
于q的放到一邊,小于q的放到q的另一邊,然后再以q為分界點(diǎn),分別對q的
兩邊進(jìn)行排序(快排時直接再對q兩邊重新取支點(diǎn),整理,再取支點(diǎn),…直到支
點(diǎn)兩旁都有序。也就是支點(diǎn)兩旁只有一個數(shù)時)
#include<stdio.h>
#include<stdlib.h>
intQsort(intp[],intbegjntend)
if(beg+l>=end)return0;〃退出遞歸
intlow,hight,q;
low=beg;
hight=end;
q=p[low];〃q為支點(diǎn),其實(shí)q可以為隨機(jī)數(shù)。但相應(yīng)以下程序就要改了
while(l){
while(low<hight&&p[hight]>q)hight-;
if(low>=hight)break;
p[low++]=p[hight];
while(low<hight&&p[low]<q)low++;
p[hight++]=p[low];
}
p[low]=q;
Qsort(p,beg,low-1);
Qsortfpjow+l^nd);
}
intmain()
(
inti,a[]={lz32,6,4,54,654,6,6,2,76,76,7,66,5,544,334,34,78};
Qsort(a,0,sizeof(a)/4-l);
for(i=0;i<sizeof(a)/4;i++)printf("%d",a[i]);
system(,,pause");
return0;
)
算法實(shí)現(xiàn)題
2-2眾數(shù)問題
分析與解答:算法具體實(shí)現(xiàn)如下:
Voidmode(intl,intr)
{intllzrl;
Intmed=median(aj,r);
lf(largest<rl-ll+l)
Largest=rl-ll+l,element=med;
lf(largest<ll-l)
mode(IJl-l);
lf(largest<r-rl)
mode(rl+l,r);
)
其中,median用于找中位數(shù),split用中位數(shù)將數(shù)組分割為2段。
習(xí)題三
算法分析題
3-5二維0-1背包問題
分析與解答:問題的形式化描述是:給定c>0,d>0.wi>0,bi>0,vi>0,l<=i<=n,
要求找出n7C0-1向量(xl,x2,......,xn),xi屬于{0.1},1<=I<=n,使得fwixi<=c,
i=l
Z〃漢而且2心,達(dá)到最大。
z=li=l
因此,二維0-1背包問題也是一個特殊的整數(shù)規(guī)劃問題。
Max^vm
i=l
ZWZXZ<=c
/=1
(>bixi<=d
i=\
xi屬于{0.1},1<=i<=n
I
容易證明該問題具有最優(yōu)子結(jié)構(gòu)性質(zhì)
設(shè)所給二維0.1背包問題的子問題
MaxZ心/
/=/
ZmX/<=j
t=i
xt屬于{0.1},1<=t<=n
I
的最優(yōu)質(zhì)為m(l,j,k),即m(ljk)背包容量為j溶積為k,可選擇物品為IJ+1,…,n
時二維0-1背包問題的最優(yōu)值。由二維0-1背包問題的最優(yōu)子結(jié)構(gòu)性質(zhì),可以建
立計(jì)算m(l,j,k)的遞歸式如下:
“Max{m(i+Lj),m(i+ljwi,k-bi)+vi}j>=wiandk>=bi
m(ijk)二y
Im(i+l,j)0<=j<wior0<=k<bi
"vnj>=wnandk>=bn
m(nj,k)-
100<=j<wnor0<=k<bn
按此遞歸式計(jì)算出的m(n,c,d)為最優(yōu)值。算法所需的計(jì)算時間為O(ncd).
算法實(shí)現(xiàn)題
3-2最少硬幣問題
分析與解答:對于這個硬幣問題,我們每次都是取硬幣,或者不取硬幣。
因此我們可以將這個硬幣問題切割成若干個子問題(取不取這種硬幣),而且每
次決策都會用到這個子問題。而且所有的子問題中必定存在最優(yōu)解。每次取硬幣,
都僅僅是做出決策,判斷是否取這三種硬幣,每次決策之后,除了n塊錢會改變
之外,其他都沒有改變,都是判斷是否取這三種硬幣的一種,因此可以說硬幣問
題無后效性。
#include<iostream>
usingnamespacestd;
intfind_dest(intmoney,int*coin,intn)
{int*minCoin=newint[money+1]();
int*valueCoin=newint[money+1]();
memset(minCoin,0,sizeof(int)*(money+1));
memset(valueCoin,0,sizeof(int)*(money+1));
for(inti=1;i<=money;i++)
{intmaxCoin=i;
intvalue=0;
for(intj=0;j<n;j++)
{if(i>=coinfj])
{if(minCoin[i-coin[j]]+1<=maxCoin&&(i==coin[j]||valueCoin[i-coin[j]]!=0)/*
檢測上一個是否有效,無效則跳過*/)
(
maxCoin=minCoin[i-coin[j]]+1;
value=coin[j];
})
minCoin[i]=maxCoin;
valueCoin[i]=value;
}
if(valueCoin[money]!=0)
(
while(money)
(
cout?valueCoin[money]?
money-=valueCoin[money];}
cout?endl;
}
else
(
cout?"error!"?endl;
}
delete[]minCoin;
deletef]valueCoin;
return0;}
intmain()
(
intmoney=9;
intcoin[3]={2,3,5};
find_dest(money,coin,3);
system("pause");
return0;
}
習(xí)題4
算法實(shí)現(xiàn)題
4-6最優(yōu)服務(wù)次序問題
分析與解答:貪心策略:最短服務(wù)時間優(yōu)先。
doublegreedy(vector<int>x)
{intn=x.size();
Sort(x.begin(),x.end());
For(inti=l;i<n;i++)
x[i]+=x[i-l];
doublet=0;
For(i=l;i<n;i++)
t+=x[i];
t/=n;
returnt;
)
4-7多次最優(yōu)服務(wù)次序問題
分析與解答:貪心策略:最短服務(wù)時間優(yōu)先。
Doublegreedy(vector<int>x,ints)
{vector<int>st(s+l,O);
vector<int>su(s+l,0);
intn=x.size();
sort(x.begin(),x.end());
inti=0,j=0;
while(i<n){
st[j]+=x[i];
su[j]+=st[j];
i++;j++;
if(j==s)
j=0;}
doublet=0;
for(i=0;i<s;i++)t+=su[i];
t/=n
returnt;}
習(xí)題五
算法分析題
5-4最大團(tuán)問題的迭代回溯法
分析與解答:與教材中裝載問題的迭代回溯法相似,最大團(tuán)問題的迭代回
溯法描述如下:
voidclique::iterclique()
{for(inti=0;i<=n;i++)x[i]=0;
i=l;
while(true){
while(i<=n&&ok(i)){x[i++]=l;cn++;}
if(i>=n){
for(intj=l;j<=n;j++)bestx[j]=x[j];
bestn=cn;
}
Elsex[i++]=0;
While(cn+n-i<=bestn){
i-;
while(i&&!x[i])i-;
if(i==0)return;
x[i++]=0;cn-;
}
)
}
其中,OK用于判斷當(dāng)前頂點(diǎn)是否可加入當(dāng)前團(tuán)。
boolClique::ok(inti)
{for(intj=l;j<l;j++)
lf(x[j]&&a[i][j]==NoEdge)returnfalse;
Returntrue;}
依「Clique用于初始化,并調(diào)用迭代回溯法求解。
IntClique::lterClique(intv[])
{x=newint[n+l];
cn=0;
bestn=O;
bestx=v;
lterClique();
delete[]x;
returnbetn;
)
算法實(shí)現(xiàn)題
5-4運(yùn)動員最佳配對問題
分析與解答:磁體的解空間顯然是一顆排列數(shù),可以套用搜索排列數(shù)的回溯法框
架。
voidpref::Comppute(void)
{for(inti=l,temp=O;i<=n;i++)
Temp+=p[i][r[i]]*q[r[i]][i];
lf(temp>best){
Best=temp;
For(inti=l;i<=n;i++)bestr[i]=r[i];
)
}
習(xí)題六
算法分析題
6-9解旅行售貨員問題的分支限界法中保存已產(chǎn)生的排列樹。
分析與解答:排列樹中結(jié)點(diǎn)類型定義為:
classbbnode{
public:
bbnode*parent;
ints,*x;
);
保存已產(chǎn)生的排列樹的旅行售貨員問題的分支限界法如下。
template<classtype>
classTraveling(
friendintmain();
public:
typeBBTSP(intv[]);
private:
intn;
type**a,NoEdge,cc,bestc;
);
Template<classtype>
ClassMinHeapNode{
Friendtraveling<type>;
Public:
Operatortype()const{returnIcost;}
Private:
TypeIcostccjcost;
Bbnode*ptr;};
Template<classtype>
Typetraveling<type>::BBTSP(intv[])
{〃解旅行售貨員問題的優(yōu)先隊(duì)列式分支限界法
、、定義最小堆得容量為100000
MinHeap<MinHeapNode<Type?H(100000);
Type*MinOut=newType[n+1];
〃計(jì)算MinOut[i]二頂點(diǎn)i的最小出邊費(fèi)用
TypeMinSum=0;
For(inti=l;i<=n;i++)
{typeMin=NoEdge;
For(intj=l;j<=n;j++)
lf(a[i]U]!=NoEdge&&(a[i][j]<Min||Min==NoEdge))
Min=a[i][j];
lf(Min==NoEdge)returnNoEdge;
MinOut[i]=Min;
MinSum+=Min;
)
〃初始化
MinHeapNode<Type>E;
bbnode*bb=newbbnode;
bb->parent=O;
bb->x=newint[n];
bb->s=0;
for(intj=O;j<n;j++)bb->x[j]=j+l;
E.ptr=bb;=0;E.rcost=MinSum;
Typebestc=NoEdge;
〃搜索排列空間樹
While(E.ptr->s<n-l){
lf(E.ptr->s==n-2){
lf(a[E.ptr->x[n-2]][E.ptr->x[n-l]]!=NoEdge&&a[E.ptr->x[n-l]][l]!=NoEdge&&{
+a.[E.ptr->x[n-2]][E.ptr->x[n-l]]+a[E.ptr->x[n-l]][l]<bestc||bestc==NoEdge)){
Bestc=+a.[E.ptr->x[n-2]][E.ptr->x[n-l]]+a[E.ptr->x[n-l]][l];
=bestc;
E.lcost=bestc;
E.ptr->s++;
H.lnsert(E);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 打造安全社區(qū)的基本原則計(jì)劃
- 足球訓(xùn)練科技的發(fā)展與團(tuán)隊(duì)配合、個人技巧的進(jìn)步
- 跨文化背景下的節(jié)日慶祝習(xí)慣比較研究
- 零售業(yè)資產(chǎn)證券化的策略與實(shí)踐
- 跨區(qū)域醫(yī)療資源分配與醫(yī)養(yǎng)服務(wù)網(wǎng)絡(luò)構(gòu)建
- 質(zhì)量提升關(guān)鍵點(diǎn)之一-對標(biāo)行業(yè)標(biāo)桿的血檢儀器如精準(zhǔn)度保持措施詳解
- 廣西2025年01月廣西壯族自治區(qū)衛(wèi)生健康對外交流合作中心2025年招考工作人員筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025年安徽淮海實(shí)業(yè)發(fā)展集團(tuán)有限公司校園招聘筆試參考題庫附帶答案詳解
- 跨文化背景下電商平臺的發(fā)展策略
- 四年級數(shù)學(xué)下冊折線統(tǒng)計(jì)圖教案蘇教版
- 機(jī)械設(shè)計(jì)基礎(chǔ)網(wǎng)考題庫答案 吉林大學(xué)
- 建筑垃圾回收利用統(tǒng)計(jì)臺賬
- 《不一樣的你我他》(完美)課件
- 新蘇教版科學(xué)六年級下冊全冊教案(含反思)
- 原油電脫鹽電脫水技術(shù)
- 國考斷面水站建設(shè)及運(yùn)維技術(shù)要求參考
- Q∕GDW 10799.7-2020 國家電網(wǎng)有限公司電力安全工作規(guī)程 第7部分:調(diào)相機(jī)部分
- 熱工學(xué)后題答案
- 不吸煙不喝酒課件
- 奧數(shù)知識點(diǎn) 間隔問題
- 簡易旋轉(zhuǎn)倒立擺及控制裝置
評論
0/150
提交評論