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

Cấu trúc dữ liệu và giải thuật Học viện bưu chính viễn thông

144 436 1

Đ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

Nội dung

CTDLGT là một trong những môn cơ bản của sinh viên ngành công nghệ thông tin. Các cấu trúc dữ liệu và các giải thuật được xem như là 2 yếu tố quan trọng nhất trong lập trình. Chương trình = Cấu trúc + Giải thuật. Tài liệu bao gồm 7 chương trình bài cấu trúc dữ liệu và các giải thuật cơ bản nhất. Còn có câu hỏi và bài tập ôn tập cuối mỗi chương cho sinh viên tự thực hành.

HC VIN CÔNG NGH BU CHÍNH VIN THÔNG CU TRÚC D LIU VÀ GII THUT (Dùng cho sinh viên h đào to đi hc t xa) Lu hành ni b HÀ NI - 2007 LI NÓI U Cu trúc d liu và gii thut là mt trong nhng môn hc c bn ca sinh viên ngành Công ngh thông tin. Các cu trúc d liu và các gii thut đc xem nh là 2 yu t quan trng nht trong lp trình, đúng nh câu nói ni ting ca Niklaus Wirth: Chng trình = Cu trúc d liu + Gii thut (Programs = Data Structures + Algorithms). Nm vng các cu trúc d liu và các gii thut là c s đ sinh viên tip cn vi vi c thit k và xây dng phn mm cng nh s dng các công c lp trình hin đi. Cu trúc d liu có th đc xem nh là 1 phng pháp lu tr d liu trong máy tính nhm s dng mt cách có hiu qu các d liu này. Và đ s dng các d liu mt cách hiu qu thì cn phi có các thut toán áp dng trên các d liu đó. Do v y, cu trúc d liu và gii thut là 2 yu t không th tách ri và có nhng liên quan cht ch vi nhau. Vic la chn mt cu trúc d liu có th s nh hng ln ti vic la chn áp dng gii thut nào. Tài liu “Cu trúc d liu và gii thut” bao gm 7 chng, trình bày v các cu trúc d liu và các gii thut c bn nh t trong tin hc. Chng 1 trình bày v phân tích và thit k thut toán. u tiên là cách phân tích 1 vn đ, t thc tin cho ti chng trình, cách thit k mt gii pháp cho vn đ theo cách gii quyt bng máy tính. Tip theo, các phng pháp phân tích, đánh giá đ phc tp và thi gian thc hin gii thut cng đc xem xét trong chng. Chng 2 trình bày v đ qui, mt khái nim rt c bn trong toán hc và khoa hc máy tính. Vi c s dng đ qui có th xây dng đc nhng chng trình gii quyt đc các vn đ rt phc tp ch bng mt s ít câu lnh, đc bit là các vn đ mang bn cht đ qui. Chng 3, 4, 5, 6 trình bày v các cu trúc d liu đc s dng rt thông dng nh mng và danh sách liên kt, ngn xp và hàng đi, cây, đ th. ó là các c u trúc d liu cng rt gn gi vi các cu trúc trong thc tin. Chng 7 trình bày v các thut toán sp xp và tìm kim. Các thut toán này cùng vi các k thut đc s dng trong đó đc coi là các k thut c s cho lp trình máy tính. Các thut toán đc xem xét bao gm các lp thut toán đn gin và c các thut toán cài đt phc tp nhng có thi gian thc hin ti u. Cui mi phn đu có các câu hi và bài tp đ sinh viên ôn luyn và t kim tra kin thc ca mình. Cui tài liu có các ph lc hng dn tr li câu hi, mã ngun tham kho và tài liu tham kho. V nguyên tc, các cu trúc d liu và các gii thut có th đc biu din và cài đt bng bt c ngôn ng lp trình hin đi nào. Tuy nhiên, đ có đc các phân tích sâu sc h n và có kt qu thc t hn, tác gi đã s dng ngôn ng lp trình C đ minh ho cho các cu trúc d liu và thut toán. Do vy, ngoài các kin thc c bn v tin hc, ngi đc cn có kin thc v ngôn ng lp trình C. Cui cùng, mc dù đã ht sc c gng nhng chc chn không tránh khi các thiu sót. Tác gi rt mong nhn đc s góp ý ca bn đc và đng nghip đ tài liu đc hoàn thin hn. Hà Ni, tháng 10/2007 3 CHNG 1 PHÂN TÍCH VÀ THIT K GII THUT Chng 1 trình bày các khái nim v gii thut và phng pháp tinh chnh tng bc chng trình đc th hin qua ngôn ng din đt gii thut. Chng này cng nêu phng pháp phân tích và đánh giá mt thut toán, các khái nim liên quan đn vic tính toán thi gian thc hin chng trình. Trong mi phn đu có các minh ho c th. Phn đu đa ra ví d v bài toán nút giao thông và phng pháp gii quyt bài toán t phân tích v n đ cho đn thit k gii thut, tinh chnh tng bc cho ti mc c th hn. Phn 2 đa ra mt ví d v phân tích và tính toán thi gian thc hin gii thut sp xp ni bt.  hc tt chng này, sinh viên cn nm vng phn lý thuyt và tìm các ví d tng t đ thc hành phân tích, thit k, và đánh giá gii thut. 1.1 GII THUT VÀ NGÔN NG DIN T GII THUT 1.1.1 Gii thut Trong thc t, khi gp phi mt vn đ cn phi gii quyt, ta cn phi đa ra 1 phng pháp đ gii quyt vn đ đó. Khi mun gii quyt vn đ bng cách s dng máy tính, ta cn phi đa ra 1 gii pháp phù hp vi vic thc thi bng các ch ng trình máy tính. Thut ng “thut toán” đc dùng đ ch các gii pháp nh vy. Thut toán có th đc đnh ngha nh sau: Thut toán là mt chui hu hn các lnh. Mi lnh có mt ng ngha rõ ràng và có th đc thc hin vi mt lng hu hn tài nguyên trong mt khong hu hn thi gian. Chng hn lnh x = y + z là mt lnh có các tính cht trên. Trong mt thu t toán, mt lnh có th lp đi lp li nhiu ln, tuy nhiên đi vi bt k b d liu đu vào nào, thut toán phi kt thúc sau khi thc thi mt s hu hn lnh. Nh đã nói  trên, mi lnh trong thut toán phi có ng ngha rõ ràng và có th đc thc thi trong mt khong thi gian hu hn. Tuy nhiên, đôi khi mt lnh có ng ngha rõ ràng đi vi ngi này nhng li không rõ ràng đi vi ngi khác. Ngoài ra, thng rt khó đ chng minh mt lnh có th đc thc hin trong 1 khong hu hn thi gian. Thm chí, k c khi bit rõ ng ngha ca các lnh, cng khó đ có th chng minh là vi bt k b d liu đu vào nào, thut toán s dng. Tip theo, chúng ta s xem xét mt ví d v  xây dng thut toán cho bài toán đèn giao thông: Gi s ngi ta cn thit k mt h thng đèn cho mt nút giao thông có nhiu đng giao nhau phc tp.  xây dng tp các trng thái ca các đèn giao thông, ta cn phi xây dng mt chng trình có đu vào là tp các ngã r đc phép ti nút giao thông (li đi thng cng đc xem nh là 1 ngã r) và chia tp này thành 1 s ít nht các nhóm, sao cho tt c các ngã r trong nhóm có th đc đi cùng lúc mà không xy ra tranh chp. Sau đó, chúng ta s gn trng thái ca các đèn giao thông vi mi nhóm va đc phân chia. Vi cách phân chia có s nhóm ít nht, ta s xây dng đc 1 h thng đèn giao thông có ít trng thái nht. 4 Chng hn, ta xem xét bài toán trên vi nút giao thông đc cho nh trong hình 1.1  di. Trong nút giao thông trên, C và E là các đng 1 chiu, các đng còn li là 2 chiu. Có tt c 13 ngã r ti nút giao thông này. Mt s ngã r có th đc đi đng thi, chng hn các ngã r AB (t A r sang B) và EC. Mt s ngã r thì không đc đi đng thi (gây ra các tuyn giao thông xung đt nhau), chng hn AD và EB. H thng đèn ti nút giao thông phi hot đ ng sao cho các ngã r xung đt (chng hn AD và EB) không đc cho phép đi ti cùng mt thi đim, trong khi các ngã r không xung đt thì có th đc đi ti cng 1 thi đim. Hình 1.1 Nút giao thông Chúng ta có th mô hình hóa vn đ này bng mt cu trúc toán hc gi là đ th (s đc trình bày chi tit  chng 5).  th là mt cu trúc bao gm 1 t p các đim gi là đnh và mt tp các đng ni các đim, gi là các cnh. Vn đ nút giao thông có th đc mô hình hóa bng mt đ th, trong đó các ngã r là các đnh, và có mt cnh ni 2 đnh biu th rng 2 ngã r đó không th đi đng thi. Khi đó, đ th ca nút giao thông  hình 1.1 có th đc biu din nh  hình 1.2. Hình 1.2  th ngã r A B C D E ACAB AD BCBA BD DBDA DC EBEA EC ED 5 Ngoài cách biu din trên, đ th còn có th đc biu din thông qua 1 bng, trong đó phn t  hàng i, ct j có giá tr 1 khi và ch khi có 1 cnh ni đnh i và đnh j. AB AC AD BA BC BD DA DB DC EA EB EC ED AB 1 1 1 1 AC 1 1 1 1 1 AD 1 1 1 BA BC 1 1 1 BD 1 1 1 1 1 DA 1 1 1 1 1 DB 1 1 1 DC EA 1 1 1 EB 1 1 1 1 1 EC 1 1 1 1 ED Bng 1.1 Biu din đ th ngã r bng bng Ta có th s dng đ th trên đ gii quyt vn đ thit k h thng đèn cho nút giao thông nh đã nói. Vic tô màu mt đ th là vic gán cho mi đnh ca đ th mt màu sao cho không có hai đnh đc ni bi 1 cnh nào đó li có cùng mt màu. D thy rng v n đ nút giao thông có th đc chuyn thành bài toán tô màu đ th các ngã r  trên sao cho phi s dng s màu ít nht. Bài toàn tô màu đ th là bài toán đã xut hin và đc nghiên cu t rt lâu. Tuy nhiên, đ tô màu mt đ th bt k vi s màu ít nht là bài toán rt phc tp.  gii bài toán này, ngi ta thng s dng phng pháp “vét cn” đ th tt c các kh nng có th . Có ngha, đu tiên th tin hành tô màu đ th bng 1 màu, tip theo dùng 2 màu, 3 màu, v.v. cho ti khi tìm ra phng pháp tô màu tho mãn yêu cu. Phng pháp vét cn có v thích hp vi các đ th nh, tuy nhiên đi vi các đ th phc tp thì s tiêu tn rt nhiu thi gian thc hin cng nh tài nguyên h thng. Ta có th tip cn vn đ theo hng c gng tìm ra mt gii pháp đ tt, không nht thit phi là gii pháp ti u. Chng hn, ta s c gng tìm mt gii pháp tô màu cho đ th ngã r  trên vi mt s màu khá ít, gn vi s màu ít nht, và thi gian thc hin vic tìm gii pháp là khá nhanh. Gii thut tìm các gii pháp đ tt nhng cha phi ti u nh vy gi là các gii thut tìm theo “cm tính”. i vi bài toán tô màu đ th, mt thut toán cm tính thng đc s dng là thut toán “tham n” (greedy). Theo thut toán này, đu tiên ta s dng mt màu đ tô nhiu nht s đnh có th, tho mãn yêu cu bài toán. Tip theo, s dng màu th 2 đ tô các đnh cha đc tô trong bc 1, ri s dng đn màu th 3 đ tô các đnh cha đc tô trong bc 2, v.v. 6  tô màu các đnh vi màu mi, chúng ta thc hin các bc: - La chn 1 đnh cha đc tô màu và tô nó bng màu mi. - Duyt qua các đnh cha đc tô màu. Vi mi đnh dng này, kim tra xem có cnh nào ni nó vi mt đnh va đc tô bi màu mi hay không. Nu không có cnh nào thì ta tô màu đnh này bng màu mi. Thut toán này đc gi là “tham n” vì ti mi bc nó tô màu t t c các đnh có th mà không cn phi xem xét xem vic tô màu đó có đ li nhng đim bt li cho các bc sau hay không. Trong nhiu trng hp, chúng ta có th tô màu đc nhiu đnh hn bng 1 màu nu chúng ta bt “tham n” và b qua mt s đnh có th tô màu đc trong bc trc. Ví d, xem xét đ th  hình 1.3, trong đó đnh 1 đã đc tô màu đ. Ta thy rng hoàn toàn có th tô c 2 đnh 3 và 4 là màu đ, vi điu kin ta không tô đnh s 2 màu đ. Tuy nhiên, nu ta áp dng thut toán tham n theo th t các đnh ln dn thì đnh 1 và đnh 2 s là màu đ, và khi đó đnh 3, 4 s không đc tô màu đ. Hình 1.3  th Bây gi ta s xem xét thut toán tham n đc áp dng trên đ th các ngã r  hình 1.2 nh th nào. Gi s ta bt đu t đnh AB và tô cho đnh này màu xanh. Khi đó, ta có th tô cho đnh AC màu xanh vì không có cnh ni đnh này vi AB. AD cng có th tô màu xanh vì không có cnh ni AD vi AB, AC. nh BA không có cnh ni ti AB, AC, AD nên cng có th đc tô màu xanh. Tuy nhiên, đnh BC không tô đc màu xanh vì tn ti cnh ni BC và AB. Tng t nh vy, BD, DA, DB không th tô màu xanh vì tn ti cnh ni chúng ti mt trong các đnh đã tô màu xanh. Cnh DC thì có th tô màu xanh. Cui cùng, cnh EA, EB, EC cng không th tô màu xanh trong khi ED có th đc tô màu xanh. 1 5 3 4 2 a)  th ban đu 1 5 3 4 2 b) Tô màu theo thut toán tham n 1 5 3 4 2 c) Mt cách tô màu tt hn 7 Hình 1.4 Tô màu xanh cho các đnh ca đ th ngã r Tip theo, ta s dng màu đ đ tô các đnh cha đc tô màu  bc trc. u tiên là BC. BD cng có th tô màu đ, tuy nhiên do tn ti cnh ni DA vi BD nên DA không đc tô màu đ. Tng t nh vy, DB không tô đc màu đ còn EA có th tô màu đ. Các đnh cha đc tô màu còn li đ u có cnh ni ti các đnh đã tô màu đ nên cng không đc tô màu. Hình 1.5 Tô màu đ trong bc 2 Bc 3, các đnh cha đc tô màu còn li là DA, DB, EB, EC. Nu ta tô màu đnh DA là màu lc thì DB cng có th tô màu lc. Khi đó, EB, EC không th tô màu lc và ta chn 1 màu th t là màu vàng cho 2 đnh này. ACAB AD BCBA BD DBDA DC EBEA EC ED ACAB AD BCBA BD DBDA DC EBEA EC ED 8 Hình 1.6 Tô màu lc và màu vàng cho các đnh còn li Nh vy, ta có th dùng 4 màu xanh, đ, lc, vàng đ tô màu cho đ th ngã r  hình 1.2 theo yêu cu nh đã nói  trên. Bng tng hp màu đc mô t nh sau: Màu Ngã r Xanh AB, AC, AD, BA, DC, ED  BC, BD, EA Lc DA, DB Vàng EB, EC Bng 1.2 Bng tng hp màu Thut toán tham n không đm bo cho ra kt qu ti u là s màu ít nht đc dùng. Tuy nhiên, ngi ta có th dùng mt s tính cht ca đ th đ đánh giá kt qu thu đc. Tr li vi vn đ nút giao thông, t kt qu tô màu trên, ta có th thit k h thng đèn giao thông theo bng tng hp màu trên, trong đó m i trng thái ca h thng đèn tng ng vi 1 màu. Ti mi trng thái, các ngã r nm ti hàng tng ng vi màu đó đc cho phép đi, các ngã r còn li b cm. 1.1.2 Ngôn ng din đt gii thut và k thut tinh chnh tng bc Sau khi đã xây dng đc mô hình toán hc cho vn đ cn gii quyt, tip theo, ta có th hình thành mt thu t toán cho mô hình đó. Phiên bn đu tiên ca thut toán thng đc din t di dng các phát biu tng đi tng quát, và sau đó s đc tinh chnh dn tng bc thành chui các lnh c th, rõ ràng hn. Ví d trong thut toán tham n  trên, ta mô t bc thc hin  mc tng quát là “La chn 1 đnh cha đc tô màu”. Vi phát biu nh vy, ta hy vng rng ngi đc có th nm đc ý tng thc hin thao tác. Tuy nhiên, đ chuyn các phát biu đó ACAB AD BCBA BD DBDA DC EBEA EC ED 9 thành chng trình máy tính, cn phi qua 1 s bc tinh chnh cho ti khi đt đn mc các phát biu đu có th đc chuyn đi trc tip sang các lnh ca ngôn ng lp trình. Tr li ví d v bài toán tô màu đ th bng thut toán tham n. Ta s xem xét vic mô t thut toán t mc tng quát cho ti mt s mc c th hn. Ti bc nào đó, gi s ta có đ th G có 1 s đnh đã đc tô màu theo quy tc đã nói  trên. Th tc Tham_an di đây s xác đnh 1 tp các đnh cha đc tô màu thuc G mà có th cùng đc tô bi 1 màu mi. Th tc này s đc gi đi gi li nhiu ln cho ti khi tt c các đnh ca G đã đc tô màu.  mc tng quát, th t c đc mô t nh sau: void Tham_an(GRAPH: G, SET: Mau_moi) { Mau_moi = Tp rng; For mi đnh v cha đc tô màu thuc G If v không đc ni ti đnh nào trong tp Mau_moi { Tô màu mi cho đnh v; a v vào tp Mau_moi; } } Trong th tc trên, ta s dng mt ngôn ng din đt gii thut ta nh ngôn ng lp trình C. Trong ngôn ng này, các lnh đc mô t di dng ngôn ng t nhiên nhng vn tuân theo cú pháp ca ngôn ng lp trình. Ta nhn thy rng các phát biu trong th tc trên còn rt tng quát, và cha tng ng vi các lnh trong ngôn ng lp trình, chng hn các điu kin ki m tra trong câu lnh For và If  mc mô t hin ti là không thc hin đc trong C.  th tc có th thc thi đc, ta cn phi tinh chnh mt s bc đ có th chuyn đi v chng trình trong ngôn ng lp trình C thông thng. u tiên, ta xem xét lnh If  trên.  kim tra xem đnh v có ni ti mt đnh nào đó trong tp Mau_moi hay không, ta xem xét tng đnh w trong Mau_moi và s dng đ th G đ kim tra xem có tn ti cnh ni v à w không.  lu gi kt qu kim tra, ta s dng mt bin ton_tai. Khi đó, th tc đc tinh chnh nh sau: void Tham_an(GRAPH: G, SET: Mau_moi) { int ton_tai; Mau_moi = Tp rng; For mi đnh v cha đc tô màu thuc G { ton_tai = 0; For mi đnh w thuc Mau_moi If tn ti cnh ni v và w trong G ton_tai = 1; If ton_tai = = 1 { 10 Tô màu mi cho đnh v; a v vào tp Mau_moi; } } } Nh vy, ta có th thy rng điu kin kim tra trong phát biu If đã đc mô t c th hn bng các phát nh hn,và các phát biu này có th d dàng chuyn thành các lnh c th trong C. Tip theo, ta s tinh chnh các vòng lp For đ duyt qua các đnh thuc G và thuc Mau_moi.  làm điu này, tt nht là ta thay For bng mt vòng lp While, bin v ban đu đc gán là phn t đu tiên cha tô màu trong tp G, và ti mi bc lp, bin v s đc thay bng phn t cha tô màu tip theo trong G. Vòng lp F bên trong có th thc hin tng t. Void Tham_an(GRAPH: G, SET: Mau_moi) { int ton_tai; int v, w Mau_moi = Tp rng; v = đnh cha tô màu đu tiên trong G ; While v != NULL { ton_tai = 0; w = đnh đu tiên trong Mau_moi; While w != NULL{ If tn ti cnh ni v và w trong G ton_tai = 1; w = đnh tip theo trong Mau_moi ; } If ton_tai = = 1 { Tô màu mi cho đnh v; a v vào tp Mau_moi; } v = đnh cha tô màu tip theo trong G; } } Nh vy, ta thy các phát biu trong th tc đã khá c th, tuy nhiên, đ chuyn đi thành chng trình trong ngôn ng C thì cn ti vài bc tinh chnh na. Bn đc hãy xem nh đó là bài tp và t gii đ hiu rõ v ngôn ng din đt gii thut cng nh k thut tinh chnh tng bc. 1.2 PHÂN TÍCH THUT TOÁN Vi mi vn đ c n gii quyt, ta có th tìm ra nhiu thut toán khác nhau. Có nhng thut toán thit k đn gin, d hiu, d lp trình và sa li, tuy nhiên thi gian thc hin ln và tiêu tn [...]... tích, ánh giá, và c i ti n thành các phiên b n t t h n 1.2.1 cl ng th i gian th c hi n ch Th i gian ch y c a 1 ch - D li u - Ch t l - T c - ng trình ng trình ph thu c vào các y u t sau: u vào ng c a mã máy c t o ra b i ch ng trình d ch th c thi l nh c a máy ph c t p v th i gian c a thu t toán Thông th ng, th i gian ch y c a ch ng trình không ph thu c vào giá tr d li u u vào mà ph thu c vào kích th c... này, sinh viên c n n m v ng lý thuy t và tìm tòi m t s ví d khác minh ho cho vi c s d ng m ng và danh sách liên k t 3.1 C U TRÚC D LI U KI U M NG (ARRAY) c s d ng r ng rãi nh t trong t t c các Có th nói, m ng là c u trúc d li u c n b n và ngôn ng l p trình M t m ng là 1 t p h p c nh các thành ph n có cùng 1 ki u d li u, c l u tr k ti p nhau và có th c truy c p thông qua m t ch s Ví d , truy c p t... Ti p theo, ta xem xét các c u trúc d li u và bi n s c dùng th c hi n các công vi c trong hàm Theo lu t c thông th ng thì quân h u có th n t t c các quân n m trên cùng hàng, cùng c t, ho c ng chéo Do v y, ta có th suy ra r ng m i c t c a bàn c ch có th ch a 1 và ch 1 quân h u, và t ó ta có quy nh là quân h u th i ph i t c t th i Nh v y, ta s dùng bi n i bi u th ch s c t, và quá trình l a ch n v trí t... c c ng c p t ng: Gi s T1(n) và T2(n) là th i gian ch y c a 2 o n ch ng trình P1 và P2, trong ó T1(n) là O(f(n)) và T2(n) là O(g(n)) Khi ó, th i gian th c hi n c a 2 o n ch ng trình trình n i ti p P1, P2 là O(max(f(n), g(n))) - Quy t c nhân c p t ng: V i gi thi t v T1(n) và T2(n) nh trên, n u 2 o n ch ng c th c hi n tu n t mà l ng nhau thì th i gian ch y t ng th s trình P1 và P2 không là T1(n).T2(n)... c ng c p và phân tích m t s thu t toán bài toán tháp Hà n i, các thu t toán quay lui v.v qui tiêu bi u và kinh i n nh h c t t ch ng này, sinh viên c n n m v ng ph n lý thuy t Sau ó, nghiên c u k các phân tích thu t toán và th c hi n ch y th ch ng trình Có th thay i m t s i m trong ch ng trình và ch y th n m k h n v thu t toán Ngoài ra, sinh viên c ng có th tìm các bài toán t ng t phân tích và gi i quy... tính g i là qui n u trong ch ng trình có l i g i chính nó i u này, tho t tiên, nghe có v h i vô lý M t ch ng trình không th g i mãi chính nó, vì nh v y s t o ra m t vòng l p vô h n Trên th c t , m t ch ng trình qui tr c khi g i chính nó bao gi c ng có m t thao tác ki m tra i u ki n d ng N u i u ki n d ng th a mãn, ch ng trình s không g i chính nó n a, và quá trình qui ch m d t Trong các ví d trên, ta... sánh c ki m tra và ch ng trình k t thúc, ch m d t vi c g i t i chính nó u i m c a ch ng trình qui c ng nh nh ngh a b ng qui là có th th c hi n m t s l ng l n các thao tác tính toán thông qua 1 o n ch ng trình ng n g n (th m chí không có vòng l p, ho c không t ng minh có th th c hi n b ng các vòng l p) hay có th nh ngh a m t t p h p vô h n các i t ng thông qua m t s h u h n l i phát bi u Thông th ng, m... getch(); return; } Và k t qu ch y ch ng trình v i bàn c 8x8 và ô b t Hình 2.5 K t qu ch y ch u là ô (0,0): ng trình mã i tu n 28 Bài toán 8 quân h u Bài toán 8 quân h u là 1 ví d r t n i ti ng v vi c s d ng ph ng pháp th - sai và thu t toán quay lui c i m c a các bài toán d ng này là không th dùng các bi n pháp phân tích gi i c mà ph i c n n các ph ng pháp tính toán th công, v i s kiên trì và chính xác cao... th c hi n không ch ph thu c vào kích th c d li u vào mà còn ph thu c vào tính ch t c a nó Khi tính ch t d li u vào tho mãn m t s c i m nào ó thì th i gian th c hi n ch ng trình có th là l n nh t ho c nh nh t Khi ó, ta nh ngh a th i gian th c hi n ch ng trình T(n) trong tr ng h p x u nh t ho c t t nh t ó là th i gian th c hi n l n nh t ho c nh nh t trong t t c các b d li u vào có kích th c n Ta c ng... nguyên t c c ng và Gi s T1(n) và T2(n) là th i gian ch y c a 2 o n ch ng trình P1 và P2, trong ó T1(n) là O(f(n)) và T2(n) là O(g(n)) Khi ó, th i gian th c hi n c a 2 o n ch ng trình trình n i ti p P1, P2 là O(max(f(n), g(n))) Nguyên t c c ng trên có th s d ng tính th i gian th c hi n c a ch ng trình bao g m 1 s tu n t các b c, m i b c có th là 1 o n ch ng trình bao g m 1 s vòng l p và r nhánh Ví d

Ngày đăng: 19/04/2015, 00:12

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w