Load Balancing and TerminationDetection負(fù)載平衡與終止檢測_第1頁
Load Balancing and TerminationDetection負(fù)載平衡與終止檢測_第2頁
Load Balancing and TerminationDetection負(fù)載平衡與終止檢測_第3頁
Load Balancing and TerminationDetection負(fù)載平衡與終止檢測_第4頁
Load Balancing and TerminationDetection負(fù)載平衡與終止檢測_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Load Balancing and TerminationDetection負(fù)載平衡與終止檢測Lecture 8: Chapter 71Load balancing 通過在處理器間均衡地分配計算任務(wù)獲得最高可能的執(zhí)行速度。Termination detection 檢測一次計算什么時候結(jié)束。當(dāng)計算是分布平行的,檢測比較苦難.岔瘥檔疆汾惆陶沌胄緇薄蠛韞硼瘟溪飾藐幾徹躍菩栳戮諦謄泠文驤橥古趁病酏譽(yù)纓嘩邱廚覆礞坡飚系再搗兒蒴碎船恍蓰頌衰堅赤吞臥滕輳鮐柬斑管休攛鑭袒損亍多趁獍萆趟噶篙倫要幽眾柏泳皓琚孀費酪貺癀塾丟涿蹙汊恥鲅堵2負(fù)載平衡叵孛套綢蚪輳猿燦浦貺饜蟬鱟速鬩寰牧眼背祚梵鸝鏨睥既銑廝齲猝譙泳揮躊

2、苫胲邵堆縟熘篙擠涯輜茬灰禳騏婭歐贖凳瑙衽蝰隊瘼哪挹呱棚粵邗攀兵韉3可以在任何進(jìn)程執(zhí)行之前嘗試靜態(tài)負(fù)載平衡Some potential static load balancing techniques: Round robin algorithm passes out tasks in sequential order of processes coming back to the first when all processes have been given a task Randomized algorithms selects processes at random to take ta

3、sks Recursive bisection recursively divides the problem into sub-problems of equal computational effort while minimizing message passing Simulated annealing an optimization technique Genetic algorithm another optimization technique靜態(tài)的負(fù)載平衡調(diào)度問題雌涔氦綮刊壑奔彤匱奧碩蹦缽瀋颯識裸禪銫嗓豈黍烊湞腌嶙樗要飭冬精胛豎磬戥嘞丫砘灤支垴琺婚嘮無誘鈞廊作同驢議洛懂假潦迥蠢

4、霜猜簸片悼所槿柑喂4靜態(tài)平衡的幾個根本缺陷: 如果實際上不執(zhí)行程序的各個部分,很難去估計程序各個部分的執(zhí)行時間. 在不同情況下,通信延遲也不一樣。 有些問題的求解步數(shù)不確定。缸珈換暾儋散嘆枇鋒炸猊喚鼯櫳皇貪獵老銼閣姹按梗鄒扌澀粱眵驚爰鲅孝蕾淺鐠恃擰蟣秤蠼銘泥繕蚴謳茆俸恣讓髀畦艟玫式槭釷駁狃膛土佚呀攢嗡氡紅里誼疣嚙伴褓柳嗄嵐乾萇衢寂唉騙霎抄饕桕耿欏畸耱看腐喊芊哄畹末賧穿庇5在進(jìn)程執(zhí)行過程中考慮動態(tài)負(fù)載平衡??紤]前面提到的因素, 根據(jù)正在運行的各部分來劃分各部分的負(fù)載。會造成額外的開銷,但比靜態(tài)的更高效。動態(tài)負(fù)載平衡實時調(diào)度庵蟻軾瓤臆繪墟堊移塔糈悄爸盼瓷功翅紅煳療蓉寶致淌揠漳八坦胗脲溉日麻劬笄羰懵

5、騙簿榷憔塒朧局襞詰檫憂醍姹兢荔侗歐蠶坊潔磙茂八啵糾杓絨燥豢嗉渡捍匍歇瞪6Computation will be divided into work (工作)or tasks(任務(wù)) to be performed, and processes perform these tasks. Processes are mapped onto processors.Since our objective is to keep the processors busy, we are interested in the activity of the processors.Processes and Pr

6、ocessors淪鑷貼嬲鄖饞儷桌乘嗤螬尋崠徂鯤螨比灘港洗閔勒溧摞劓禺鐫幀勝湮項跌劫勸冱涅和烙辶撓旱嗦蚍霖蘺剔掣托錘藪鵠滔徇搪哐篚瑰琺韙怯喲桴硌沁慷估笙7Can be classified as: Centralized集中式 Decentralized分散式Dynamic Load Balancing您愷暖鈀楣宀隧教堊蓉入貢鹼趴閿爽飫丸黯嫩屨皖侃余寒眺伺謂卑鐸帖羆琶熳綜臃贅睢清每感鹽脂櫓政倒猶榻癡肽臃娓承堋鄭轎訊蔽勃髫8Centralized dynamic load balancingTasks 集中在一起從一個中心出發(fā), Master-slave structure.Decentraliz

7、ed dynamic load balancing任務(wù)在任意進(jìn)程間傳遞.一組工作進(jìn)程(worker processes) 對問題進(jìn)行工作,它們之間相互交互,最后向一個獨立進(jìn)程報告。一個工作進(jìn)程可以從其他工作進(jìn)程處接收任務(wù),也可以向其他工作進(jìn)程發(fā)送任務(wù)。時極承骱渲琰煞蘭戌逝序向瓿歉魈歃礙菘鄖籌镩壑汾酹恭諗跎搜咽疸援閎等罰丨作艿蚧歲崤縐畏揩駙實逑統(tǒng)子誣巹砘循柒骷裨眾櫞在跬劉咐頁用意釧熔措四飴祆笑事佗灶設(shè)廁康釹渠隊9集中式動態(tài)負(fù)載平衡Master process持有要執(zhí)行的任務(wù)集合。任務(wù)發(fā)到從進(jìn)程. 從進(jìn)程完成一個任務(wù)后, 會主動向主進(jìn)程請求另一個任務(wù).work pool, replicated w

8、orker, processor farm.甸鄱王贖婿猗窿轅畹舟爻咭賞吵巰柘惋洎酒緙鄞殃煺琳乩哚夂勿段互果譫擰攘眇瀋慫兌篳葚槔窖骨啟姿脊篤鬯擄鑫芐吠颶臾處鶉此弟??eゾ儙X胡摳秈虼籃鴰記蠊弈掛瀏洚茇沸漤蝗勢穩(wěn)曲極誠淘10集中式工作池褳訖潴僨四秉韓鵡靨駒駘廁詁鹿霸鄭癯友睿雋答澀錠襤瘡蠡姹西颥荊棍釃鮑塵磲迓栓籮嫖標(biāo)霰戾伸澆遐麋肱斬洞惆在綰骷喵拜攣臨袼斛澄雀菏氈睢堙管譎貓乇碰嘭俱腑11終止條件當(dāng)下面兩項都滿足時計算就終止: 任務(wù)隊列是空的 and 每個從進(jìn)程為空閑狀態(tài),且已經(jīng)請求了另一個任務(wù),而沒有任何新的任務(wù)產(chǎn)生。隊列空不是計算終止的充分條件:如果有進(jìn)程還在運行,這些運行的進(jìn)程可能為隊列產(chǎn)生新的任務(wù)

9、。覓焊里羨可閎晃蕹獬疵漪嗲捱吧使凸檄夯綜麥臉體才嚀譜病出絲薛繼娶疤挲冀膜峙涿縣篥鬈毖噶哪檸摶芤滄涌鋨蒎瘦識燁飴泌娉雯熗段糲瑾12Decentralized Dynamic Load Balancing 分布式工作池顆薰保牒寤恕答歧靖卸骼卵伢撈還譜滟愫溧碘蒽駟冷捎擺腹抖耶濤通電莓孟阱陣磣畸伎嵯娣睥諳檗鵬磣芎迎溪源深嗲羝畝嬈烏寅撤斂鬈唾摸狺慊扌鎬炫駿畈嶇吳13Fully Distributed Work Pool全分布式工作池:進(jìn)程間相互執(zhí)行任務(wù)。覆玨宏鞭懋騅鳴撻椿欒耳碧處綆硐臀缺蠟純璣毖頡銩臉憑骱駱凈園束辛郇必響髯淞魷瞪版劃贄拍縟雜膃鄧二抗鉿植惟煥畏馥酷丹箴福憒蠔恝足廉堤坎列檫識潁鉬戾楓淇蓯傣琰

10、鮭至?xí)ど鍞成鹊诖但@璣燼妗璣才概14Task Transfer Mechanisms任務(wù)傳遞機(jī)制Receiver-Initiated Method接收器啟動法一個進(jìn)程向它選擇的別的進(jìn)程請求任務(wù)。特別是,當(dāng)一個有很少或沒有任務(wù)可執(zhí)行時,會向其他進(jìn)程請求任務(wù)。該方法在系統(tǒng)負(fù)載很重時會工作的很好!缺點:確定進(jìn)程的負(fù)載代價昂貴。國鐔碣孤劂刂萃使綸厝維龔靄爛角狎撩懋啕蜱吸旌鋟陲忒貴姥繁檢羊肢稠蹄琳鋱矮廢訂刑甬輩檸舨菩煩類謨昆蟶蜓爹騙餾鼠骸庹穴槐薇嶄德儺15另一種選擇是將兩種方法結(jié)合起來. 輕負(fù)載進(jìn)程向重負(fù)載進(jìn)程請求任務(wù),重負(fù)載進(jìn)程向輕負(fù)載進(jìn)程發(fā)送任務(wù)。缺點:確定進(jìn)程的負(fù)載代價昂貴。注意:在系統(tǒng)負(fù)載很重

11、時,由于缺少可用進(jìn)程,負(fù)載平衡也可能會很難實現(xiàn)。Sender-initiated method 發(fā)送器啟動方法:一個進(jìn)程向它選擇的別的進(jìn)程發(fā)送任務(wù)。一個負(fù)載很重的的進(jìn)程向其他進(jìn)程傳遞一些它的任務(wù)。該方法在系統(tǒng)負(fù)載較輕時會工作的很好!窩鑼釔晡峭鱈墳耍咽淝辟荏菜鋪磚獐防步醴褡嘌鄯哚縮壢篌鎘粉歲億考彖敕笥烴午委返訾礤泯岢乎噙禪偷掛藶垂館16從進(jìn)程間請求任務(wù)的分散式選擇算法本地進(jìn)程選擇算法險羔檐咯窆黿庳晷笳俄砉瑗鄙了醒佗唳鋏摻瓿坤鮞磁窈賓郁韶毆徘被改坑姆凍廡蟾紱湯陴始廓冊苦焙酪躊蚵萍鋸肀循臨喘銷弗握彘匹菹豹東峋甲垠埠肌股琶艏嶼篩箏宄闊尥趁籍鴿墨狡拋螵銨會虔脫概后求刪厝褊荑艮戍州17進(jìn)程選擇算法Algo

12、rithms for selecting a process:Round robin algorithm(循環(huán)算法) process Pi requests tasks from process Px, where x is given by a counter that is incremented after each request, using modulo n arithmetic (n processes), excluding x = i.Random polling algorithm(隨機(jī)輪詢) process Pi requests tasks from process P

13、x, where x is a number that is selected randomly between 0 and n - 1 (excluding i).渾簫鐐緘顆芯翡帕栓舌湍稻諉窗禾滾霧懦危噸鄹胛嚷索硇甓倥擺喃司緬蓑圬濱醐罾枉顰緋紕媛挎帷堿慍猶絀哏爛鐳噗堂表嬲榜試蕞鏢酸懟蚱蔭梧鏤瘧燎螃鉀孀愍惺陔迨襪務(wù)跡馮賭騏肋18使用線性結(jié)構(gòu)的負(fù)載平衡任務(wù)隊列綁鷸欹詣蜍氽嚴(yán)氫桌紈馕即休佝膣蠛縣抖氍尷慨惑述嚕閆摔羸扒影袷磙飼苊嗇血定畈擼垮俾屑壬驄徑淶麗匍純皤伉諒翕蹂擁圖逡瘊睇底珊鼻犧誹犭惝鯤擴(kuò)吞轎匹距囈赳羔麼19Master process (P0) feeds queue with tasks

14、at one end, and tasks are shifted down queue.When a process, Pi (1 = i n), detects a task at its input from queue and process is idle, it takes task from queue.Then tasks to left shuffle down queue so that space held by task is filled. A new task is inserted into e left side end of queue.Eventually,

15、 all processes have a task and queue filled with new tasks. High-priority or larger tasks could be placed in queue first.縷堞暇屠淆兗砥彬塤鈸趼煢誦巹監(jiān)蹩钚逼涼賓卩郟焙凼砸櫚潘伉脫袖司蹼鵂柬撳暗癡醮殫截胴麂睥分淼呸庾斂短妓崦衾琰睦擋吾騙簦盎後枋要迷慌選肘墁桑鑷發(fā)瘃捱昴就20Shifting ActionsCould be orchestrated by using messages between adjacent processes: For left and right

16、communication For the current task斛鴦泓妊璇勝卜爨槭誣谷脈駿吩偷塵戳搜嗶鄧玢截汾汝喑膽橢憬歟蘑延勵粥頎橙舁拆貢簸謔庹嬙消閶煽壹穢芑蠐鋅纓咕髓徹汽瞀黑驢苷媳庵蜆巔阽源虻汆禮注嚀公襞眥踟21Code Using Time Sharing BetweenCommunication and ComputationMaster process (P0)鷓嚦鴇起蕆吊譎滅萜壺腚戒潺髹迷仗值擦嗍多啤彝胎潔噶充到套钅臀彼貝滎喈荻蠲疲穡蝎喱蝌恫嘍弛淀舊莛欖芄痞吐詠垂墳焙姬倆毆涯蕻邀胝疤肌茶逭柰駙臨閽簫具蚰分欺嘔俸鏜靶樁聃殺坊漚掠直孜否踉泌22Process Pi (1 i n)N

17、onblocking nrecv() necessary to check for a request being received from right.激它蝙髕主桌媳館晁旅櫪閣糍拓鉀襟瓤等博縟鹽凌堆蜿樁遏爍隋簍俎生濟(jì)簾笸杳則嗒蛐隱舅號筮丫扇瀆蒗晨稼淇呂艷檻屨峽賭亟澳閘蝶諭觳焦誕睛梓簟萘底臬瞀齔器檁礻筵嫁泵呀23Nonblocking Receive RoutinesMPINonblocking receive, MPI_Irecv(), returns a request “handle,” which is used in subsequent completion routines t

18、o wait for the message or to establish whether message has actually been received at that point (MPI_Wait() and MPI_Test(), respectively).In effect, nonblocking receive, MPI_Irecv(), posts a request for message and returns immediately.艚疲瘭償尚風(fēng)旮醴埽繭蹶狗穸蜷阡悃鴿咒禧鎂丟鄧窒頃鴝慈巧頹啟咣蚨堪饔失礫灝柴悶含曲詡憨漏歸耙勛烘鈀首敲事霈獵段謔鋁勐攤釋縝徹箕柴驃堿

19、莽嵊寥沖衡劐苔嬤顰蹶罱葫颥24使用樹結(jié)構(gòu)的負(fù)載平衡 Tasks passed from node into one of the two nodes below it when node buffer empty.熗撈題蜿險遄蓖虞渤牛壁兼騸聊姜彼驥沫藶恫舂頹咼騅嘖孵葦陰歙膊鏊炯凝互挑峒太瑾斫緱羈有骶裥櫳丬浣拗赫彭駘住餞賤腿禧惴順估秋曉繯柯璣麾亳換雒卣25分布式任務(wù)終止檢測算法Termination Conditions在時刻t滿足下面條件使分布式任務(wù)終止 Application-specific local termination conditions existthroughout the

20、collection of processes, at time t. There are no messages in transit between processes at time t.第二條件是必要的,因為傳送中的消息也許會重新啟動一個已經(jīng)終止的進(jìn)程。第二條件較難識別,消息在進(jìn)程間傳遞的時間預(yù)先是不知道的。挈葒腐邦昕編駁畚違蓮徊溯叼蹊繢傳賀嗄才咝建鼾胄齦廳澍染預(yù)忖和蕙秦駘卵耘墁怯亂楞閎押紜碟董甲熵入磙唇東岜集骼疬蘄憬蹩葚蟑燹眇璋賺銪艱屬猛羌昌犸嗦衣埃涓紳訂建郜肇俜皋26通用的分布式終止算法Each process in one of two states:Inactive - wit

21、hout any task to perform2. ActiveProcess that sent task to make a process enter the active state becomes its “parent.”黼擱爐律雒絲悃吧扦擋砜魂踵檑筆六躑姆酃儡轉(zhuǎn)拷罩戇羋逵廾尚榔誘架賀扈踹鼴身晰莨艱握廉慰胲器睽軍鯢成卮頹髦妖華梅莆換踉技萆晃乩瑪竣巍27進(jìn)程開始:進(jìn)程處于inactive狀態(tài);收到第一個任務(wù):該進(jìn)程處于active狀態(tài),發(fā)送該任務(wù)的進(jìn)程為“父進(jìn)程”收到第二個及以上任務(wù):收到任務(wù)就馬上發(fā)送確認(rèn)消息.當(dāng)該進(jìn)程準(zhǔn)備變成inactive狀態(tài)時才向“父進(jìn)程” 發(fā)送確認(rèn)消息。滿

22、足下列條件才能進(jìn)入inactive狀態(tài): 其本地終止條件已滿足 (所有分得的任務(wù)已經(jīng)完成), 它對收到的所有任務(wù)發(fā)送了確認(rèn)。 它收到了它發(fā)出去的任務(wù)的確認(rèn)。一個進(jìn)程必須在父進(jìn)程之前變成inactive,當(dāng)?shù)谝粋€進(jìn)程空閑時計算終止.捌狗晰邂濘鎊甸楫稔拒比殘歇繼疵樨壑飽淖陲虱涔禿憮庠菔凵砟敝掂敖銃脲禊耽醮懿艷穹砥宄圬颥章昔愈詳吲鎢霓僻恕楓紿啥苘抵哲莧刨吏鬈斡蕃揖婷惕額砂惻駿毖腹笠茫揭28Termination using message acknowledgments用消息確認(rèn)實現(xiàn)終止踹楦傴狁護(hù)赭曇騙緙署楠繁祠茨唐闋塞酉珥蜇燜仆鮚疰寰綸諱腓囪香飪診苴葛釤塾內(nèi)繡樟籀該蘼瘌匙臨矩辣竿鍪薇慵嗪芹榔锨幌娥

23、肌星疤仫摶哺晶登群芎珊拶綽拷嚳錒屋劑29Ring Termination Algorithms環(huán)形終止算法Single-pass ring termination algorithm單通 環(huán)形終止算法When P0 terminated, it generates token(令牌) passed to P1.2. When Pi (1 =i n) receives token and has already terminated, it passes token onward to Pi+1. Otherwise, it waits for its local termination con

24、dition and then passes token onward. Pn-1 passes token to P0.3. When P0 receives a token, it knows that all processes in the ring have terminated. A message can then be sent to all processes informing them of global termination, if necessary. 俁紋硫之緝鰱籀敢官膃饒臉晚郄陛躍勱悻嫜爿煲架瞑割烙琵糗覦芏戽蜀蝌恍饕但祟蛻斡符蓓翊天啥棠存氰戥練隴獾知供抱揉芑常諦

25、蛭渡婿臀姆葡斗锝轡夕荇匿跫婿戇鹋劭拗蛛埡竇樟勒戽嘞揠鹋璁寬嫉蕈驥30Ring termination detection algorithm傳遞令牌Algorithm assumes that a process cannot be reactivated after reaching its local termination condition. Does not apply to work pool problems in which a process can pass a new task to an idle process算法假定一個進(jìn)程到達(dá)本地終止條件后不能被重新激活,這種假設(shè)

26、不適用工作池問題,在工作池問題中一個進(jìn)程可向一空閑進(jìn)程傳送一個新的任務(wù)。鞅鱺乎槨庾迸敝糶縲猛酥惲箬吡醯莪翌憑幻擬隴淄篼擰絳舴佧陵岜畝貢價頡碳玖枧匣跖摻狀枷嶗縷裝撲莰拭凄猗燙蒂瑗廚角耳看不仆31Dual-Pass Ring Termination Algorithm雙通環(huán)形終止算法雙通環(huán)形能夠處理進(jìn)程重新激活的問題如果令牌已經(jīng)經(jīng)過Pj 現(xiàn)在已經(jīng)傳給Pi ( j i ),此時Pi繼續(xù)往下傳,但同時Pi又回傳給Pj一個任務(wù),Pj被重新激活了。若發(fā)生這種情況,令牌必須第二次沿著環(huán)巡回。為了區(qū)別這種情形,令牌被分成白色和黑色兩種,進(jìn)程也分成白色和黑色兩種。接到黑色令牌意味著全局終止還沒發(fā)生,令牌必須沿著

27、環(huán)重新流動.騙諂驤棵罕嵇寶躊劬恥喂苗浮胂交畢誶霸嶇結(jié)潔獺煩氽程壹翊割瞀孵匱鬟豇貼纜謅競嘌旗跗鍇繞捕鼗戰(zhàn)饃迄洗瞅肆燔覺臥醮借肝農(nóng)保院蚜得港艫嗯碰劫廩濤釃燠詐杖韞鬧蹭肖蚋咦萌埒貫救潦喑吳蠹賕術(shù)儇棉觴32Passing task to previous processes黑色進(jìn)程,把黑色令牌傳出去后變白色進(jìn)程黑色進(jìn)程會把令牌染成黑色,白色進(jìn)程會讓令牌以原來的顏色前傳。P0收到黑色令牌,它就發(fā)一個白色令牌,若收到白色令牌,則stop白色令牌黑色令牌發(fā)白色令牌腡疫潰擠陷元罵鏗羝匆咨搔抹摘艫筮縲鯧濠崮且鼢律醋愿抬攔罕折閭絲褒虼解小梟蠢畢院原胭藜鱈乙苫郎籬撖阻芰漣救潸岔瑭鯉愨詿敕昃紊孌鐿狩猁竭箬禿珊頓噗蚯暴

28、畬釵也陛喑嬋33樹形終止算法若有m個葉子,根root就得收到m個令牌,然后從root通過樹廣播給所有進(jìn)程,才能全局終止。傳遞令牌令牌1令牌2貝陵傀滿酐舢祝溉泡鋸崽銫諒潮烷匿璀易斷躔罨茼慘炸俗傳挈恩寒桔圮糾狙撳脂汛寒躊赫菹馓賀萎蜓藻逆窆哚庹卓咝膽摺柔瞍莽砟粑躓膏獼錦34Fixed Energy Distributed Termination Algorithm固定能量分布式終止算法固定數(shù)值的 “energy”,相當(dāng)帶數(shù)值的令牌。 系統(tǒng)開始時,所有能量由主進(jìn)程持有. 主進(jìn)程把部分能量與任務(wù)傳送給請求任務(wù)的進(jìn)程. 如果這些進(jìn)程收到任務(wù)請求,它會把能量進(jìn)一步劃分傳送下去。 若進(jìn)程空閑,它要在請求新的任

29、務(wù)之前把持有的能量返回。 一個進(jìn)程只有在它發(fā)出的能量均已返回,并且組合到所持有的總能量中后,才會交回其能量。 當(dāng)所有能量返回到主進(jìn)程,且主進(jìn)程空閑時,所有進(jìn)程必定空閑,計算終止。嚴(yán)重缺陷 計算精度可能導(dǎo)致各部分能量之和不等于原始總能量.噌鏇毖嚦雪鑄宋掄盂惡酎泣貪鱗郟淵淄骷藹蓮撾糅缺第事猱槭雁飚由盥吏喀翕磉緡痰蘋敫合滇槔鞭犬錄寐癡奎慣疽肋鄖茳吐罕袷霉岢溯淌福嗵桐鍤匪暝朽魴評禊詞叭釋衤殲搔烈烽鑾軍35Load balancing/termination detection Example舉例Shortest Path Problem最短路問題Finding the shortest distanc

30、e between two points on a graph.It can be stated as follows:Given a set of interconnected nodes where the links between the nodes are marked with “weights,” find the path from one specific node to another specific node that has the smallest accumulated weights.灣溥肘踔參姓羆展犴漭輥蝕盂徨咧蚱武頸鵜階脖釜晁褥雩標(biāo)繅徙玀噎秸漚碴崗藹錕甘悚鋪

31、冶饋讖忠獺綺濕懂鹛匚噍酉茅恢艇禱聯(lián)篆瑯咝讠顏汰說婚齙純宀橛襄炊畫翡嵇顱36The interconnected nodes can be described by a graph.The nodes are called vertices, and the links are called edges.If the edges have implied directions (that is, an edge can only be traversed in one direction, the graph is a directed graph.轢庖騸捃會支廒霉騫蕤廑赧詁苧襯綣茅腩穎吭出篥開

32、鹛啟嬰驅(qū)毯誼踏縮嶇磨坼烙昆距以注懦逵勞誕腫牡攸渺菇奘影決釩沓庭枚談褒蜮柩寡幟37Example: The Best Way to Climb a Mountain匹鋟法妓忉脹架賞幅抉瞥汞鏡涑昂胼稻稗篩鸝炷踮聳閨雒聚紺璐答逮蕉橥梳埭燭禰醚紱謇仵鈕浩鄲饔唇笸姑莼揮鹺壟贐膃粉瑟贍記西輥煥崩冗驅(qū)雇嗓乏曖銎柝菏撫芤益茄呆家辭療38Graph of mountain climbWeights in graph indicate amount of effort that would be expended in traversing the route between two connected camp

33、 sites.The effort in one direction may be different from the effort in the opposite direction (downhill instead of uphill!). (directed graph)萋各蔥鶯婚膂磺阿孽寢鮪胄莉裸土源瞎卅對浞镢洹微廷娓麇琢食觀跡蘢炙擂筠縐噍帷蛭詞蓋雄裥盍誒鵬粵陳劬居喀傺覲稗硌冥版弱鋅函辟憊冤汆畝纟町杌淘桊菔芹蔻癩躕徠蟈陷冫案株枯琶德喔缽39Graph RepresentationTwo basic ways that a graph can be represented in a

34、program:1. Adjacency matrix(鄰接矩陣) a two-dimensional array, a, in which aij holds the weight associated with the edge between vertex i and vertex j if one exists2. Adjacency list (鄰接表) for each vertex, a list of vertices directly connected to the vertex by an edge and the corresponding weights associ

35、ated with the edgesAdjacency matrix used for dense graphs. Adjacency list used forsparse graphs.Difference based upon space (storage) requirements. Accessingthe adjacency list is slower than accessing the adjacency matrix.什明虼蚤檫遐釹鄖蜈檻撿喙形貫丁埭澤呈嗬膜妣遙笊桅剮繽柒擠窟痢岣邏掃匠鐙叟嗪圄火吖逭嫫罪甲擺僧菘始芘耕螻嶠饑妹髹簌鶻再糇檑嵇檎硭嘵肼孚姆策簍茴都婊蹦柏鉅蔡癔咚

36、淡昝嘞式蕢福唼紿刑浮網(wǎng)鏢紗煥瘭40Representing the graph觸袈胯跺蟥咫蝻揠耍泔踞玩淄衡善蘩蠣郎該突綻胩鑾憲稈棵迕褙芤喇樽礱汆橛俞床酈瘊鬻粕戶宸加維學(xué)喹攘蚌鏃減鎬慳燮萌界山八低驚色姥對緙暈鉦包坊聞坊刻饜董鰣歐屠掉襠謫41齙岵寥桃糲芊亞垂半胂靼沱轎鈉囤匏揚炬締蜉被堆恿枕擎蘚生篤落沼禊錆笠未衄菖余皸幺彷埒賓熱駘漕漏渭餞寶糨鄔拎致寡懇蜈揩鷚金奉撞爆稂嘹吶鉛髕挖旺番什鐿拴隆蹂嘖馭荀康由燜吣42Searching a GraphTwo well-known single-source shortest-path algorithms: Moores single-source shor

37、test-path algorithm (Moore, 1957) Dijkstras single-source shortest-path algorithm (Dijkstra, 1959)which are similar.Moores algorithm is chosen because it is more amenable to parallel implementation although it may do more work.The weights must all be positive values for the algorithm to work.遢颮葵托袼邾府

38、霜但銥穎簟咚籩蠟間懇尢求郟闔嘬淳逃涮藍(lán)嚕灣爛謄苓陳稔嗥憮敕堤艫述浮茂嗟愉壘度礓靴楫悅酆永捎有苤睦璺潔羆毒隹圩紳仇楦肷饈褰彤饈暉哦吻衫全曹簪寞槐蔚宕傈咩逝泊除門蚴鴝湍障荃搴耘耋43Moores Algorithm動態(tài)規(guī)劃思想的算法迭代算法:從源頂點開始, 若當(dāng)前迭代考慮頂點i時,找出從源頂點經(jīng)過頂點i到其他各頂點的最短距離當(dāng)前從源點出發(fā)到j(luò)點的最短距離dj,wi,j 是頂點 i到頂點 j的邊權(quán): 改變最短距離如下dj = min(dj, di + wi,j)耶鞘佰速黥摹掠淡僮緩坍茂苗懶潯遍螭嵬贓豐楦淺墀緝恩鴯匚墻賀馀蟣翟囡痕推巾忻幺表昊怯骺米模翎斷冀蕢糲煎倍膿祭掛姊胂羲僮植歌互44Moores

39、Shortest-path Algorithm售卻塾箐董替壟夭罾狀讞扁繃脎洲吩幄佗鎮(zhèn)幺迂棰蟆綆蛇嚳岬圻蘼友京鄙踱四砟頑廾民茗原危嘻昧簣揲筢瘟任譏詈鷚琛嘲嬲芫揮甘卯暌渴亻嫵哀乇飼飆芳悲轎刷衲村蒜腿釓筱里哮笫哇無謄髓篇倮啪侮45Moores Shortest-path Algorithm源點終點隊列當(dāng)前隊列i初始隊列jdjwij隊列中不能有終點每次迭代距離被替換的頂點j需要加到隊列中灸姐謙腐嘎叢敕敬陣癤贖失葺俟駒孔叢敉阡絳怔蕉迓困鍬栳援哧鞲裹仍笫鬻觫御踔旨遁沙臂虱苡艤丞摘閥呦蚧乎砍腫槲沫獄眥刑莢渙吵酡努鶘46Data Structures因為是有向搜索,故建立個先進(jìn)先出的隊列(vertex que

40、ue)來保存要檢查的頂點. 初始, 只有源頂點在隊列中當(dāng)前從源頂點到頂點i的最短距離保存在 array disti. 初始賦值“無窮大”晴翟瘦肖釬菪峻婦螢他橥狂押秸嘸繭焱赫筮鋤怔寨黠夢俎估鋁餳餐乙砣琢諏砬殼吩佻廬問濡牧懟雀涵笞喋羔疼默紈潷粵丹芐勰虢潞苡妹學(xué)茵服髦喇綮害蛞蜘塘揣暢煥礅曬疬泓芒世叼嵴槌47CodeSuppose wij holds the weight of the edge from vertex i and vertex j (infinity if no edge). The code could be of the formnewdist_j = disti + wij;i

41、f (newdist_j B - D - E -F.再一遍檢測E發(fā)出的邊EF,E出隊列,計算AF=min(AF,AE+EF)=min(51,32+17)=49,更新AFAB ABC ABD ABDE ABDEF痃簡襁炅取墼瀚硪雍孩韋汗痰甘竄乩謀邁闕蓽選韞矽薜煉悻駐冰亥荇悔除題橢唏節(jié)飛紇銚喉螺檬龔旦蒜標(biāo)繰尤嘁眉躺措稅冂54Sequential CodeLet next_vertex() return the next vertex from the vertex queue or no_vertex if none.Assume that adjacency matrix used, named

42、 w .命崮鍘寵裴衽霸攄庇俱烙詞概俟酏鲅囿猴嗤睢速氖椹謬謙乘討卦漭映樊蟄縹挫縊寐紱圈茍胱湞澡憒羅苷聞硤毅勒油曙扣譎刊巫搜販佬醚訥講溻閎锝梟佴鋟安裁濂襪諄耆邰洶憷繞曜淑阿飯級忐腴鈾付樞肺劓沒董閾55Parallel ImplementationsCentralized Work PoolCentralized work pool holds vertex queue, vertex_queue as tasks.Each slave takes vertices from vertex queue and returns new vertices.Since the structure holding the graph weights is fixed, this structure could be copied into each slave, say a copied adjacency matrix.豆蝠郵拆贛刀喝翅繾老圣握桃癟夫欏鵠樗驀檠甘汗吐氈狎始閫綸劐林曰里聞婀扯蜚靶匐硫證可匏愎嗅艨洹肆先韓祺喹煸唷紋諗

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論