Bài giảng Cấu trúc dữ liệu và giải thuật - ĐH Thương Mại

40 11 0
Bài giảng Cấu trúc dữ liệu và giải thuật - ĐH Thương Mại

Đ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

Bài giảng Cấu trúc dữ liệu và giải thuật gồm các nội dung chính được trình bày như sau: Tổng quan về giải thuật và Cấu trúc dữ liệu, một số cấu trúc dữ liệu cơ bản, cây và Cây tìm kiếm, một số giải thuật sắp xếp và tìm kiếm

8/15/2017 Gi i thi u h c ph n C U TRÚC D S tín ch : M c tiêu: Cung c p LI U VÀ GI I THU T  Các ki n th c c b n v c u trúc d li u thu t toán  K n ng l a ch n xây d ng c u trúc d li u thu t toán h p lý U M _T TM H D B môn: Tin h c Khoa H th ng Thông tin Kinh t & Th ng m i n t TƠi li u tham kh o Gi i thi u h c ph n N i dung chính: Ch Ch Ch Ch R Sedgevick, Algorithms Addison-Wesley, B n d ch ti ng Vi t: C m nang thu t toán (t p 1, 2) ng 1: T ng quan v gi i thu t CTDL ng 2: M t s c u trúc d li u c b n ng 3: Cây Cây tìm ki m ng 4: M t s gi i thu t s p x p tìm ki m  Xuân Lôi, C u trúc d li u gi i thu t Lê Minh Hoàng, Bài gi ng chuyên đ H S àm, C u trúc d li u gi i thu t 1 8/15/2017 Ch ng T ng quan v gi i thu t vƠ CTDL 1.1 C u trúc d li u (Data Structures) 1.1.1 Khái ni m chung 1.1.2 Vai trò c a CTDL 1.1.3 M t s c u trúc d li u c b n 1.1 C u trúc d li u 1.2 Gi i thu t U M _T TM H D 1.1.1 Khái ni m chung Ví d Cơy ph h : M c tiêu c a tin h c? D li u gì? Ki u d li u ? Khái ni m chung: CTDL m t cách th hi n t ch c d li u máy tính cho đ c s d ng m t cách có hi u qu nh t Khái ni m khác: CTDL m t d li u ph c h p, g m nhi u thành ph n d li u, m i thành ph n ho c d li u c s ho c m t CTDL đ c xây d ng Các thành ph n d li u t o nên m t CTDL đ c liên k t v i theo      Ơng A l y bà B có hai trai C, D m t gái E Ơng C k t v i F có hai m t trai G m t gái H Ơng D khơng l p gia đình Cơ E l y ơng I có hai gái K,L m t trai M … m t cách 2 8/15/2017 1.1.2 Các v n đ liên quan 1.1.2 Vai trò c a CTDL T m quan tr ng c a vi c l a ch n CTDL Các tiêu chu n l a ch n CTDL  T ch c d li u: d li u vào/ra/trung gian  Xây d ng gi i thu t Các cách cài đ t khác Th c hi n thao tác thu n l i/khôngthu n l i  CTDL thay đ i  Thu t toán thay đ i  CTDL ph i bi u di n đ c đ y đ thông tin c a toán ( ph n ánh th c t )  Cài đ t đ c máy tính ngơn ng l p trình s d ng U M _T TM H D  Phù h p v i thao tác c a thu t toán (đ c bi t thao tác đ c s d ng nhi u)  phát tri n thu t toán đ n gi n đ t hi u qu  Ti t ki m tài nguyên 1.1.3 M t s c u trúc d li u c b n       10 M ng (Array) M ng (array) B n ghi (record)/c u trúc (struct) T p h p (set) T p (file) Xâu (string) ….(danh sách liên k t, cây, b ng b m, …) 11 12 3 8/15/2017 1.2 Gi i thu t (Algorithm) C u trúc - Struct (structure) 1.2.1 Khái ni m chung 1.2.2 Ngôn ng di n đ t gi i thu t 1.2.3 Thi t k vƠ phơn tích gi i thu t 1.2.4 Gi i thu t đ quy U M _T TM H D 13 14 1.2.1 Khái ni m chung  Thu t toán m t dãy h u h n b c đ c s p x p theo m t tr t t xác đ nh, m i b c mơ t xác phép tốn ho c hành đ ng c n th c hi n, đ gi i quy t m t v n đ 15 16 4 8/15/2017 1.2.1 Khái ni m chung 1.2.2 Ngôn ng di n đ t gi i thu t Cách li t kê: li t kê b c c n th c hi n S đ kh i: s d ng hình kh i oval, ch nh t, hình thoi m i tên,… Ngơn ng l p trình: dùng ký hi u quy t c c a ngơn ng l p trình Gi ngôn ng : k t h p gi cú pháp c a ngơn ng l p trình ngơn ng t nhiên Các tính ch t (đ c tr ng) c a thu t tốn: Tính vào (input) Tính (output) Tính đ n đ nh (xác đ nh / đ n ngh a) Tính đ n Tính d ng (tính k t thúc / tính đóng) Tính ph d ng Tính kh thi/hi u qu U M _T TM H D        17 1.2.2 Ngôn ng di n đ t gi i thu t Ví d : 18 1.2.2 Ngơn ng di n đ t gi i thu t - Input: N nguyên d ng, dãy a 1, , an - Output: Tìm Max c a dãy cho Ý t ng: Gi thi t Max = a1 V i m i i, n u > Max thay giá tr Max= 19 Cách li t kê B c Nh p N dãy a1, , an B c t Max = a1, i = 2; B c N u i > N đ n B c 5; B c 4.1 N u > Max Max = 4.2 t i=i+1 r i quay b c 3; B c a Max r i k t thúc 20 5 8/15/2017 1.2.2 Ngôn ng di n đ t gi i thu t 1.2.2 Ngôn ng di n đ t gi i thu t Dùng ngơn ng l p trình ( C): int max(int *x,int n) //hàm tìm max { // n th hi n đ dài m ng x int result; result=x[0]; for (int i=1;iright); } } 109  Ch ng Cây 3.3.1 Duy t cơy 3.3.1 Duy t cơy void inorder (btree t){// t th t gi a if (t==NULL) exit(0); else { inorder(t->left); void endorder(btree t){// t th t sau if (t==NULL) exit(0); else { endorder(t->left); endorder(t->right); printf(“gia tri %d”,t->data); printf(“gia tri %d”,t->data); inorder(t->right); } } } Ch ng Cây 110 } 111 Ch ng Cây 112 28 8/15/2017 3.3.1 Duy t cơy 3.3.2 Tìm ki m  ng d ng c a phép t cơy     ng Cây U M _T TM H D Ch Tìm ki m cơy nh phơn  Áp d ng phép t đ tìm nút th a mã m t u ki n cho tr c  Phép tìm ki m có th d ng m t nút th a mãn đ c tìm th y tùy thu c vào u ki n tìm ki m  Phép tìm ki m nh phân thơng th ng có đ ph c t p t ng đ ng v i phép t Tính chi u cao c a Tính s nút/s nút c a Tính kích th c c a … 113 Ch ng Cây 3.3.2 M t s phép toán khác 3.4 Cơy tìm ki m M t s phép toán khác cơy nh phơn  Thêm m t nút vào nh phân  B t m t nút nh phân  Sao chép  Ghép m t thành nhánh m t khác Ch ng Cây 114 3.4.1 Khái ni m 3.4.2 Cài đ t phép tốn tìm ki m 115 Ch ng Cây 116 29 8/15/2017 3.4.1 Khái ni m 3.4.1 Khái ni m Ch ng Cây 117 3.4.2 CƠi đ t vƠ phép toán cơy tìm ki m Bi u di n gi ng nh bi u di n nh phân nói chung Các phép toán:     Ch Ch ng Cây 118 3.4.2 CƠi đ t vƠ phép toán cơy tìm ki m Phép tìm ki m:Có nút ch a giá tr b ng khóa? Gi i thu t:  B t đ u t g c, so sánh giá tr nút v i khóa:  B ng K t thúc  Nh h n  th c hi n trái  L n h n  th c hi n ph i Tìm ki m Phép chèn Phép xóa T o m t nh phân tìm ki m ng Cây Ví d U M _T TM H D Cây nh phân tìm ki m m t nh phân mà m i nút c a đ u đ c gán m t giá tr khóa m i nút ph i th a mãn: Giá tr c a nút c a trái nh h n giá tr c a nút g c; Giá tr c a nút ph i l n h n giá tr c a nút g c; Cây trái ph i c ng tìm ki m nh phân Các giá tr khóa khác 119 Ch ng Cây 120 30 8/15/2017 3.4.2 CƠi đ t vƠ phép tốn cơy tìm ki m Phép chèn thêm m t ph n t có giá tr x Gi i thu t:  N u nút x nút ta ch c n “c t b ” x Xin c p b nh cho m t nút m i, Gán giá tr m i vào tr ng Data c a nút m i Gán giá tr Null cho tr ng Left Right c a nút m i g c, đ i sánh v i giá tr m i c n thêm vào: N u b ng  k t thúc Ng c l i  t theo trái (n u ) 4 2 Ch ng Cây 121 3.4.2 CƠi đ t vƠ phép tốn cơy tìm ki m  N u x có m t hai r ng u ch nh l i tr c a nút cha c a x b ng cách tr ng liên k t t ng ng thay tr đ n x bây gi tr t i nút g c c a nh t c a x gi i phóng b nh c p cho x 4 Ch ng Cây 122 3.4.2 CƠi đ t vƠ phép tốn cơy tìm ki m Phép xóa  N u nút x có hai (có g c t ng ng x1 x2) m t hai (ch ng h n x1) khơng có ta thay nút x1 làm nút cha c a có g c x2 Ta thay đ i tr ng liên k t nh sau:  Tr ng liên k t nút cha c a x thay tr t i x tr t i nút x1  Tr ng liên k t c a nút x1 thay null tr vào nút x2  U M _T TM H D    T   3.4.2 CƠi đ t vƠ phép toán cơy tìm ki m Phép xóa  1 3 6 Ch ng Cây 9 123 Ch ng Cây 124 31 8/15/2017 3.4.2 CƠi đ t vƠ phép tốn cơy tìm ki m   Tr ng h p t ng quát: Thay giá tr c a x b ng giá tr nút bên ph i c a trái (ho c b ng giá tr nút bên trái c a ph i) C t b nút có giá tr v a gán cho nút x Vì nút đ c l a ch n đ thay th bên ph i/ trái nên khơng th có hai con, vi c c t b s th c hi n theo cách nêu 4 8 U M _T TM H D 7 Ch ng Cây 3.4.2 CƠi đ t vƠ phép tốn cơy tìm ki m Ch 125 3.4.2 CƠi đ t vƠ phép toán cơy tìm ki m Phép xóa ng Cây 126 3.4.2 CƠi đ t vƠ phép toán cơy tìm ki m Phép xóa 4   5 ng Cây 9 Ch 127 Ch ng Cây 128 32 8/15/2017 3.4.2 CƠi đ t vƠ phép tốn cơy tìm ki m Ch ng Cây ng 4.1 BƠi toán s p x p vƠ m t s ph ng pháp s p x p đ n gi n 4.1.1 Khái quát v s p x p 4.1.2 S p x p l a ch n 4.1.3 S p x p chèn 4.1.4 S p x p n i b t 4.1.5 ph c t p c a phép s p x p c b n 4.2 BƠi toán tìm ki m 4.2.1 Tìm ki m tu n t (Sequential Searching) 4.2.2 Tìm ki m nh phân (Binary Searching) 4.2.3 ph c t p U M _T TM H D T t c thao tác Search, Insert, Del đ u có đ ph c t p trung bình O(h), v i h chi u cao c a Trong tr ng h p t t nh t, nh phân tìm ki m đ y đ có n đ nh s có đ cao h = log(n) Chi phí tìm ki m s t ng đ ng tìm ki m nh phân m ng có th t Trong tr ng h p x u nh t, có th b suy bi n thành danh sách liên k t (khi mà m i đ nh đ u ch có tr đ nh lá) Các thao tác có đ ph c t p O(n) Ch 129 4.1 Bài toán s p x p m t s ph pháp s p x p đ n gi n 130 C u trúc d li u gi i thu t ng 4.1.1 Khái quát v s p x p  4.1.1 Khái quát v s p x p 4.1.2 S p x p l a ch n (Selection Sort) 4.1.3 S p x p chèn (Insertion Sort) 4.1.4 S p x p n i b t (Bubble Sort) 4.1.5 ph c t p c a phép s p x p đ n gi n   S p x p q trình b trí l i ph n t c a m t t p đ i t ng theo th t nh t đ nh (t ng ho c gi m d n) Ví d :  {1,9,7,2,5}  {1,2,5,7,9}  { “D ng”, “H ng” ,“An”, “Bình” } {“An”, “Bình”, “D ng”, “H ng”} 131 C u trúc d li u gi i thu t C u trúc d li u gi i thu t 132 33 8/15/2017 4.1.1 Khái quát v s p x p 4.1.1 Khái quát v s p x p   Vi c s p x p m t toán ph bi n tin h c  Do yêu c u tìm ki m thu n l i, s p x p k t xu t cho b ng bi u,… D li u th ng đ c t ch c thành b n ghi  M i b n ghi th ng có m t s tr ng d li u khác  Tr ng tham gia trình tìm ki m g i khóa  Khóa s p x p    M t b ph n c a b n ghi bi u di n đ i t ng đ c s p x p Khóa s đ c s d ng đ xác đ nh th t s p x p b n ghi m t t p b n ghi B ng khóa   S d ng s p x p mu n h n ch vi c di chuy n d li u M t t p h p b n ghi ch ch a tr ng:    ng d li u t ng ng Th t b n ghi b ng khóa cho phép xác đ nh th t b n ghi d li u U M _T TM H D C u trúc d Khóa: Ch a khóa s p x p Link: Con tr ghi đ a ch c a b n ghi đ i t li u gi i thu t 133 C u trúc d 4.1.1 Khái quát v s p x p M t s ph li u gi i thu t 134 4.1.1 Khái quát v s p x p ng pháp s p x p Các đ c tr ng c a thu t toán s p x p:  Tính n đ nh c a thu t tốn s p x p • Các ph n t có khóa s gi nguyên th t t đ i c a chúng nh tr c s p x p ng  Tính t i ch : Thu t tốn địi h i khơng gian nh ph lƠ h ng s (không ph thu c vƠo s l ng ph n t dƣy c n s p)  135 C u trúc d li u gi i thu t 136 C u trúc d li u gi i thu t 34 8/15/2017 4.1.1 Khái quát v s p x p BƠi toán s p x p đ sau:   c đ n gi n hóa d 4.1.2 S p x p l a ch n (Selection Sort) Ý t i d ng nh ng:  T im i l u vào: M t dãy s ngun (các khóa) u ra: M t hốn v c a dãy s cho giá tr khóa đ c s p x p theo th t t ng d n ch a đ t, ch n ph n t nh nh t s ph n t c s p a ph n t đ c ch n vào v trí b ng phép đ i ch  Sau l t th i (i = n-1), dãy c n s p coi nh đ c chia U M _T TM H D thành ph n: • Ph n s p: t v trí  i • Ph n ch a s p: t v trí i +1  n 137 C u trúc d li u gi i thu t 4.1.2 S p x p l a ch n (Selection Sort)  Ví d : s p x p dƣy sau theo th t t ng d n: A = { 12, 5, 3, 10, 18, 4, 9, 16} L t1 L t2 L L L t5 L t6 L 5 4 4 4 12 12 5 5 10 10 10 10 9 9 18 18 18 18 18 10 10 10 4 12 12 12 12 12 9 9 10 18 18 16 16 16 16 16 16 16 16 18 li u gi i thu t t4 C u trúc d t3 12 t7 139 138 C u trúc d li u gi i thu t 4.1.2 S p x p l a ch n (Selection Sort) void SELECTION-SORT(int A[], int n) { int i; for (i = ; i & A[j-1] > val) { A[j] := A[j-1]; j := j -1; } // Chèn ph n t A[i] vƠo v trí thích h p A[j] := val; } } Ý t ng:  Dãy c n s p đ c chia thành ph n: m t ph n s p, l i ph n ch a s p  Thông qua phép đ i ch , t i m i l t ph n t nh nh t ph n ch a đ c s p s đ c “đ y d n” lên tr c cu i nh p vào ph n đ c s p 144 C u trúc d li u gi i thu t 143 C u trúc d li u gi i thu t 36 8/15/2017 4.1.4 S p x p n i b t (Bubble Sort) 4.1.4 S p x p n i b t (Bubble Sort)  Ví d : s p x p dƣy sau theo th t t ng d n: void BUBBLE-SORT(int A[], int n) { for ( int i = 1; i< n-1; i++ ) { A = { 12, 5, 3, 10, 18, 4, 9, 16} L t1 L t2 L t3 L t4 L t5 L t6 L // Duy t t cu i dƣy t7 for ( int j = n-1 ; j>i; j ) 12 3 12 4 4 4 12 5 5 /* Ki m tra ph n t k c n nhau, n u ng đ i ch */ 10 12 9 9 if (A[j] < A[j-1]){ 18 10 9 12 10 10 10 18 10 10 10 12 12 12 9 18 16 16 16 16 16 16 16 16 18 18 18 18 18 3 3 li u gi i thu t } } } 145 4.1.5 li u gi i thu t 4.1.5  Th i gian th c hi n thu t tốn: c s p x p • Tr ng h p x u nh t: • Tr ph c t p th i gian trung bình: O(n2) li u gi i thu t c s p x p – phép đ i ch , ch th c hi n n(n-1)/2 phép so sánh ng h p x u nh t: – n(n-1)/2 phép so sánh đ i ch  C u trúc d ng h p t t nh t: – Dãy ban đ u đ – n-1 phép đ i ch , n(n-1)/2 phép so sánh  ph c t p  S p x p chèn t i ch n đ nh ng h p t t nh t: – phép đ i ch , ch th c hi n n(n-1)/2 phép so sánh • Tr 146 S p x p chèn (Insertion Sort)  Th i gian th c hi n thu t toán: – Dãy ban đ u đ C u trúc d ph c t p S p x p l a ch n (Selection Sort) • Tr c th t int X:= A[j]; A[j] := A[j-1]; A[j-1] := X; U M _T TM H D C u trúc d 147 C u trúc d ph c t p th i gian trung bình: O(n2) li u gi i thu t 148 37 8/15/2017 4.1.5 ph c t p 4.2 Bài toán tìm ki m 4.2.1 Khái quát v tìm ki m S p x p n i b t (Bubble Sort) 4.2.2 Tìm ki m tu n t (Sequential Searching)  Th i gian th c hi n thu t toán: • Tr 4.2.3 Tìm ki m nh phơn (Binary Searching) ng h p t t nh t: – Dãy ban đ u đ 4.2.4 c s p x p ph c t p – phép đ i ch , ch th c hi n n(n-1)/2 phép so sánh • Tr ng h p x u nh t: U M _T TM H D – n(n-1)/2 phép so sánh đ i ch ph c t p th i gian trung bình: O(n2)  C u trúc d li u gi i thu t 149 4.2.1 Khái quát v tìm ki m 150 C u trúc d li u gi i thu t 4.2.2 Tìm ki m tu n t (Sequential Searching)  Tìm ki m lƠ thu t tốn tìm ph n t có giá tr cho tr c m t t p ph n t Tìm ki m tu n t  Các ph n t t p đ u vào không đ ki m c s p x p theo khóa tìm Mơ t  Duy t dãy (danh sách, hàng đ i , v…v ) ch a ph n t t p   So sánh v i khóa c n tìm t i tìm th y khóa ho c t qua h t m ng mà ch a tìm th y Khóa tìm ki m: M t b ph n c a ph n t t p mƠ giá tr c a đ c s d ng đ so sánh vƠ tìm ki m  Tr l i ch s ph n t dãy (n u th y) 151 C u trúc d li u gi i thu t 152 C u trúc d li u gi i thu t 38 8/15/2017 4.3.2 Tìm ki m tu n t 4.2.2 Tìm ki m tu n t  Gi i thu t tìm ki m tu n t không ph thu c vào th t c a ph n t m ng, v y đơy ph ng pháp t ng quát nh t đ tìm ki m m t dãy b t k Function SEQUENTIAL(A, n, key) {tìm ph n t có khóa key m ng A g mn ph n t K t qu tr ra: -1 n u không tìm th y ph n t có khóa key, ch s c a ph n t n u tìm th y}  M t thu t tốn có th đ c cài đ t theo nhi u cách khác nhau, k thu t cài đ t nh h ng nhi u đ n t c đ th c hi n i:= 1; while (i n) then return -1 { không th y}; li u gi i thu t  Tr ng h p t t nh t: O(1)  Tr ng h p t i nh t: O(n)  Tr ng h p trung bình: O(n) 4.2.3 Tìm ki m nh phơn (Binary Searching) Tìm ki m nh phơn  S d ng cho vi c tìm ki m m ng đ s px p  Mô t 154 153 C u trúc d li u gi i thu t 4.2.3 Tìm ki m nh phơn Function BINARY-SEARCH(A,l, r, key) c if (l> r) return -1; m = (l+r) /2 ; if (A[m] = key ) then • Ch n ph n t “ gi a” dãy – A[k] đ th c hi n so sánh v i giá tr c n tìm return m ; else if (A[m] > key) then • N u key = A[k] tìm th y, k t thúc return BINARY-SEARCH(A,l,m-1,key); • N u key < A[k] tìm n a đ u c a m ng cho • N u key > A[k] tìm n a sau c a m ng cho else return BINARY-SEARCH(A, m+1, r, key); 155 C u trúc d li u gi i thu t C u trúc d li u gi i thu t 156 39 8/15/2017 4.2.3 Tìm ki m nh phơn 4.2.3 Tìm ki m nh phơn void BINARY-SEARCH(int A[], int l, int r, int key) { if (l> r) return -1; m = floor ((l+r) /2) ; if (A[m] == key ) return m ; else if (A[m] > key) return BINARY-SEARCH(A,l,m-1,key); U M _T TM H D else return BINARY-SEARCH(A, m+1, r, key); } C u trúc d void BINARY-SEARCH(int A[], int n, int key) { int l=0, r = n-1 ; while ( l A[m]) l= m+1 else return m; } return -1; // Không tìm th y } li u gi i thu t 4.2.4 157 C u trúc d li u gi i thu t 158 ph c t p  Tìm ki m d a vào quan h giá tr c a ph n t m ng đ đ nh h ng trình tìm ki m, v y ch áp d ng đ c v i dãy đƣ có th t  Tìm ki m nh phân tìm ki m nhanh h n tìm ki m tu n t  Tuy nhiên áp d ng thu t gi i nh phân c n ph i quan tâm đ n chi phí cho vi c s p x p m ng Vì m ng đ c s p th t r i m i tìm ki m nh phân 159 C u trúc d li u gi i thu t 40 ... th t sau if (t==NULL) exit(0); else { endorder(t->left); endorder(t->right); printf(“gia tri %d”,t->data); printf(“gia tri %d”,t->data); inorder(t->right); } } } Ch ng Cây 110 } 111 Ch ng Cây 112... /* Tìm v trí thích h p đ chèn ph n t A[i] ph n đƣ s p- ch a ph n t t v trí đ n i-1 */ while ( j > & A[j-1] > val) { A[j] := A[j-1]; j := j -1 ; } // Chèn ph n t A[i] vƠo v trí thích h p A[j] :=... phép đ i ch , ch th c hi n n(n-1)/2 phép so sánh ng h p x u nh t: – n(n-1)/2 phép so sánh đ i ch  C u trúc d ng h p t t nh t: – Dãy ban đ u đ – n-1 phép đ i ch , n(n-1)/2 phép so sánh  ph c t

Ngày đăng: 11/05/2021, 02:32

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan