1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng cấu trúc dữ liệu chương 1 TS trần cao đệ

26 279 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 326,8 KB

Nội dung

Ch ng 1: M U TS Tr n Cao N m 2010 T • BÀI TOÁN N CH NG TRÌNH Mô hình hóa toán – Xác đ nh toán c n gi i quy t: • • ph i làm gì? làm nh th nào? – Hình th c hóa toán: phát bi u l i toán th c t thành m t toán hình th c (hay g i mô hình toán) Ví d 1: Tô màu b n đ th gi i • • • M i n c đ u đ c tô m t màu Hai n c láng gi ng (có biên gi i chung) ph i đ c tô b ng hai màu khác Hãy tìm m t ph ng án tô màu n c b n đ cho s màu s d ng nh t • Mô hình hóa toán tô màu – tìm cách bi u di n toán m t cách tr u t ng h n đ g t b chi ti t không c n thi t • Ghi l i t t c n c b n đ • M i quan h “láng gi ng” gi a hai n c – M t cách mô hình hóa là: • M i n c nh m t m; • Hai n c có chung biên gi i ta s v m t đ ng n i hai m t ng ng • B n đ th gi i m i quan h láng gi ng gi a n c đ c bi u di n b ng m t đ th (graph): – m i đ nh m t n c, – hai n c có biên gi i chung s đ c n i v i b i m t cung Bài toán tô màu cho b n đ th gi i tr thành: •Tìm cách tô màu cho t t c đ nh đ th cho hai đ nh có c nh n i ph i đ c tô b ng hai màu khác •S màu đ c s d ng nh t Ví d 2: èn giao thông • Cho ngã n m nh hình, C E đ ng m t chi u • Hãy thi t k m t b ng đèn hi u u n giao thông t i ngã n m m t cách h p lý: – phân chia l i t i ngã n m thành nhóm, m i nhóm g m l i có th đ ng th i nh ng không x y tai n n giao thông – s l ng nhóm nh t có th đ c Mô hình hóa • Ghi nh n t t c l i đi: AB, AC, AD, BA, BC, BD, DA, DB, DC, EA, EB, EC, ED • Ghi nh n m i liên quan gi a l i đi: – Hai l i không th đ ng th i s đ c v cung n i • Bài toán tr thành: Tô màu lên đ nh c a đ th – Các l i cho phép đ ng th i s có m t màu – Hai đ nh có c nh n i s không đ c tô màu – S nhóm nh t: s màu đ c dùng nh t Nh n xét • Hai toán th c t : “tô màu b n đ th gi i” “đèn giao thông” xem r t khác bi t nh ng sau mô hình hóa, chúng th c ch t ch m t, toán “tô màu đ th ” • Nhi u toán mô hình toán – Gi i mô hình toán å gi i nhi u toán hay gi i m t l p toán Gi i thu t (algorithms) • Khi có mô hình cho m t toán: – Tìm cách gi i quy t toán mô hình – Tìm m t gi i thu t: m t chu i h u h n ch th (instruction) mà m i ch th có m t ý ngh a rõ ràng th c hi n đ c m t l ng th i gian h u h n • Knuth (1973) đ nh ngh a gi i thu t: m t chu i h u h n thao tác đ gi i m t toán • Các tính ch t quan tr ng c a gi i thu t là: – H u h n (finiteness): gi i thu t ph i luôn k t thúc sau m t s h u h n b c – Xác đ nh (definiteness): m i b c c a gi i thu t ph i đ c xác đ nh rõ ràng ph i đ c th c hi n xác, nh t quán – Hi u qu (effectiveness): thao tác gi i thu t ph i đ c th c hi n m t l ng th i gian h u h n Gi i toán “ tô màu đ th ” • Bài toán tô màu cho đ th gi i thu t t t đ tìm l i gi i t i u – "th t t c kh n ng" hay "vét c n" t t c tr ng h p có th có, – ta ch có th "vét c n" tr ng h p đ th có s đ nh nh • HEURISTIC cho toán tô màu đ th , th ng g i gi i thu t "háu n" (GREEDY) là: – Ch n m t đ nh ch a tô màu tô b ng m t màu m i C – Duy t danh sách đ nh ch a tô màu i v i m t đ nh ch a tô màu, xác đ nh xem có k v i m t đ nh đ c tô b ng màu C không N u không có, tô b ng màu C • Ý t ng c a Heuristic h t s c đ n gi n: dùng m t màu đ tô cho nhi u đ nh nh t có th đ c Nh v y ta có th "hi v ng" s màu c n dùng s nh t Áp d ng HEURISTIC Greedy cho toán« đèn giao thông » • Tô màu xanh cho đ nh: AB,AC,AD,BA,DC,ED • Tô màu đ cho đ nh: BC,BD,EA • Tô màu tím cho đ nh: DA,DB • Tô màu vàng cho đ nh: EB,EC AB AC AD BA BC BD DA DB DC EA EB EC ED 10 Greedy có cho l i gi i t i u? Tô theo GREEDY (xét l n l t theo s th t đ nh) T i u (th t t c kh n ng) 1: đ ; 2: đ 1,3,4 : đ 3: xanh;4: xanh 2,5 : xanh 5: vàng 12 Ngôn ng gi tinh ch t ng b c • Mô hình hóa å mô hình thích h p cho toán • Hình th c hoá m t gi i thu t thu t ng c a mô hình – Kh i đ u vi t nh ng m nh đ t ng quát – tinh ch d n thành nh ng chu i m nh đ c th h n – Cu i ch th thích h p m t ngôn ng l p trình • Ví d : Heuristic GREEDY, gi s đ th G, heuristic s xác đ nh m t t p h p Newclr đ nh c a G đ c tô m t màu, mà ta g i màu m i C ti n hành tô màu hoàn t t cho đ th G Heuristic ph i đ c g i l p l i cho đ n toàn th đ nh đ u đ c tô màu 13 Th t c GREEDY v i ngôn ng gi PASCAL PROCEDURE GREEDY ( var G: GRAPH ; var Newclr: SET ); begin {1} Newclr := ∅; {2} for (m i đ nh v ch a tô màu c a G) {3} if (v không đ c n i v i m t đ nh Newclr) then begin {4} đánh d u v đ c tô màu; {5} thêm v vào Newclr; end; end; Trong th t c b ng ngôn ng gi : •t khoá c a ngôn ng PASCAL •m nh đ ti ng Vi t •"ki u d li u tr u t ng" GRAPH, SET 14 Tinh ch t ng b c • M nh đ if {3} có th chi ti t hoá h n n a nh sau: PROCEDURE GREEDY ( var G: GRAPH ; var Newclr: SET ); begin {1} Newclr:= ∅; {2} for (m i đ nh v ch a tô màu c a G) begin {3.1} found:=false; {3.2} for (m i đ nh w Newclr) {3.3} if (có c nh n i gi a v w) then {3.4} found:=true; {3.5} if found=false then begin {4} đánh d u v đ c tô màu; {5} thêm v vào Newclr; end; end; end; 15 Ki u d li u tr u t ng • GRAPH SET ta coi nh t p h p – Có nhi u cách đ bi u di n t p h p ngôn ng l p trình: xem t p h p nh m t danh sách (LIST) s nguyên bi u di n ch s c a đ nh k t thúc b ng m t giá tr đ c bi t NULL 16 PROCEDURE GREEDY ( var G: GRAPH ; var Newclr: LIST ); var found:boolean; v,w :integer; begin Newclr:= ∅; v:= đ nh đ u tiên ch a đ c tô màu G; while vnull begin found:=false; w:=đ nh đ u tiên newclr; while( wnull) and (not found) begin if có c nh n i gi a v w then found:=true; else w:= đ nh k ti p newclr; end; if found=false then begin đánh d u v đ c tô màu; thêm v vào Newclr; end; v:= đ nh ch a tô màu k ti p G; end; end; 17 Chú ý vi c dùng ngôn ng gi • M c đích: – phát h a ý t ng c a gi i thu t – tránh sa đà vào cú pháp c a ngôn ng • Các b c tinh ch v sau: th t c ngôn ng gi g n gi ng v i ch ng trình m t ngôn ng l p trình • Vi c ch n ngôn ng gi t a PASCAL hay t a C hay t a m t m t ng l p trình khác tùy thu c vào thói quen c a ng i s d ng, vào s quen thu c v i ngôn ng l p trình 18 N u ng i dùng quen thu c v i ngôn ng C có th vi t th t c v i ngôn ng gi t a C nh sau : void GREEDY ( GRAPH& G, SET& Newclr ){ /*1*/ Newclr = ∅; /*2*/ for (m i đ nh v ch a tô màu c a G) /*3*/ if (v không đ c n i v i m t đ nh Newclr){ /*4*/ đánh d u v đ c tô màu; /*5*/ thêm v vào Newclr; } } 19 Th t c tinh ch đ c vi t t a C nh sau: void GREEDY ( GRAPH& G, SET& Newclr ) { /*1*/ Newclr= ∅; /*2*/ for (m i đ nh v ch a tô màu c a G) { /*3.1*/ int found=0; /*3.2*/ for (m i đ nh w Newclr) /*3.3*/ if (có c nh n i gi a v w) /*3.4*/ found=1; /*3.5*/ if (!found) { /*4*/ đánh d u v đ c tô màu; /*5*/ thêm v vào Newclr; } } } 20 Tinh ch thêm m t b c n a: void GREEDY ( GRAPH& G, LIST& Newclr ){ Newclr= ∅; int v= đ nh đ u tiên ch a đ c tô màu G; while (vnull) { int found=0; int w=đ nh đ u tiên newclr; while( wnull) && (!found) If (có c nh n i gi a v w) found=1; else w= đ nh k ti p newclr; if (!found) { ánh d u v đ c tô màu; Thêm v vào Newclr; } v= đ nh ch a tô màu k ti p G; } } 21 Tóm t t b c ti p c n v i m t toán Mô hình hoá toán b ng m t mô hình toán h c thích h p Tìm gi i thu t mô hình Gi i thu t có th mô t m t cách không hình th c, t c ch nêu ph ng h ng gi i ho c b c gi i m t cách t ng quát Hình th c hoá gi i thu t b ng cách vi t m t th t c b ng ngôn ng gi , r i chi ti t hoá d n ("m n hoá") , k t h p v i vi c dùng ki u d li u tr u t ng c u trúc u n ngôn ng l p trình đ mô t gi i thu t Cài đ t gi i thu t m t ngôn ng l p trình c th (Pascal,C, ) b c ta dùng c u trúc d li u đ c cung c p ngôn ng , ví d Array, Record, đ th hi n ki u d li u tr u t ng, 22 KI U D • LI U TR U T Khái ni m tr u t ng hóa – Tr u t ng hóa ch ng trình void Main() { Input_Matrix(A); Input_Matrix(B); Matrix_mult(A,B,C); Print_Matrix(C); } • Tr u t NG ng hóa d li u – M t ki u d li u tr u t ng (ADT): m t mô hình toán h c v i m t t p h p phép toán (operator) tr u t ng đ c đ nh ngh a mô hình – Ví d t p h p s nguyên v i phép toán h p, giao, hi u m t ki u d li u tr u t ng – ADT s t ng quát hoá c a ki u d li u nguyên thu 23 ADT - t ng quát hoá ki u d li u nguyên thu • Danh sách (LIST) s nguyên phép toán danh sách – T o m t danh sách r ng – L y ph n t đ u tiên danh sách tr v giá tr null n u danh sách r ng – L y ph n t k ti p danh sách tr v giá tr null n u không ph n t k ti p – Thêm m t s nguyên vào danh sách • N u vi t ch ng trình th c hi n phép toán này, ta d dàng thay m nh đ hình th c gi i thu t b ng câu l nh đ n gi n Câu l nh M nh đ hình th c MAKENULL(newclr) newclr= ∅ w=FIRST(newclr) w=ph n t đ u tiên newclr w=NEXT(w,newclr) w=ph n t k ti p newclr INSERT( v,newclr) Thêm v vào newclr 24 KI U D LI U - C U TRÚC D KI U D LI U TR U T • Ki u d li u m t t p h p giá tr m t t p h p phép toán giá tr – ki u d li u s c p: int, char – ki u d li u có c u trúc; array, struct • C u trúc d li u: – Các ki u d li u có c u trúc c b n (cung c p b i NNLT) – c u trúc ph c h p (đ c t o t ki u d li u c b n) • M t ki u d li u tr u t ng m t mô hình toán h c v i m t t p h p phép toán LI U VÀ NG – Ki u d li u tr u t ng m t ki u d li u đ nh ngh a m c khái ni m (conceptual), ch a đ c cài đ t c th b ng m t ngôn ng l p trình – Khi cài đ t m t ki u d li u tr u t ng m t ngôn ng l p trình c th : : • Bi u di n ki u d li u tr u t ng ( m c khái ni m) b ng m t c u trúc d li u ho c m t ki u d li u tr u t ng khác đ c cài đ t • Vi t ch ng trình th c hi n phép toán ki u d li u tr u t ng 25 H t ch ng 26 [...]... i mô hình c a bài toán và dùng tính ch t c a đ th đ ki m tra k t qu Nh n xét r ng: – M t đ th có k đ nh và m i c p đ nh b t k đ u đ c n i nhau thì ph i dùng k màu đ tô – M t đ th ch a k đ nh và m i c p đ nh b t k đ u đ c n i nhau thì ph i dùng ít nh t k màu đ tô 11 Greedy có cho l i gi i t i u? Tô theo GREEDY (xét l n l t theo s th t các đ nh) T i u (th t t c các kh n ng) 1: đ ; 2: đ 1, 3,4 : đ 3: xanh;4:... trong newclr INSERT( v,newclr) Thêm v vào newclr 24 KI U D LI U - C U TRÚC D KI U D LI U TR U T • Ki u d li u là m t t p h p các giá tr và m t t p h p các phép toán trên các giá tr đó – ki u d li u s c p: int, char – ki u d li u có c u trúc; array, struct • C u trúc d li u: – Các ki u d li u có c u trúc c b n (cung c p b i NNLT) – các c u trúc ph c h p (đ c t o ra t các ki u d li u c b n) • M t ki u d li... If (có c nh n i gi a v và w) found =1; else w= đ nh k ti p trong newclr; if (!found) { ánh d u v đã đ c tô màu; Thêm v vào Newclr; } v= đ nh ch a tô màu k ti p trong G; } } 21 Tóm t t các b c ti p c n v i m t bài toán 1 Mô hình hoá bài toán b ng m t mô hình toán h c thích h p 2 Tìm gi i thu t trên mô hình này Gi i thu t có th mô t m t cách không hình th c, t c là nó ch nêu ph ng h ng gi i ho c các b c... void GREEDY ( GRAPH& G, SET& Newclr ){ / *1* / Newclr = ∅; /*2*/ for (m i đ nh v ch a tô màu c a G) /*3*/ if (v không đ c n i v i m t đ nh nào trong Newclr){ /*4*/ đánh d u v đã đ c tô màu; /*5*/ thêm v vào Newclr; } } 19 Th t c tinh ch đ c vi t t a C nh sau: void GREEDY ( GRAPH& G, SET& Newclr ) { / *1* / Newclr= ∅; /*2*/ for (m i đ nh v ch a tô màu c a G) { /*3 .1* / int found=0; /*3.2*/ for (m i đ nh w... PROCEDURE GREEDY ( var G: GRAPH ; var Newclr: SET ); begin {1} Newclr:= ∅; {2} for (m i đ nh v ch a tô màu c a G) do begin {3 .1} found:=false; {3.2} for (m i đ nh w trong Newclr) do {3.3} if (có c nh n i gi a v và w) then {3.4} found:=true; {3.5} if found=false then begin {4} đánh d u v đã đ c tô màu; {5} thêm v vào Newclr; end; end; end; 15 Ki u d li u tr u t ng • GRAPH và SET ta coi nh t p h p –... màu 13 Th t c GREEDY v i ngôn ng gi PASCAL PROCEDURE GREEDY ( var G: GRAPH ; var Newclr: SET ); begin {1} Newclr := ∅; {2} for (m i đ nh v ch a tô màu c a G) do {3} if (v không đ c n i v i m t đ nh nào trong Newclr) then begin {4} đánh d u v đã đ c tô màu; {5} thêm v vào Newclr; end; end; Trong th t c b ng ngôn ng gi : •t khoá c a ngôn ng PASCAL •m nh đ ti ng Vi t •"ki u d li u tr u t ng" GRAPH, SET 14 ... i gi a v và w) /*3.4*/ found =1; /*3.5*/ if (!found) { /*4*/ đánh d u v đã đ c tô màu; /*5*/ thêm v vào Newclr; } } } 20 Tinh ch thêm m t b c n a: void GREEDY ( GRAPH& G, LIST& Newclr ){ Newclr= ∅; int v= đ nh đ u tiên ch a đ c tô màu trong G; while (vnull) { int found=0; int w=đ nh đ u tiên trong newclr; while( wnull) && (!found) If (có c nh n i gi a v và w) found =1; else w= đ nh k ti p trong newclr;... end; end; 17 Chú ý vi c dùng ngôn ng gi • M c đích: – phát h a ý t ng c a gi i thu t – tránh sa đà vào cú pháp c a ngôn ng • Các b c tinh ch v sau: th t c ngôn ng gi càng g n gi ng v i ch ng trình trong m t ngôn ng l p trình • Vi c ch n ngôn ng gi t a PASCAL hay t a C hay t a m t m t ng l p trình nào khác là tùy thu c vào thói quen c a ng i s d ng, vào s quen thu c v i ngôn ng l p trình 18 N u ng... vi t m t th t c b ng ngôn ng gi , r i chi ti t hoá d n ("m n hoá") , k t h p v i vi c dùng các ki u d li u tr u t ng và các c u trúc đi u khi n trong ngôn ng l p trình đ mô t gi i thu t 4 Cài đ t gi i thu t trong m t ngôn ng l p trình c th (Pascal,C, ) b c này ta dùng các c u trúc d li u đ c cung c p trong ngôn ng , ví d Array, Record, đ th hi n các ki u d li u tr u t ng, 22 KI U D • LI U TR U T Khái... Greedy có cho l i gi i t i u? Tô theo GREEDY (xét l n l t theo s th t các đ nh) T i u (th t t c các kh n ng) 1: đ ; 2: đ 1, 3,4 : đ 3: xanh;4: xanh 2,5 : xanh 5: vàng 12 Ngôn ng gi và tinh ch t ng b c • Mô hình hóa å mô hình thích h p cho bài toán • Hình th c hoá m t gi i thu t trong thu t ng c a mô hình đó – Kh i đ u là vi t nh ng m nh đ t ng quát – tinh ch d n thành nh ng chu i m nh đ c th h n – Cu ... nh t k màu đ tô 11 Greedy có cho l i gi i t i u? Tô theo GREEDY (xét l n l t theo s th t đ nh) T i u (th t t c kh n ng) 1: đ ; 2: đ 1, 3,4 : đ 3: xanh;4: xanh 2,5 : xanh 5: vàng 12 Ngôn ng gi tinh... U D LI U - C U TRÚC D KI U D LI U TR U T • Ki u d li u m t t p h p giá tr m t t p h p phép toán giá tr – ki u d li u s c p: int, char – ki u d li u có c u trúc; array, struct • C u trúc d li... thêm v vào Newclr; } } 19 Th t c tinh ch đ c vi t t a C nh sau: void GREEDY ( GRAPH& G, SET& Newclr ) { / *1* / Newclr= ∅; /*2*/ for (m i đ nh v ch a tô màu c a G) { /*3 .1* / int found=0; /*3.2*/

Ngày đăng: 03/12/2015, 02:46

TỪ KHÓA LIÊN QUAN