第一次作业.docx
- 文档编号:10252614
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:12
- 大小:152.86KB
第一次作业.docx
《第一次作业.docx》由会员分享,可在线阅读,更多相关《第一次作业.docx(12页珍藏版)》请在冰豆网上搜索。
第一次作业
1StableMatching
Decidewhetheryouthinkthefollowingstatementistrueorfalse.Ifitistrue,giveashortexplanation.Ifitisfalse,giveacounterexample.
Trueorfalse?
ConsideraninstanceoftheStableMatchingProbleminwhichthereexitsamanmandawomanwsuchthatmisrankedfirstonthepreferencelistofwandwisrankedfirstonthepreferencelistofm.ThenineverystablematchingSforthisinstance,thepair(m,w)belongstoS.
Answer:
NowweassumethatineverystablematchingSforthisinstance,thepair(m,w)doesnotbelongtoS.Inotherword,inthisinstance,theremustbetwopairs,wecansaythesetwopairsare(m,w’)and(m’,w).Nowwecanfindthisisnotstablebecauseinthiscase,themanmwouldlikeanotherwoman(w)butnotthecurrentwoman(w’),alsothewomanwwouldlikethismanm,too.Sothemanmandthewomanwwillbeapair,thiscanbestable.Sointhiscasethereisanotstablepair,thiscanhavecontradictionbecauseineverystablematchingSallpairsarestable.Soourassumeiswrong.ThatmeansineverystablematchingSforthisinstance,thepair(m,w)belongstoS.
2StableMatching
IntheGale-ShapleyalgorithmoftheStableMatchingProblem,anunmarriedmanproposestohishighest-rankedwomantowhomhehasnotyetproposed,womanneverproposestoman,andthealgorithmyieldsthestablematchingS_.Now,supposeanunmarriedwomanproposestoherhighest-rankedmantowhomshehasnotyetproposed,manneverproposestowoman,andthealgorithmyieldsthestablematchingS_’.
Trueorfalse?
ForeveryinstanceoftheStableMatchingProblem,S_=S_’.
Writeaprogramtoimplementtheabovetwoalgorithmsinyourfavoritelanguage,andgiveyouranswerbased-onyourimplementation.
Answer:
First,theresomeinstanceoftheStableMatchingProblem,S_=S_’,thefollowingexampleisthecountexample:
Nowweusethewaywhichmanproposestowoman(S_),wewillgettheresultforthefollowinggraph:
Xavier----------------Amy
Yancey---------------Bertha
Zeus-------------------Clare
Butweusetheotherwaywhichwomanproposestoman(S_’),wewillgetanotherresultforthefollowinggraph:
Xavier----------------Bertha
Yancey---------------Amy
Zeus-------------------Clare
Last,wecanwriteaprogramsuchas:
S_algorithm(manproposestowoman):
#include
usingnamespacestd;
intm_pre_list[10][10];
intw_pre_list[10][10];
intm_next[10];
intcurrent[10];
intranking[10][10];
intN;//thenumberofmanorwoman
typedefstructFreeMan{
intnumber;
FreeMan*next;
}FreeMan;
FreeMan*freeman_list;
intmain()
{
cout<<"pleaseinputtheNumbermanorwoman"< cin>>N; cout<<"pleaseinputtheman'spreferencelist: "< for(inti=1;i<=N;i++) { for(intj=1;j<=N;j++) { cin>>m_pre_list[i][j]; } } cout<<"pleaseinputthewoman'spreferencelist: "< for(inti=1;i<=N;i++) { for(intj=1;j<=N;j++) { cin>>w_pre_list[i][j]; } } //createann*narrayRanking,whereRanking[w,m]containstherankofmanminthesortedorderofw'spreferences for(inti=1;i<=N;i++) { for(intj=1;j<=N;j++) { ranking[i][w_pre_list[i][j]]=j; } } freeman_list=(FreeMan*)malloc(sizeof(FreeMan)); freeman_list->next=NULL; //initialthefreeman,atfirstthislistcontainallmanandwhileinitialm_nextarray,thisarraycontainsthei'thmancurrentengagedwoman'sindex, //alsoinitialthecurrentarray,thisarraycontainsthei'thwomanisengagedtoonemanifsheisengaged,otherwisethisbe0 for(inti=N;i>=1;i--) { FreeMan*new_freeman=(FreeMan*)malloc(sizeof(FreeMan)); new_freeman->number=i; new_freeman->next=freeman_list->next; freeman_list->next=new_freeman; m_next[i]=1; current[i]=0; } while(freeman_list->next! =NULL&&m_next[freeman_list->next->number]<=N) { FreeMan*current_man=freeman_list->next; intengage_woman=m_pre_list[current_man->number][m_next[current_man->number]]; m_next[current_man->number]++; //ifthiswomanisfree if(current[engage_woman]==0) { current[engage_woman]=current_man->number; freeman_list->next=current_man->next; free(current_man); } //ifthiswomanisengaged else { //ifthiswomanprefersmtom' if(ranking[engage_woman][current[engage_woman]]>ranking[engage_woman][current_man->number]) { FreeMan*new_freeman=(FreeMan*)malloc(sizeof(FreeMan)); new_freeman->number=current[engage_woman]; new_freeman->next=current_man->next; freeman_list->next=new_freeman; current[engage_woman]=current_man->number; free(current_man); } } } for(inti=1;i<=N;i++) { cout< } return0; } S_’algorithm(womanproposestoman): #include usingnamespacestd; intm_pre_list[10][10]; intw_pre_list[10][10]; intw_next[10]; intcurrent[10]; intranking[10][10]; intN;//thenumberofmanorwoman typedefstructFreeWoman{ intnumber; FreeWoman*next; }FreeWoman; FreeWoman*freewoman_list; intmain() { cout<<"pleaseinputtheNumbermanorwoman"< cin>>N; cout<<"pleaseinputtheman'spreferencelist: "< for(inti=1;i<=N;i++) { for(intj=1;j<=N;j++) { cin>>m_pre_list[i][j]; } } cout<<"pleaseinputthewoman'spreferencelist: "< for(inti=1;i<=N;i++) { for(intj=1;j<=N;j++) { cin>>w_pre_list[i][j]; } } //createann*narrayRanking,whereRanking[w,m]containstherankofwomanwinthesortedorderofm'spreferences for(inti=1;i<=N;i++) { for(intj=1;j<=N;j++) { ranking[i][m_pre_list[i][j]]=j; } } freewoman_list=(FreeWoman*)malloc(sizeof(FreeWoman)); freewoman_list->next=NULL; //initialthefreewoman,atfirstthislistcontainallwomanandwhileinitialw_nextarray,thisarraycontainsthei'thwomancurrentengagedman'sindex, //alsoinitialthecurrentarray,thisarraycontainsthei'thmanisengagedtoonewomanifheisengaged,otherwisethisbe0 for(inti=N;i>=1;i--) { FreeWoman*new_freewoman=(FreeWoman*)malloc(sizeof(FreeWoman)); new_freewoman->number=i; new_freewoman->next=freewoman_list->next; freewoman_list->next=new_freewoman; w_next[i]=1; current[i]=0; } while(freewoman_list->next! =NULL&&w_next[freewoman_list->next->number]<=N) { FreeWoman*current_woman=freewoman_list->next; intengage_man=w_pre_list[current_woman->number][w_next[current_woman->number]]; w_next[current_woman->number]++; //ifthismanisfree if(current[engage_man]==0) { current[engage_man]=current_woman->number; freewoman_list->next=current_woman->next; free(current_woman); } //ifthismanisengaged else { //ifthismanpreferswtow' if(ranking[engage_man][current[engage_man]]>ranking[engage_man][current_woman->number]) { FreeWoman*new_freewoman=(FreeWoman*)malloc(sizeof(FreeWoman)); new_freewoman->number=current[engage_man]; new_freewoman->next=current_woman->next; freewoman_list->next=new_freewoman; current[engage_man]=current_woman->number; free(current_woman); } } } for(inti=1;i<=N;i++) { cout< } return0; } 3ComplexityAnalysis Asequenceofnoperationsisperformedonadatastructure.Theithoperationcostsiifiisanexactpowerof2,and1otherwise.Useapotentialmethodtodeterminetheamortizedcostperoperation. Answer: Wecanmodelthisnoperationsforinserttable.Initially,weonlyhaveonesizeandinsertthetable.Whenweinsertthesecondvalue.Wewilldoublesizeofthetable.SoTheithoperationcostsiifiisanexactpowerof2,and1otherwise.Thisamortizedcostperoperationwillbe3(1paysfortheimmediateinsertionand2isstoredforlatertabledoubling).Ok,thesequenceofnoperationsisperformedonadatastructureisO(3n); 4ComplexityAnalysis Instockmarket,HH-index(historicallyhighest)ofthecurrentpriceiskmeansthatcurrentpriceisthehighestpriceinthepreviouskdays,butnotthehighestoneinthepreviousk+1days. Forexample,thepricechangesasshowninthefollowingfigure. ThepriceinDay5isthehighestinDays5,4,3,2,butnothighestoneinDays5,4,3,2,1,thusHH(5)=4; ThepriceinDay4isthehighestinDays4,3,2,butnothighestoneinDays4,3,2,1,thusHH(4)=3; ThepriceinDay3isthehighestinDay3,butnothighestoneinDays3,2,thusHH(3)=1; Theinputinthisexampleis8,4,3,5,6,2,theansweris1,1,1,3,4,1. Giventhepricesofndays,pleasegiveanalgorithmofO(n)timecomplexitytocalculatetheHH-indexofalldays. Answer: WecanhaveonearrayQwhichwecanusestackinalgorithm. Thedescriptionofthealgorithm: First,wecanhavethefirstday,HH (1)=1,alsowecanhaveallthedayHH(i)=1(fori=1toN)(becausethedayitselfisinthevalue).Now,wewilluseoneiteratorfor2toN,whenwehavei’thday,anditsvalueisv(i),thenwepopallthedayswhich‘svaluev(j)<=v(i)inthisstackandletHH(i)=HH(i)+HH(j);Lastweiteratorthelastday,wehaveallthedays‘HHvalue. Algorithm: InitialHH(i)=1;(i=1toN) InitialstackQ[0]=1,top=1; Initialdata[i]=v[i];(i=1toN,initialthevaluesofallthedays) fori=2toN while(top>0&&data[Q[top-1]]<=data[i]) HH[i]=HH[i]+HH[Q[--top]]; end Q[top++]=i; end Nowletusprovethisalgorithmisright: FirstHH[1]=1isright,thenwecanletthestack’snumber’svalue(v[i])isdescending.(Becausewhenwevisitthei’thday,wecomparethedaysinthestackinascendingorder,wepopallthedayswhich‘svalueisnotbiggerthanit.Alsoweputthisdayinthestack,andwecanseethispoint,thestack‘sdays‘svalueisdescending).Andwhenwe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第一次 作业