M衣ng Multi hop

Một phần của tài liệu BÀI BÁO CÁO ĐỒ ÁN TỐT NGHIỆP-THIẾT KẾ MẠNG QUANG (Trang 64)

T 蔚 NG QUAN H烏 H 渦 NG HÔNG IN QUANG

3.7.2. M衣ng Multi hop

M衣ng multi- hop kh逸c ph映c 8逢嬰c nh逢嬰c 8k吋m này b茨ng cách tránh s穎 d映ng b瓜 thu phát 8i隠u ch雨nh b逢噂c sóng. M厩i node 8逢嬰c trang b鵜 m瓜t s嘘 các b瓜 thu phát quang 8逢嬰c ch雨nh c嘘"8鵜nh. M厩i b瓜 phát trong m衣ng 8逢嬰c ch雨nh 8院n m瓜t b逢噂c sóng khác nhau. K院t n嘘i tr詠c ti院p single- hop gi英a hai node ch雨 có th吋 x違y ra khi n院u nút 8院n có m瓜t trong nh英ng b瓜 thu c栄a nó 8逢嬰c ch雨nh 8院n m瓜t trong nh英ng b逢噂c sóng c栄a node g荏i. S詠 k院t n嘘i gi英a m瓜t c員p node b医t kì trong m衣ng 8衣t 8逢嬰c b茨ng cách 8鵜nh tuy院n thông qua các node trung gian. 雲"8ó kênh thông tin quang 8逢嬰c chuy吋n thành d衣ng 8i羽n, 8鵜a ch雨"8院n c栄a gói 8逢嬰c gi違i mã, sau 8ó gói 8逢嬰c chuy吋n m衣ch 8i羽n và 8逢嬰c phát l衣i trên b逢噂c sóng 8吋"8院n node 8ích ho員c 8院n các node trung gian khác mà 荏"8ó quá trình này8逢嬰c l員p l衣i. Vì v壱y, m瓜t gói s胤 tr違i qua nhi隠u b逢噂c sóng thông qua m瓜t s嘘 node trung gian tr逢噂c khi 8院n 8逢嬰c node 8ích.

Ch逢挨ng 3: A鵜nh tuy院n và gán b逢噂c sóng

3.8. Gi違i thu壱t cho v医n 8隠"8鵜nh tuy院n và gán b逢噂c sóng v噂i l逢u l逢嬰ng m衣ng thay

8鰻i DRWA

B衣n có th吋 hình dung các v医n 8隠 mà m瓜t gi違i pháp cho DRWA c亥n ph違i gi違i quy院t, m映c 8ích c栄a nó là t嘘i thi吋u t逸c ngh胤n t衣i node m衣ng (t泳c là s嘘 yêu c亥u k院t n嘘i s胤 b鵜 refuse/t鰻ng s嘘 yêu c亥u), nâng cao hi羽u su医t s穎 d映ng tài nguyên (cùng m瓜t l逢嬰ng fiber, node, chuy吋n 8鰻i b逢噂c sóng,...có th吋 t衣o ra nhi隠u LP nh医t) và c違i thi羽n hi羽u p<ng t鰻ng th吋 c栄a m衣ng (hi羽u n<ng = xác su医t t逸c ngh胤n + 8瓜 ph泳c t衣p c栄a gi違i thu壱t). Gi違i thu壱t 8逢嬰c trình bày nh逢sau:

Gi違 s穎 m厩i LP có t嘘i 8a H hop (link). Trên m厩i link (fiber) s穎 d映ng W b逢噂c sóng (sub-channel). T壱p các 8逢運ng 8i có th吋 gi英a hai node b医t k là R*. Tr衣ng thái c栄a m厩i b逢噂c sóng trên link (fiber) 8逢嬰c mã hoá b茨ng hai bit b0b1. Khi có yêu c亥u LP, node ngu欝n s胤 g荏i b違n tin c壱p nh壱t tr衣ng thái d丑c theo các path ti隠m p<ng 8吋 t壱p h嬰p thông tin tr衣ng thái 8逢運ng truy隠n (b違n tin có th吋 nhúng trong giao th泳c báo hi羽u nào 8ó)

Hai bit tr衣ng thái nh逢 sau: b0b1= 00: b逢噂c sóng 8ang b壱n.

b0b1= 01: có th吋 dùng liên t映c không c亥n chuy吋n 8鰻i b逢噂c sóng. b0b1= 10: mu嘘n dùng ph違i chuy吋n 8鰻i b逢噂c sóng

b0b1= 11: có th吋 dùng c違 hai cách

T衣i m厩i node trung gian thu瓜c LP, 2*W bít tr衣ng thái b逢噂c sóng 8逢嬰c ghi (tagged) vào sau b違n tin này, và g穎i 8院n 8ích. N院u 荏 th運i 8k吋m 8ó node không th吋 thi院t l壱p kênh (do h院t b逢噂c sóng ch鰯ng h衣n), nó lo衣i b臼 (discard) gói tin báo hi羽u và g穎i b違n tin thông báo (notification) t噂i ngu欝n ho員c 8ích 8吋 x穎 lý.

T衣i 8ích, thông tin trong m厩i b違n tin c壱p nh壱t tr衣ng thái 8逢嬰c 8逢a ra d衣ng ma tr壱n: Toàn b瓜 hình違nh v隠 tr衣ng thái tài nguyên 8逢運ng truy隠n t瑛 node 0 8院n node H-1 8逢嬰c ph違n ánh trên ma tr壱n này. Gi違i thu壱t 8ánh d医u b逢噂c sóng th詠c hi羽n d詠a trên các ma tr壱n (thành công) t瑛 R* path ti隠m n<ng c栄a m厩i c員p node.

Ký hi羽u CS c栄a b逢噂c sóng lamda(m) là b壱c liên t映c c栄a b逢噂c sóng, t泳c là có th吋 dùng nó liên t映c trong dãy liên ti院p các node nào 8ó d丑c theo path. Gi違i thu壱t nh逢 sau:

Ch逢挨ng 3: A鵜nh tuy院n và gán b逢噂c sóng

1. Tìm t壱p t医t c違 các t鰻 h嬰p CS c栄a m厩i b逢噂c sóng, trên m厩i path, ký hi羽u CSij 2. Tìm t壱p các t鰻 h嬰p CS* thu瓜c {CSij} (i =1: W; j =1:R*) ph栄 kín LP v噂i s嘘 ph亥n t穎 t嘘i thi吋u (t泳c là ít 8o衣n CS nh医t, 8k隠u này t逢挨ng 8逢挨ng ít ph違i dùng b瓜 chuy吋n 8鰻i d逢噂c sóng nh医t)

3. Áp d映ng hàm m映c tiêu (trong gi違i thu壱t là t鰻ng chi phí) cho m厩i t鰻 h嬰p CS tìm th医y trong b逢噂c 2 8吋 ch丑n ra t鰻 h嬰p có t鰻ng chi phí t嘘i thi吋u.

3.9. K院t lu壱n ch逢挨ng

Qua ch逢挨ng này, chúng ta 8ã tìm hi吋u v隠 ph逢挨ng pháp 8鵜nh tuy院n và gán b逢噂c sóng trong m衣ng WDM, khi có yêu c亥u thi院t l壱p lightpath t瑛 node ngu欝n 8院n node 8ích thì b瓜"8鵜nh tuy院n b逢噂c sóng có nhi羽m v映 xác 8鵜nh 8逢運ng 8i và gán b逢噂c sóng cho lightpath 8ó. Trong m衣ng quang WDM, vi羽c s穎 d映ng thu壱t toán 8鵜nh tuy院n b逢噂c sóng 8吋"8衣t 8逢嬰c t嘘i逢u m衣ng là 8i隠u h院t s泳c ý ngh a.

Thu壱t toán Dijkstra v噂i vi羽c 8鵜nh tuy院n tìm 8逢運ng ng逸n nh医t có nhi隠u 逢u 8i吋m trong m衣ng t壱p trung nên em s胤 s穎 d映ng 8吋 mô ph臼ng vi羽c 8鵜nh tuy院n trong m衣ng quang.

Ch逢挨ng 4: Th詠c hi羽n mô ph臼ng

CH姶愛NG 4

THC HIN MÔ PHNG

4.1. Gi噂i thi羽u ch逢挨ng

A鵜nh tuy院n là công vi羽c h院t s泳c quan tr丑ng trong m衣ng quang WDM, nó th詠c hi羽n tìm 8逢運ng cho lightpath mang l逢u l逢嬰ng thông tin t瑛 ngu欝n 8院n 8ích v噂i m映c 8ích t嘘i 逢u m衣ng. Trong ch逢挨ng này, d詠a trên ph亥n m隠m Visual C++, em mô ph臼ng ph亥n8鵜nh tuy院n cho các lightpath v噂i hàm m映c tiêu chúng ta có th吋 tu ch丑n nh逢 chi phí, 8瓜 tr宇, l逢嬰ng l逢u l逢嬰ng… qua các tuy院n t瑛 ngu欝n8院n 8ích. Thu壱t toán s穎 d映ng8吋 th詠c hi羽n8鵜nh tuy院n là thu壱t toán Dijkstra.

Các tr丑ng s嘘 trên các tuy院n không ch雨 là 8瓜 dài 8逢運ng 8i c栄a tuy院n mà tu theo m瓜t tiêu chí nào 8ó c栄a m衣ng nh逢 chi phí tuy院n, 8瓜 tr宇, b<ng thông, l逢u l逢嬰ng thông tin... N院u l医y theo tiêu chí là chi phí th医p nh医t thì tr丑ng s嘘 trên các tuy院n (c衣nh) là chí phí c栄a tuy院n 8ó.

4.2. Gi噂i thi羽u v隠 ngôn ng英 Visual C++

Visual C++ là ngôn ng英 l壱p trình d詠a trên n隠n t違ng c挨 b違n c栄a C++, 8ó là l壱p trình h逢噂ng 8嘘i t逢嬰ng. N院u các b衣n8ã l壱p trình trên C++ thì vi羽c xây d詠ng các 泳ng d映ng trên Visual C++ r医t thu壱n l嬰i.

Khi th詠c hi羽n l壱p trình C/C++, 8吋 t衣o các giao di羽n ph泳c t衣p, trình bày8姻p hoàn toàn không8挨n gi違n. Nh逢ng8嘘i v噂i Visual C++ thì vi羽c 8ó khá 8挨n gi違n. B衣n ch雨 c亥n s穎 d映ng các8i隠u khi吋n hay xây d詠ng m瓜t menu8逢a vào泳ng d映ng c栄a mình mà các mã l羽nh c亥n vi院t không quá dài dòng và ph泳c t衣p nh逢 trong C/C++.

Trong ch逢挨ng trình mô ph臼ng c栄a em có th吋 s穎 d映ng b医t kì ngôn ng英 l壱p trình nào. Em ch丑n ngôn ng英 Visual C++ do kh違 n<ng c栄a nó t衣o giao di羽n d宇 dàng h挨n C/C++.

4.3. L逢u 8欝 thu壱t toán

Gi違 s穎 b瓜 8鵜nh tuy院n mô ph臼ng tìm 8逢運ng 8i v噂i 8逢運ng 8i ng逸n nh医t qua các tuy院n gi英a node ngu欝n và node8ích. Các tr丑ng s嘘 trên các c衣nh là 8瓜 dài c栄a tuy院n thông tin t瑛 node này8院n node kia.

Ch逢挨ng 4: Th詠c hi羽n mô ph臼ng

B逸t 8亥u

Xác 8鵜nh node ngu欝n và 8ích nh逢 V1 và V2

Thi院t l壱p V1là T-node

Thi院t l壱p nhãn c栄a T-node sang c嘘 8鵜nh, sau 8ó c壱p nh壱t b違ng tr衣ng

thái các node lân c壱n.

Xác 8鵜nh node t衣m th運i n嘘i v噂i V1 mà có tr丑ng s嘘 nh臼 nh医t và thi院t

l壱p thành T-node

D詠a vào thông tin trong b違ng tr衣ng thái, làm nh逢 th院 cho 8院n khi t噂i node V1, dãy các node8ó là 8逢運ng

8i ng逸n nh医t K院t thúc NO YES T-node có ph違i là V2

Ch逢挨ng 4: Th詠c hi羽n mô ph臼ng

Thu壱t toán s胤 th詠c hi羽n tìm8雨nh u trong t壱p h嬰p Q mà có giá tr鵜 d[u] nh臼 nh医t. A雨nh này 8逢嬰c lo衣i ra kh臼i Q và 8逢嬰c 8逢a vào t壱p S. T壱p S ch泳a m瓜t b違ng các 8雨nh t衣o thành m瓜t trong nh英ng 8逢運ng 8i ng逸n nh医t t瑛 s 8院n node ngu欝n t nào 8ó.

1 function Dijkstra(G, w, s) 2 for each vertex v in V[G]

3 d[v] := infinity // Gán các giá tr鵜 ban 8亥u 4 previous[v] := undefined

5 d[s] := 0 // Kho違ng cách t瑛 s 8院n s b茨ng 0 6 S := empty set // Thi院t l壱p S là t壱p h嬰p r厩ng

7 Q := V[G] // T壱p Q ch泳a t医t c違 các node c栄a 8欝 th鵜 8 while Q is not an empty set

9 u := Extract_Min(Q) 10 S := S union {u}

11 for each edge (u,v) outgoing from u 12 if d[u] + w(u,v) < d[v]

13 d[v] := d[u] + w(u,v) 14 previous[v] := u

4.4. K院t qu違 mô ph臼ng

Thu壱t toán Dijkstra tìm 8逢運ng8i ng逸n nh医t t瑛 node ngu欝n 8院n node8ích8逢嬰c th詠c hi羽n nh逢 sau:

Ch逢挨ng 4: Th詠c hi羽n mô ph臼ng

Ch逢挨ng 4: Th詠c hi羽n mô ph臼ng

3.Click vào bi吋u t逢嬰ng “DUONG NGAN NHAT” th詠c hi羽n tìm 8逢運ng ng逸n nh医t gi英a hai c員p node b医t kì.

Ch逢挨ng 4: Th詠c hi羽n mô ph臼ng

Ch逢挨ng 4: Th詠c hi羽n mô ph臼ng

4.5. K院t lu壱n ch逢挨ng.

Ta th医y 8逢嬰c thu壱t toán 8鵜nh tuy院n Dijkstra 8逢嬰c 泳ng d映ng hi羽u qu違 trong vi羽c 8鵜nh tuy院n các lightpath trong m衣ng WDM 8吋 tìm 8逢嬰c 8逢運ng 8i t嘘i 逢u v噂i các hàm m映c tiêu (cost function) c栄a m衣ng mà ta có th吋 áp 8員t cho nó. Hàm m映c tiêu này ta có th吋 theo tiêu chí nào 8ó c栄a m衣ng nh逢 là chi phí tuy院n, l逢嬰ng l逢u l逢嬰ng, d<ng thông… S詠 áp 8員t này th詠c hi羽n b茨ng cách 8員t tr丑ng s嘘 trên các tuy院n là giá tr鵜 c栄a các hàm m映c tiêu trên. Sau quá trình 8鵜nh tuy院n 8院n các node m衣ng, các node m衣ng th詠c hi羽n gán b逢噂c sóng cho lightpath. Vi羽c gán b逢噂c sóng ph違i tho違 mãn 8i隠u ki羽n liên t映c b逢噂c sóng n院u không node m衣ng 8ó ph違i s穎 d映ng b瓜 chuy吋n 8鰻i b逢噂c sóng.

A隠 tài “8鵜nh tuy院n và gán b逢噂c sóng trong m衣ng quang WDM” 8ã cho th医y 8逢嬰c vai trò quan tr丑ng c栄a8鵜nh tuy院n và gán b逢噂c sóng trong m衣ng quang WDM, hi吋u 8逢嬰c m瓜t s嘘 gi違i thu壱t8鵜nh tuy院n và các ph逢挨ng pháp gán b逢噂c sóng cho các lightpath trong m衣ng quang.A欝ng th運i ch逢挨ng trình mô ph臼ng8ã th吋 hi羽n quá trình 8鵜nh tuy院n c栄a các lightpath t瑛 node ngu欝n 8院n node8ích8吋 8逢嬰c m瓜t8逢運ng8i t嘘i 逢u theo m瓜t hàm m映c tiêu nào 8ó. K院t thúc quá trình nghiên c泳u 8隠 tài, em8逢a ra m瓜t s嘘 nh壱n xét nh逢 sau:

v Ch逢挨ng trình mô ph臼ng th詠c hi羽n8鵜nh tuy院n v噂i m映c8ích tìm 8逢運ng8i t嘘i 逢u t瑛 node ngu欝n8院n node8ích,8ây là8逢運ng 8i duy nh医t. Tuy v壱y,8吋 t<ng c逢運ng hi羽u n<ng m衣ng thì không th吋 8挨n thu亥n ch丑n duy nh医t m瓜t tuy院n t嘘i逢u8ó mà ph違i 8ánh giá 8逢嬰c các tuy院n còn l衣i 8吋 th詠c hi羽n phân t違i, tránh tình tr衣ng m瓜t tuy院n ho衣t8瓜ng h院t công su医t trong khi8ó có nh英ng tuy院n kh違 thi còn r厩i.

v Sau khi th詠c hi羽n 8鵜nh tuy院n cho lightpath, ph違i th詠c hi羽n gán b逢噂c sóng cho nó. N院u toàn b瓜 node m衣ng không s穎 d映ng b瓜 chuy吋n 8鰻i b逢噂c sóng thì toàn b瓜 các tuy院n trên 8逢運ng 8i t瑛 ngu嘘n 8院n 8ích ch雨"8逢嬰c gán m瓜t b逢噂c sóng duy nh医t. Tuy nhiên, tài nguyên s嘘 b逢噂c sóng trên m厩i node m衣ng có h衣n, 8k隠u này làm xác su医t t逸c ngh胤n r医t cao khi m瓜t node m衣ng không cung c医p b逢噂c sóng 8ã ràng bu瓜c t瑛 tr逢噂c. Vì th院, các m衣ng hi羽n nay luôn tìm cách th詠c hi羽n 8鵜nh tuy院n và gán b逢噂c sóng sao cho 8衣t 8逢嬰c t嘘i逢u m衣ng là gi違m xác su医t t逸c ngh胤n.

Ngày nay, ng逢運i ta 8ang h逢噂ng t噂i m衣ng toàn quang mà m丑i công vi羽c x穎 lí 8隠u th詠c hi羽n hoàn toàn trong mi隠n quang. M衣ng toàn quang h泳a h姻n s胤"8em l衣i t嘘c 8瓜 cao, giá thành m衣ng s胤"8逢嬰c gi違m xu嘘ng m瓜t cách 8áng k吋.

A欝 án 8逢嬰c hoàn thành trong th運i gian h衣n ch院, 8員t n隠n móng cho vi羽c nghiên c泳u và phát tri吋n sau này, vì th院 không th吋 tránh kh臼i nh英ng thi院u sót. Hi v丑ng trong th運i gian t噂i v噂i kinh nghi羽m th詠c ti宇n, em s胤 c嘘 g逸ng hoàn thi羽n h挨n 8隠 tài c栄a mình.

[1] Nguy宇n A泳c Ngh a- Nguy宇n Tô Thành, “Toán R運i R衣c”, Nhà xu医t B違n A衣i H丑c Qu嘘c Gia Hà N瓜i_2004

[2] http://www.2cool4u.ch/

[3] Senior, John.M, “Optical fiber communications”, Library of Congress Cataloging in Publication Data.

[4] George N. Rouskas, “Routing and Wavelength Assignment in Optical WDM Networks”, Department of Computer Science_2000.

[5] Krishna M.Sivalingam, SureshSubramaniam, “Optical WDM Networks- Principles and Practice”, Kluwer Academic Publishers_2000.

[6]http://HowStuffWork/HowRoutingAlgorithmsWork

[7] “H羽 th嘘ng thông tin quang/Vô tuy院n”, LG Information and Communication LTD (LGIC)

[8] Nguy宇n Duy Nh壱t Vi宇n, “K thu壱t chuy吋n m衣ch trong m衣ng di羽n r瓜ng”, A衣i h丑c Bách Khoa Aà N印ng

[9] Regis J. BUD Bates, “Optical Switching and Networking Handbook”, McGraw- Hill Companies

[10]http://en.wikipedia.org/wiki/Dijkstra’s algorithm [11]http://vi.wikipedia.org/wiki/

[12] Jun Zheng, Hussien T. Mousftah, “Distributed lightpath control for wavelength-routed WDM network”, University of Ottawa

[13] Jin seek Choi, Nada Golmie, Francois Lapeyrere, Frederic Mouveaux and David Su, “A functional Classification of Routing and Wavelength Assignment Shemes in DWDM networks: Static Case”, National Institute of Standards and Technology, Gaithersburg, MD, USA

PH LC § Th詠c hi羽n thêm bi院n và th詠c hi羽n mã l羽nh sau: void CAlgorithmsView::OnAddNode() { m_Dijkstra.StartAddNodes(); } void CAlgorithmsView::OnAddEdge() { m_Dijkstra.StartAddEdges(); } void CAlgorithmsView::OnShortestPath() { CShorthestPath dlg; if(dlg.DoModal()==IDOK) // { m_Dijkstra.ShortestPath(dlg.m_node1, dlg.m_node2); } } § Th詠c hi羽n v胤 các node và các c衣nh b茨ng mã nh逢 sau: class CGraph { public: long GetNrNodes(); CGraph(); virtual ~CGraph();

VTYPE_EDGE m_edges; // dãy các c衣nh

VTYPE_NODE_P d; // array of longs that contain // the shortest path at every step

VTYPE_NODE_P pi; // array of longs that contain // the predecessor of each node for the shortest path }; // // // // // // // // // // // // // // class CNode { public: CNode Copy();

double m_cost; // gia tri trong so long m_NodeNr; // so node

POINT m_p; // diem do hoa cho node CNode(); virtual ~CNode(); }; // // // // // // // // // // // class CEdge { public:

bool m_red; // ve duong di ngan nhat

// (neu mot canh la mot phan cua duong di ngan nhat thi no duoc ve mau do) double m_cost; // trong so cua canh (lay gia tri ngau nhien tu 0-9)

long m_secondNode; long m_firstNode; POINT m_secondPct; POINT m_firstPct; CEdge();

virtual ~CEdge(); };

// ve canh bat dau tu node dau den node cuoi § Thu壱t toán Dijkstra:

// The Dijkstra's algorithm

STDMETHODIMP CDijkstra::ShortestPath(long node1, long node2) {

ReleaseGraph();

InitializeSource(g, g.m_nodes[node1-1]); // Thiet lap S ve rong

VTYPE_NODE S; // Dat cac node vao Q

VTYPE_NODE Q;

VTYPE_NODE::iterator kl;

for(kl=g.m_nodes.begin(); kl<g.m_nodes.end(); kl++) {

CNode node = (*kl).Copy(); Q.push_back(node);

}

// Algorithm while(Q.size()) {

CNode nod = ExtractMin(Q); // tach node tim duoc ra khoi tap Q // dua node nay vao tapS

S.push_back(nod);

VTYPE_NODE::iterator kl;

for(kl=g.m_nodes.begin(); kl<g.m_nodes.end(); kl++) {

{

bool gasit = false;

VTYPE_NODE::iterator kll; for(kll=Q.begin(); kll<Q.end(); kll++) { if((*kll).m_NodeNr == (*kl).m_NodeNr) gasit = true; } if(gasit) Relax(nod, (*kl), GetEdgeVal(nod, (*kl))); } } } RefreshDone(node1, node2); return S_OK; } § L羽nh th詠c hi羽n v胤: // Draw HDC dc = ::GetDC(m_hWnd); HPEN pen=CreatePen(PS_SOLID,0,RGB(0,0,0)); HPEN penred=CreatePen(PS_SOLID,2,RGB(255,0,0)); HBRUSH brush=CreateSolidBrush(RGB(0,0,0)); HPEN oldpen; HPEN oldbrush; oldpen=(HPEN)SelectObject(dc,pen); RECT rc; ::GetClientRect(m_hWndCD, &rc);

HFONT OldFont = (HFONT)::SelectObject(dc, m_lmfont); long nr = 0; VTYPE_NODE::iterator kl; for(kl=g.m_nodes.begin(); kl<g.m_nodes.end(); kl++) { char s[5]; ltoa((*kl).m_NodeNr, s, 10);; Ellipse(dc, (*kl).m_p.x-10, (*kl).m_p.y-10, (*kl).m_p.x+10, (*kl).m_p.y+10); if(nr<9) TextOut(dc, (*kl).m_p.x-5, (*kl).m_p.y-8, s, 1); else TextOut(dc, (*kl).m_p.x-8, (*kl).m_p.y-8, s, 2); nr++; } oldbrush=(HPEN)SelectObject(dc,brush); VTYPE_EDGE::iterator kll; for(kll=g.m_edges.begin(); kll<g.m_edges.end(); kll++) { HPEN temp; if((*kll).m_red) temp=(HPEN)SelectObject(dc,penred);

MoveToEx(dc, (*kll).m_firstPct.x, (*kll).m_firstPct.y, NULL); LineTo(dc, (*kll).m_secondPct.x, (*kll).m_secondPct.y); Ellipse(dc, (*kll).m_secondPct.x-5, (*kll).m_secondPct.y-5, (*kll).m_secondPct.x+5, (*kll).m_secondPct.y+5);

POINT po;

po.x = ((*kll).m_firstPct.x+(*kll).m_secondPct.x)/2; po.y = ((*kll).m_firstPct.y+(*kll).m_secondPct.y)/2; char s[5];

ltoa((*kll).m_cost, s, 10); TextOut(dc, po.x, po.y, s, 1); if((*kll).m_red) SelectObject(dc,temp); } ::SelectObject(dc, OldFont); SelectObject(dc,oldpen); SelectObject(dc,oldbrush); DeleteObject(pen); DeleteObject(brush); ::ReleaseDC(m_hWnd, dc); } } void CDijkstra::ReleaseGraph() { g.d.clear(); g.pi.clear(); VTYPE_EDGE::iterator kll; for(kll=g.m_edges.begin(); kll<g.m_edges.end(); kll++) { (*kll).m_red = false; } Refresh(); }

Một phần của tài liệu BÀI BÁO CÁO ĐỒ ÁN TỐT NGHIỆP-THIẾT KẾ MẠNG QUANG (Trang 64)

Tải bản đầy đủ (PDF)

(81 trang)