Chương 4: Độ phức tạp của các giải thuật đồ thị pps

76 285 0
Chương 4: Độ phức tạp của các giải thuật đồ thị pps

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Ch ng ph c t p c a gi i thu t th N i dung Các gi i thu t th c n b n th có tr ng s th có h ng 1.Các gi i thu t th c n b n Có nhi u tốn c nh ngh a theo k t n i gi a i t ng y it ng th m t i t ng tốn h c mà mơ t nh ng M t toán nh v y Các ng d ng l nh v c: Giao thông Vi n thông i nl c M ng máy tính C s d li u Trình biên d ch Các h i u hành th Lý thuy t M t thí d A H B C D I G E J K F L Hình M t M th thí d Thu t ng M t th m t t p nh c nh Các nh nh ng i t ng n mà có th có tên có m t s tính ch t khác c nh ng k t n i gi a hai nh M t l i i t x n y m t th m t danh sách c k t n i nh nh ng nh mà nh ng nh k ti p vào nh ng c nh th M t th liên thơng n u có m t l i i t m i nút n th M t th mà không liên thông m t nút khác bao g m nhi u thành ph n liên thông M tl i i l p l i n m t l i i mà ó khơng có nh Thu t ng (tt M t chu trình cycle m t l i i tiên nh cu i trùng quay v nó) M t th khơng có chu trình nhóm khơng liên thơng n ngo i tr nh u t l i i t m t nh c g i (tree) M t c g i r ng ( forest ) Cây bao trùm c a m t th m t th mà ch a t t c nh nh ng m t s c nh ch m n m i nh G is nh m t th V, s c nh E, s c nh c a th có th có t n V (V-1)/2 (Ch ng minh truy ch ng) th có t t c m i c nh hi n di n gi a m i c p g i th y (complete graphs) nh c Thu t ng Các (tt th v i s c nh t ng i c g i th th a; th v i ch m t s c nh m t i c g i th dày th mô t cho n gi nh ng th vô h ng Các undirected graphs Trong th có tr ng s weighted graphs , nh ng giá tr s (tr ng s ) c g n vào m i c nh di n t thí d kho ng cách hay chi phí Trong th có h ng (directed graphs) c nh l m t chi u : m t c nh i t x sang y ch khơng ph i i t y sang x th có h ng, có tr ng s cịn c g i m ng Các (networks) Cách bi u di n Ta ph i ánh x tên t m tr gi a V th nh thành nh ng s nguyên Gi s có t n t i hai hàm: - hàm index: chuy n i t tên nh thành s nguyên - hàm name: chuy n i s nguyên thành tên nh th : Có hai cách bi u di n - dùng ma tr n k c n - dùng t p danh sách k c n Cách bi u di n ma tr n k c n A A B C D E F G H I J K L M B 1 0 0 0 0 0 C 1 0 0 0 0 0 D 0 1 0 0 0 E F G 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 H 0 0 0 1 0 0 I J K 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 L M 0 0 0 0 0 0 0 0 0 1 0 1 1 M t ma tr n V hàng V c t ch a giá tr Boolean mà a[x, y] true if n ut nt im t nh x n c nh t nh y false n u ng c l i Hình 4.1b: Ma tr n k c nc a th hình 4.1a Ghi v cách bi u di n ma tr n k c n M i c nh t ng ng v i bit ma tr n: m i c nh n i gi a x y c bi u di n b ng giá tr true t i c a[x, y] a[y, x] ti n l i gi nh r ng có t n t i m t c nh n i m i nh v L i bi u di n ch thích h p th d y 10 S p th t tơpơ1 (Ph ng pháp Có vài ph ng pháp s p th t tôpô Ph ng pháp Ý t ng c n b n tìm m t nút khơng có nút i sau (no th a vào m t danh successor) lo i b kh i sách L p l i trình cho n th r ng s sinh m t c th t tôpô danh sách o ng c danh sách ta s Algorithm: while aph has a node with no successors remove one such node from the graph and add it to the end of a list if the loop terminates with the graph empty then the list shows the reserse of a topological order else the graph contains a cycle 62 Hình 4.8 S p th t tôpô b ng ph ng pháp A H B D C I G E J K F L J D E F K L M A I H G G H I A E M F M L D K B J C 63 Ph ng pháp (s p x p tôpô chi u sâu tr c ú ó ú nh stack ê ú ì tìm ki m theo ú m t ph n t t Algorithm: Start with nodes with no predecessor, put them in the stack while the stack is not empty if the node at top of the stack has some successors then push all its successors onto the stack else pop it from the stack and add it to the list 64 10 7 7 7 10 2 1 7 10 ình 4.9 S p th th tôpô 10 10 b ng ph ng pháp 2 2 1 1 7 7 7 65 B i toán nh ng l i i ng n nh t t m t é nh ng l i i ng n nh t t m t -source shortest-paths problem): nh ngu n nh ngu n Cho m t th G = (V, E), mu n tìm m t l i i ng n nh t t m t nh ngu n ó s V n m i nút v V Bi u di n nh ng l i i ng n nh t Chúng ta mu n tính khơng ch tr ng s c a nh ng l i i ng n nh t mà xác nh nh ng nh nh ng l i i ng n nh t th G = (V, E), ta trì cho m i nh v V m t Cho m t nh i tr c p[v] mà m t nh khác NIL Gi i thu t gán tr cho thu c tính p cho d y nh i tr c xu t nh v s cho l i i ng n nh t t s n v phát t 66 Nh ng l i i ng n nh t v s n i l ng ì s n i l ng relaxation ù ê ê ê , v i m i nh v V, ta trì thu c tính d[v], mà c n nh ngu n s n v c a tr ng s c a m t l i i ng n nh t t Ta g i d[v] c l ng l i i ng n nh t (shortest path estimate) Quá trình n i l ng m t c nh (u, v) bao g m vi c th xem ta có th c i thi n l i i ng n nh t n v mà ang tìm th y b ng cách i qua u n u nh v y, ta c p nh t d[v] p[v] M t b c n i l ng s làm gi m c l ng l i i ng n nh t d[v] c p nh t thu c tính p[v] 67 u v Relax(u, u u v v Relax(u, ( u v ( ì 4.10: S n i l ng c a m t c nh 68 Gi i thu t Dijkstra tr ó , có tr ng s G = (V, E) ng h p tr ng s c a c nh tr không âm Gi i thu t trì m t t p S c a nh mà tr ng s c a nh ngu n c xác nh Ngh a l i i ng n nh t t là, v i m i nh v S, ta có d[v] = min( cl ng l i i ng n nh t t s n v) Gi i thu t liên ti n ch n nh u V – S v i thu c tính d nh nh t, a u vào S, n i l ng m i c nh i t u Trong gi i thu t sau ây, ta dùng hàng i có u tiên Q ch a t t c nh V-S, l p khóa theo thu c tính d Và nh th G c di n t b ng danh sách k c n gi 69 procedure dijkstra(G, w, s); /* G is a graph, w is a weight function and s is the source node */ begin for each vertex v ∈ V[G] /* initialization */ begin d[v]: = ∞; p[s]: = NIL end; d[s]: = 0; S: = ∅; Q: = V[G] while Q is not empty begin u: = EXTRACT-MIN (Q); S: = S ∪ {u}; for each vertex v ∈ Adj [u] /* relaxation */ if d[v] > d [u] + w(u, v) then begin d[v]: = d[u] + w(u, v); p[v]: = u end end end 70 Gi i thu t Dijkstra • ì -S lam ô ô “ a vào t p S, th c s s d ng chi n l ” c tham • Gi i thu t tham lam th ng không m b o em l i l i gi i t i u tr ng h p t ng quát, nh ng i v i toán em l i nh ng l i i ng n này, gi i thu t Dijkstra th c s nh t • Gi i thu t Dijkstra t ng t nh gi i thu t Prim dùng tính bao trùm t i thi u Nó c ng dùng m t hàng i có u tiên tìm m t nh “nh nh t” bên m t t p, a nh ó vào t p, i u ch nh l i tr ng s c a nh ng nh l i bên ngồi t p 71 M t thí d u v u v 10 10 10 s s 5 x y x y 72 u u v v 1 14 10 s 10 3 s 5 7 y 2 x 13 x y 73 u v u v 10 10 s s 5 x (s, y : (s, x : 9 x y (s, v : (s, y : 74 ph c t p c a gi i thu t Dijkstra • ó ê – í , m i thao tác EXTRACT-MIN t n O(V), có t t c |V| thao tác nh v y, ó ta có m t chi phí tính tốn cho thao tác O(V2) c a vào t p S úng m t l n, ó m i • M i nh v V nh danh sách k c n dj[v] c xét úng m t l n su t ti n trình c a gi i thu t Vì t ng s nh t t các danh sách k c n |E|, có t t c |E| b c l p cho vòng l p for, v i m i l n l p t n O(1) Th i gian tính toán c a gi i thu t O(V2 + E) = O(V2) 75 ph c t p c a gi i thu t Dijkstra • ó ê ú , m i thao tác EXTRACT-MIN t n chi phí O(lgV), có t t c |V| thao tác này, ó ta có t ng chi phí cho thao tác EXTRACT-MIN O(VlgV) Phép gán d[v]: = d[u] + w(u, v) òi h i m t thao tác c p nh t khóa c a nh v heap t n O(lgV) Có t t c |E| thao tác nh v y Do ó t ng th i gian tính tốn c a gi i thu t O(V lgV + E lgV) 76

Ngày đăng: 05/08/2014, 20:21

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan