You are on page 1of 21
DAI HOC BACH KHOA HA NOI VIEN DIEN TU - VIEN THONG G4 D pé tai: THUAT TOAN MENTOR II Giang vin huéng dan: TrAn Ngoc Lan Sinh vién thyc hién: 1. Lé Thai Hung KSTN-DTVT-K52 2. Trin Hiru Cuong = KSTN-DTVT-K52 3. Pham Van Chi KSTN-DTVT-K52 4. Bai Thi Thé Ha KSTN-DTVT-K52 HA N@i, thang 11 nam 2011 Muc Lue 1. Giéi Thigu YEU CAU CUA BAI TAP 2g the 2.1 Thudt ton Mentor... 24.1 Xe dinh node backbone va node trung tim... 2.1.2 Chuyén yéu edu node sang xuomg sing. 21.3. Xéy dig edy Prim-Dijkstra véi tham s6 2.2. Thue tofn Mentor I 2.2.1 pat vin dé 222 ISP(Incremental Shortest Path)... 3. Trién khai thudt todn.. 3.1. Téng quan vé kién tric 3.2. Xay dymg dé thi co'sé.... 3.2.1 Class Node 3.2.2 Class Are 3.23. Class Graph 33. Thugt ton 33.1 classMentor.... 3.3.2 Class Prim — Dijkstra 3.3.3. Class Floyd ~ Warshall, 334 Class ISP vss 3.4, Form chinh 4 Kétluan vién théng” duge hiéu 1a cach trao déi dit ligu thong qua ky thuat dign, dign wr va cée cOng nghé hign dai khac. Va “hé thdng vin théng” 1a tap hop ede trang thiét bj ky thudt dé cung cdp dich vy vign théng cho ngudi str dung. Ngay tir ngay xa xua, nhing ngudi tién str da biét ding khéi dé b4o higu, nhing ngudi thé dan 6 nhing hon dao xa x6i ding cdc c6t khéi dé lién lac, béo higu va truyén tin, Nhung “vién théng” duge chinh thife sir dung khi con nguéi phat minh ra dién bdo va dién thoi. Céng nghé vién théng tir dé ngay cang phat trién nhanh chéng va vugt bac, ting dung trong moi linh vuc. Trén quy m6 xa hGi, vién thong da kim nén mt hé than kinh théng minh nhay bén trén trai dat, 1am thay img quéc gia va ty trong né hinh thanh lén mt mang ludi lién két mai ngud quéc gia trén trai dat. Sy hGi ty cong nghé trong linh vue vién thong cing sy phat trién tang truéng manh cla kinh té - xa hGi, nhu cau sir dung cing nhu truyén dit ligu cua con ngudi ciing tang lén theo ham s6 mii va ngay cing tro nén phite tap, ¢6 khuynh hung ky thuat cao véi chat hrong cao. Vi vay, vige t6 chite mgt mang vién théng dap mg duge nhu cu dy va phat trién t6 chite mang Iuéi nay thanh m6t thanh phan co ban quan trong ca xa h6i thong tin héa cao trong tuong lai nita la khong hé don gian, né dong mét vai trd rét quan trong. Dé giai quyét bai todn wén, ta nhin hé thong vién théng tén ca phuong dién phdn citng va phan mém: Y Vé phuong dién phan cing, hé théng vién thong gdm céc thiét bi nhu: Thiét bj dau cudi thong tin, thiét bj chuyén mach, thiét bj truyén dan. Y Vé phuong digén phan mém, hé théng vién thong cho biét cdc phan cig lign hg véi nhau thé nao ( Topo mang, véi topo mang ta sé phan bigt duge mang AN(Access Network) va mang Idi), cdc giao thite mang, cc giao tite dé lién két, giao thite dé trao ddi thong tin (gitta hai giao thite nay ¢6 thé tach réi, c6 thé két hop véi nhau), quan ly va khai théc mang. Trén phuong dién phan mém, dé xay dung mang, ta phai xay dung duge céu hinh cia cée phn tr mang. MENTOR (Mesh Network Topology Optimization Routing) 1a mt thudt todn rat hiu ich cho viée thiét ké mang théng tin vi né khong piu thuge vao dic diém cua bat ky mot cong nghé hay kién tric mang nao. N6 chi phy thudc vao nguyén tic thiét ké mang. MENTOR cé thé tng dung cho nhiéu loai mang, dic bigt 18 mang ATM (Asynchronous Transfer Mode). Va chuong trinh MENTOR 1a mOt img dung tin hoc trong viée thiét ké Topology cho mang bang chinh thuat toan MENTOR. Trong dé tai nay yéu cdu ching em viét mOt chuong trinh MENTOR nhu thé, Chuong trinh chang em viét trong thi gian ngin va kién thite c6 han nén c6 rat nhiéu nhiing han ché nhat dinh nhu chi cé tinh chat mé phong, cdc gia thiét, diéu kign chua hoan toan gidng véi yéu cau thyc té. Tuy nhién, chting em hy vong chuong trinh nay cing gidp moi ngudi nim duge qué trinh x4y dung Topology cho mang. Trong qué tinh thye hign bai én, chting em xin cam on sy tn tinh giup do cia c6 Tran Ngoc Lan da giup chang em hoan thanh bai tap nay. Ching em rat mong nhan duge nhiing loi khuyén tir thay dé ching em cé thé khdc phuc duge nhiing cdi chua lam duge trong dé tai dé ching em cé thé hiéu sau sic hon vé thuat toan cing nhu chuong trinh MENTOR trong xay dyng Topology cho mang vién théng, déng théi hiéu rd hon vé mén hoc 76 chire va quy hoach mang vién théng. Chting em xin chan thanh cam on cé! YEU CAU CUA BAI TAP Viét m§t phéin mém tgo topology mang vién thong theo thugt toan MENTOR 2. mn: S6 lugng nit trong mang: Cost Chi phé két néi gitta cdc ntit A mét ma tran [nxn] Req Ma trn [nxn] yéu cdu Pe, W, R/D: Cc tham sé xe dinh mit BackBone a: ‘Tham sé xc dinh cay 1 Hé sé str dung bang théng Cmax [nxn]: Gid tri t6i da dung lgng cia lién két gitta cde mit( hiéu dung) - Tim cay két néi cdc miit, @ cho biét cay 1a dang MST hay PST, MENTOR. - Téng chiéu dai cay, chiéu dai duong di - Direct link: Tim két néi Direct link - Duong di trén cay Tat ca thé hién trén man hinh dé hoa. 2. Ly thuyét 2.1 Thugt ton Mentor 2.1.1 Xéc dinh node backbone va node trung tim Mentor Batady 4 XAc dinh node backbone thoa man diéu kién nw(i) > w q Xac dinh MAXCOST Xac dinh node truy c&p clia node backbone da xac dinh ¥ Tim node trung tam cla node chua phan loai, tinh merrit tir dé tim node backbone trong tap chua xac dinh do, cap nhat lai danh sdch backbone va node truy cap ¥ Tinh moment rdi x4c dinh node root kéttnae \ } Hinh 2.2.1 Luu dé thuat toan xac dinh node backbone Bude 1: xéc dinh node backbone théa man tiéu chudn trong sé: + Trong s6 cua m@t node 1a téng ciia tat ca céc lu lung vo va ra node + Trong s6 chuan héa diya vao node i la NW(i) = W(i) /C +W la tham s6 + Node c6 NW(i) > W duge chon lam node xurong song Bude 2: xéc dinh MAXCOST + MAXCOST = max,, cost(N,N)) = max? G =x)? + Ory? Bude 3: Xéc dinh node truy cap cua node backbone da xéc dinh, ic node khdng tho man tiéu chuan trong sé va “gin” node xuong + Tat c sng sé duge chon lam node truy cap +“ gin ” duge dinh nghia li khi gid lién két tir node truy cp “e” dén node xuong séng 1a nhé hon m6t phan ciia gid lién két 1én nhat. cost(e,N,) < MAXCOST * RPARM, hay * (@&,— x)? + Qe — yi)* ™—<<~Jé numBackboné Xéc dinh S_list && D_list Cap nhat sp_dist{][] && sp_pred{]i} Tran TARA Sap xét theo thirty gian dan cc cap c8 maxl (lim) > D det le te Hinh 2.2.2 luu dé thuat toan ISP 2.2.2.1 Ma tran khoang cach — thuat toin Floyd Warshall Dé thy hién diéu nay ta cn c6 2 ma tran 10 * Khong céch duéng ngin nhdt Shortest-path distances gitta 2 node i, J(sp_disthass Ma tran con tro node trén duéng di ngan nhat itra 2 node i, j(sp_pred) yx» Hai ma tran nay luén duge cAp nhat sau mGi lan thém lién két, Céch xay dung ma tran nay véi dé thj bat ki rat gidng trong thuat toan Floyd — Warshall For pair (A.F) sp_dist[A.F] = 37 sp_pred[A,F] sp_pred[A,E] =D sp_pred[A,D] = B sp_pred[A,B] = A co G Hinh 2.2.2.1 vi du xay dung sp_dist{][] va sp_pred[][] 2.2.2.2 Thit ty xem xét cde cp canh Chiing ta sip xét cdc cp canh theo thir ur bude nhay. Va coi dé 1a thir ur edn xét xem c6 thém lién két try tiép hay khong Trinh te AE AF A UF BE ¢ aN BF 3 bude nhay D Te. é E cF B DA oyu DB 2 bude nhay AC BC DF 1 burde nay Hinh 2.2.2.2 vi du vé sip xép cdc canh theo thir ty 2.2.2.3 Xét canh thém vao © Khi xem xét ligu c6 thém lién két tryc tiép gitra node nguén S va node dich D d6 dai lign ket SD ta xay dung s_list va d_list © s_list véi ¥ nghia tap node “dugc huéng Igi” néu muén di dén node khée néu ding lién két tryc tiép SD ct © d_list voi ¥ nghia tap node “dugc hudng Igi” néu muén di dén node khdc néu ding lién két tryc tiép DS ‘V6i ¥ nghia nhu trén, cch xy dung s_list va d_list nhu sau: © Thém node vao s_list nu: sp_dist{node, s] + L < sp_dist{node, d] © Thém node vao d_list néu: sp_dist{node, d] + L < sp_dist[node, s] st={A,C,S} d_list={F,G, D} Hinh 2.2.2.3 vf dy xay dung s_list(] va d_list{] © Xem xét tdt cd cdc cp (ni, nj) trong d6 ni thuge s_list va nj thude d_list. Khi 46, luu Iugng (ni, nj) sé chuyén sang lién két dy dinh néu sp_dist{ni, s] +L + sp_dist{d, nj] < sp_dist{ni, nj] D6 dai lén nhat cho cé thé An dinh hu hrong (ni, nj) 48 chuyén di theo diréng nay 1A maxL = sp_dist{ni, nj] - sp_dist{ni, s] + sp_dist{d, nj] Diéu nay c6 nghia 1a néu do dai lién két (ni, nj) An dinh trong khoang (L, maxL) thi uu lugng sé chuyén di theo duéng di SD méi nay © Voi mai cp (ni, nj) ta sé trén xudng maxL. Ta sip xép cdc cp nay theo thir ur tr maxL(P1) = 2000 maxL(P2) = 1800 maxL(P3) = 1800 maxL(P4) = 1700 6 day, néu chon gid tri canh 1a bao nhiéu sé quyét dinh c6 bao nhiéu cap (ni, nj) c6 thé sir dung lién két nay. Vi du SD = 1750 thi cé cae cp PI, Pl, P3 sé ding lién két méi nay. 12 3. Trién Khai thuét toan 3.1. Téng quan vé kién tric 3.2. Kay dung dé thi co sé 3.2.1 Class Node + Thuge tinh: © public const int isRoot = -1; © public const int unknown = -2; © public const int drawIndex = 0x10; © public const int drawlWeigh = 0207 // thong se co ban © public int index; // thu tu node @ public int x, yz // toa do © public double weig // trong luong nut © public int priority; // >=0 neu la nut truy nhap, - index la backbone, -1 neu la goc, ~ neu chua xac dink // Ket noi voi cac nut khac @ public int numNode; 0 public List otherNedes; © public List send, recv; © public List distance; © public List connected: + Operator: © public Node(int index, double weigh, int _priority Node.unknown, int x = @, int _y = @, int _numNode = @, List _otherNodes = null, + “Listedouble> send = null, Listedouble> _recv = null, List¢double> _distance = null, Listcint> connected = null) {} 7/ham tao © public 001 IsOne(Node other, int r = 58) {} © public void SetPosition(int _x, int _y) {} © public double GetDistance(Node Other) {} // Lay toa ad thc trén Decac(chua b: ay @éi boi mentor) © public void ConnectNodes(Noce Other) —// chi dung trong ham CreateNodes. nhu vay se dung thu tu luen - chu y la no phai connet voi chinh minh © public void DrawNode(Graphics Grfx, int draw, double div = 2, int r= 7) {} JIN node 7] Ham nay s& hién thi node véi mau s4c cia node va sé thi tu tuong ang véi node 13 3.2.2 Class Arc + Thuée tinh: © public Node destination, source; //s0 thu tu 2 diem source, destination © public double distance; //do dai canh: distance © public double ¢; //dung luong 1 lien ket © public double ratio; 7/dung luong cuc dai ung voi moi Lien ket (tinh theo %) © public double capacity; 7/dung luong tren canh nay voi moi lien ket capacity = c * ratio = 2 * 60% © public double flow; 7/tong luu luong tren canh nay: flow © public int paths; 7/80 luong lien ket song song: paths public int priority; © public const int drawDist = x81; © public const int drawCap = @x@2; © public const int drawFlow = 6x04; © public const int drawPaths = @x@8; + Operator: © public Arc(Node source, Node destination, double _flow @.8, double _c = 2.8, double ratio = 0.6, int _priority Node.unknown) {} / ham tao © public void DrawAre(Graphics Grfx, int div = 2) {} 71 v® canh public void DrawParameter(Graphics Grfx, int draw, int div 2, int r= 8) 0} /Iw® canh, hién thi cde théng sé canh 3.2.3. Class Graph + Thuge tinh: © const int MAX_X = 1500, MAX_Y = 1500; © public ListeNode> LN © public Listearc> LAS © public int numNode = @, numarc = @ © public double cost = 0.0; © public int root = © private Random rd new Randon(); + Operator: © public Graph(){} // ham tao 14 © public void CreatNodes(int _numNode) {} // Khéi tao node tr m&t phdng toa 46 cing c4c tham sé tuong ty class node © public void AddNode(Node node) {} // thém node méi vao dé hink © public void ChangeDistNode(Node n1, Node n2, double dist) {} //Thay 45i khoang cach gita céc node © public void DeleLightBluelArcs() {} public void AddArc(Arc arc) {} © public void AddArc(Node source, Node destination, double flow = 0.0) {} . . // Thm canh v6i cdc tham sé canh: node nguén, node dich, flow © public void ChangeFlowArc(Arc arc, double flow) {} // Thay a8i flow © public void ChangePriorityarcs() {} © public void DrawPath(Graphics Grfx, List nodes, int div =2) 0 /1 wé canh © public void CopyFromGraph(Graph _graph) {} © public void CopyToGraph(Graph _graph) {} © public void AllCopyFromGraph(Graph _graph) {} // copy toan 5$ graph téi timg ving nho © public void ClearGraph() {} © public double Totalcost() {} // Tinh téng cost o public void DrawGraph(Graphics Grfx, int draw, int div = 2) {} o protected int Compare(Arc x, Arc y){} // so sank c&c canh © public void SortDistArc(List Arcs) (} // 8p x€p cdc canh 3.3. Thuat todn 3.3.1 classMentor + Ké thira tir class Graph + Thuge tinh private double[] merit; private double[] moment; private double[] d private double W; private double C; private double R; private double MAXCOST = ooco000 + Operator © private void FindAcessNode(Node node) {} 15 3.3.2. Class + Thuge tinh: + Operator: /{chua add canh nhe. moi chi chinh nut truy cap thoi public void Process (Graph _graph, double _W = 4.0, double “C= 2.0, double R = 0.3) {} 7/ ham nay cé 1A HAc @inh node backbone va node trung tam public Mentor () () // ham tac Prim — Dijkstra private int{] convertIndex; 7/anh xa nguoc. tu index cua node => thu tu Luu trong List node (chu y 1a gio no khong theo thu tu) const int ve = 2800022000; private double alpha; private int starts private double[] label; private bool[] frees public double[] dist; public int{] predj public Prinbijkstra() (} 71 Vhugt toan chinh 3.3.3. Class Floyd — Warshall ‘Tim dung di ngan nhat, gira 2 node bat ki, luu vao mang sp_dist, luu lai truy vét sp_pred va s6 node dé di t6i node dich sp_hop. + Thudc tinh: ° +Operator: 3.3.4 Class private int[] convertIndex; //anh xa nguoc. tu index cua node => thu tu luu trong List nede (chu y la gio no khong thee thu tu) const double ve = 20000000000; private double[,] sp_dist; private int[,] sp_pred, private int[,] sp_hop; public void Process (Graph _graph, double[,] _sp_dist, intl,] _sp_pred, int{,] _sp_hop)i} //Tha tYc xix ly xi ly chEnhy thao téc trén dé thi graph. /fia 9: va _sp dist, sp pred, _sp_hop ISP Trién khai thuat toan ISP: 16 + Thuge tinh © private int[] convertIndex; //anh xa nguoc. tu index cua node => thu tu luu trong List node (chu y la gio no khong theo thu tu) private List findAre; private double[,] sp_dist; private int[,] sp_pred, private int[,] sp_hop; private List d_list; private List s_list; private List req_len; private double esilon = 0.001; oooo ° private double d; // = 1.0 neu muon cho qua 100%. o private double alpha; © private double[,] NA 9 double(] LW; © public int maxNumberofadd © private int numberOfAdd - 0 + Operator: © private bool ChangedDistarc (Arc are) () //84t gia tri che canh (ni, nj) © public void UpdatePath(int src, int des, double Flow) () //Trén duéng di tk node ni dén node nj thi tAt cA cée canh dugc update luu lugng méi, cdc dinh duge update trong sé méi © public void UpdateFlowGraph () {} //Update tit ca cdc cap (ni, nj). Tha tuc nay sé got void UpdatePath © private int CompareHop(Arc x, Arc y){} 7/50 sénh cdc c&p dinh (ni, nj) theo sé lugng bude nhay © public void Process (Graph _graph, double alpha = 0.4, Gouble _d = 0.5){) //Xi 1fchinh trén dé thi backbone voi cdc tham sé alpha va d © private void FindPath(int sre, int des) {} //¥im dung @i ng&t nh&t gitia 2 node backbone (optional) 7 void MainFindPath (Node sre, Node des, _path) () //Tim dubng di gita 2 node p&t ki (optional). Thi tye nay goi void Findpath() {} 3.4, Form chinh Hinh 3.4.1. Giao dign chinh ctia chuong trinh & Cac chite ning: 1. Chon cde thong sé déu vio. 18 thap sé Iwgng node (mic dinh 14 90). Chuong trinh sé tao ra N node duge anh s6 tir 0 dén N-1. - Lya chon cc théng s6 dau vao: © H@ sé ar ding trong thuat toan Mentor oR: Ban kfnh cla mang truy nhap oD: Hé s6 sir dung ding trong thuat toan Mentor oai ra, gid tr] W: ngudng dé Iya chon node Backbone xac djnh theo dit ctia bi 2. Thye hign Sau khi thiét lap cdc théng sé, tai Box Control, ta lan Iuot thye hién cdc chite nang can thiét: Mentor: Xéc dinh 4c node Backbone va node truy nhap © PrimDijkstra: Thiét lap mang gitta cdc node Backbone © Next: Thém during (theo thuat toan Mentor 2) © Back: Quay tro vé trang thai truéc khi Next (a) (b) Hinh 3.4.2. (2a) Lica chon thong sé dau vdo (2b) Thue hign 19 Hinh 3.4.3. Thay déi cée thong s6 ~ Dé hign thi cdc thud tinh gitta céc mit mang: chi phi, hru hrong, W, Cyias, hay dudng qué (ai ta dinh dau vao cdc 6 tréng nhé bén canh nhiing thugc tinh mudn HE P| P| | tee) (b) xem, (a) c (c) 20 Hinh 3.4.4. Th tinh mang va thiét lap Chwong trinh cén cho phép tim duéng gitta 2 mit bat ky durge néi véi nhau nh hinh 1 1a ntit 67 va 16 4 Kéluan Qua bai tp 1én nay, ching em da phan ndo hiéu r6 hon vé thudt toan MENTOR va cach hinh thanh cay theo thuat ton MENTOR citing nhu xay dung cay PST va MST. Dac biét, ching em cé co héi lam vige trén ng6n ngit lap tinh C#, m6t ng6n ngit khé manh trong lap trinh hung d6i tugng voi dé hoa tot. Qua bai tép 16n, ching em mét lan nia phat huy va rén luyén ky nang kim vige nhém va déc lap cho méi c4 nhan. Tuy nhién, nhém cing 6 nhiéu han ché chua lam durgc trong bai tap lén nay, 6 1a méi chi ip trinh duge mang Backbone, chua lp trinh duge mang Access (tray nhép) Do thai gian c6 han, nén qué trinh thyc hign khéng tranh khdi sai s6t hode chua duge nhu mong muén. Ching em xin hita sé 1am tét hon vao cae bai tap lon khac. Ching em xin cim on ¢6 Tran Ngoc Lan da gitip d@ ching em trong qué tinh thye hign bai tp én nay. 21

You might also like