TRẦN THỊ DƯƠNG VỀCÁCBÀITOÁN NP-C VÀ MỘT SỐ PHƯƠNG PHÁP GIẢI Chuyên ngành : Khoa học máy tính Mã số : 60480101 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Thái Nguyên - 2014 1 MỞ ĐẦU Ngày nay, cùng với sự phát triển mạnh mẽ của khoa họcvà công nghệ, đặc biệt là máy tính, người ta có khả năng giải quyết được nhiều bàitoán rất phức tạp. Tuy nhiên, còn những vấn đề là ―không giải được‖ cho dù kỹ thuật máy tính có phát triển và cũng có những vấn đề được xem là ―quá phức tạp‖, vượt mọi khả năng tính toán thực tế vì mất quá nhiều thời gian. Việc nghiên cứu về độ phức tạp của thuật toán đã cho phép chúng ta phân loại được các lớp bàitoán theo từng mức độ phức tạp khác nhau, và chỉ ra ranh giới giữa các lớp bàitoán giải được và những lớp bàitoán không thể giải được trong thời gian đa thức. Trong lý thuyết độ phức tạp tính toán, lớp NP - C (NP - đầy đủ) là một lớp cácbàitoán quyết định. Một bàitoán L là NP - C nếu nó nằm trong lớp NP (lời giải cho L có thể được kiểm chứng trong thời gian đa thức) và là NP - Hard (mọi bàitoán trong NP đều có thể quy về L trong thời gian đa thức). Mặc dù bất kì lời giải nào cho mỗi bàitoán đều có thể được kiểm chứng nhanh chóng, hiện chưa có cách nào tìm ra được lời giải đó một cách hiệu quả. Thời gian thực thi của tất cả các thuật toán hiện tại cho những bàitoán này đều tăng rất nhanh theo kích thước bài toán. Vì vậy ngay cả những trường hợp có kích thước tương đối lớn đã đòi hỏi thời gian hàng tỷ năm để giải. Cácbàitoán lớp NP - C là tập hợp cácbàitoán NP - Hard trong NP. Cácbàitoán lớp NP - C được quan tâm nghiên cứu bởi khả năng kiểm chứng nhanh chóng lời giải (NP) dường như có liên hệ với khả năng tìm kiếm nhanh chóng lời giải (P). Hiện vẫn chưa biết được nếu mọi bàitoán trong NP đều có thể được giải quyết nhanh chóng hay không (đây chính là bàitoán P so với 2 NP). Tuy nhiên, nếu bất kì một bàitoán nào trong NP - C có thể được giải quyết nhanh chóng, thì theo định nghĩa của NP - C, mọi bàitoán trong NP đều có thể được giải quyết nhanh chóng. Cácbàitoán NP- C xuất hiện thường xuyên trong thực tế nên, mặc dù chưa có giải thuật trong thời gian đa thức cho chúng, các nhà nghiên cứu vẫn tìm cách giải quyết chúng thông qua các phương pháp khác như thuật toán xấp xỉ, thuật toán gần đúng nhân tử hóa, v.v Việc tìm hiểu và nghiên cứu các phương pháp giải bàitoán lớp NP- C là một trong những bàitoán mở của khoa học máy tính hiện nay. Vì vậy em đã chọn đề tài: Vềcácbàitoán NP-C và một số phương pháp giải để làm luận văn tốt nghiệp. Cấu trúc của luận văn gồm: Phần mở đầu, phần kết luận và 3 chương nội dung, cụ thể: Chương 1: Khái niệm các lớp bàitoán P, NP, NP-C. Trong chương này em giới thiệu chung vềcác lớp bàitoán P, NP, ONTHIONLINE.NET Cáctoán ưcln; bcnnsốhọc Phần II: Nội dung Kiến thức sở: * Qui ước: ƯCLN(a; b) : Ước chung lớn số tự nhiên a b BCNN( a; b): Bội chung nhỏ số tự nhiên a b 1) :Các dấu hiệu chia hết * Dấu hiệu chia hết cho 2; 3; 5; Học sinh nắm vững dấu hiệu chia hết cho 2, cho 3, cho 5, cho 2) ước bội: +Nếu số tự nhiên a chia hết cho số tự nhiên b thì: a gọi bội b, b gọi ước a + Muốn tìm bội số tự nhiên, ta nhân số với 0; 1; 2; 3;… + Muốn tìm ước số tự nhiên , ta chia số cho số tự nhiên từ đến số Nếu chia hết cho số ước số 3) số nguyên tố; hợp số .Cách phân tích số thừa số nguyên tố 4)cách tìm ưcln; bcnn hay nhiều số: Thực trạng vấn đề Các tập đưa chưa đưa dạng toánHọc sinh chưa biết cách làm dạng tập Mô tả giảI pháp Chuyên đề nhằm đưa toán dạng toán bản; phân loại em cách nhìn giải toán nhanh ONTHIONLINE.NET ONTHIONLINE.NET A Bài tập vận dụng I tìm ưcln; bcnn hay nhiều sốBài toán1 Tìm ƯCLN ; BCNN của: 56; 140 84 * Giải: Ta có: 56 = 23.7; 140 =22.5.7 ; 84 =22.3.7 Các thừa số nguyên tố chung là: 2; Các thừa số nguyên tố riêng là: 3; ƯCLN( 56; 140; 84) = 22.7 = 28 BCNN ( 56; 140; 84) = 23.3.5.7 = 840 Bàitoán Tìm ƯC; BC 56; 140 84 *Giải: Để tìm ƯC; BC số ta không cần lập tập hợp ước bội số mà thông qua ƯCLN; BCNN để tìm ƯC( 56; 140; 84) = Ư(28) = { 1; 2; 4; 7; 14; 28} BC ( 56; 140; 84) = B(840) ={0; 840;1680; } II GiảI toán việc tìm ưcln; bcnn hay nhiều số * Phương pháp giải: Phân tích đề bài; suy luận để đưa việc tìm ƯCLN; BCNN hay nhiều sốBàitoán 3: a) Tìm số tự nhiên a lớn biết 420 Ma 700 Ma b) Tìm số tự nhiên a nhỏ khác biết a M15 a M18 *Giải: a) Theo đề bài: a ƯCLN 420 700 ƯCLN ( 420; 700) = 140 Vậy a = 140 b) Theo đề a BCNN 15 18 BCNN ( 15; 18) = 90 Vậy a = 90 Bàitoán ONTHIONLINE.NET ONTHIONLINE.NET Đội văn nghệ trường có 48 nam 72 nữ Muốn phục vụ nhiều địa điểm , đội dự định chia thành tổ gồm nam nữ Số nam nữ chia Có thể chia nhiều thành tổ? Khi tổ có nam; nữ * Giải Gọi số tổ a ( a ∈ N*) Vì muốn phục vụ nhiều địa điểm , đội dự định chia thành tổ gồm nam nữ Số nam nữ chia nên a ước chung 48 72 Mà cần tìm số tổ nhiều nên a = ƯCLN( 48; 72) = 24 ( tổ) Mỗi tổ có: 48 : 24 = 2( nam) 72: 24 = ( nữ) Đáp số: 24 tổ; tổ nam nữ Bàitoán Hai bạn An Bách học trường lớp khác An 10 ngày lại trực nhật lần; Bách 12 ngày lại trực nhật lần Lần đầu người trực nhật vào ngày Hỏi sau ngày bạn lại trực nhật? Lúc bạn trực nhật lần? * Giải: Gọi số ngày mà bạn lại trực nhật a( a ∈ N*) Vì An 10 ngày lại trực nhật lần; Bách 12 ngày lại trực nhật lần Lần đầu người trực nhật vào ngày nên a bội chung 10 12 Mà cần tìm số ngày mà bạn lại trực nhật nên a = BCNN ( 10; 12) = 60 ( ngày ) Lúc An trực nhật 60 : 10 = ( lần) Bách trực nhật 60 : 12 = ( lần) Đáp số: 60 ngày; An trực nhật lần; Bách trực nhật lần ONTHIONLINE.NET ONTHIONLINE.NET III GiảI toán việc tìm ưc; bc hay nhiều số thoả mãn điều kiện cho trước * Phương pháp giải: - Phân tích đề , suy luận để đưa việc tìm BC; ƯC hai hay nhiều số cho trước - Tìm BCNN; ƯCLNsố - Tìm bội BCNN này; Tìm ước ƯCLN - Chọn số bội ước thoả mãn điều kiện cho Bàitoán a) Tìm số tự nhiên x biết rằng: 112 Mx; 140 Mx 1< x < 25 b) Tìm số tự nhiên x biết rằng: x M12; x M21; x M28 150 < x < 305 * Giải: a) x ∈ N ; 112 Mx; 140 Mx nên x ∈ ƯC ( 112; 140) ƯCLN ( 112; 140) = 28 nên x ∈ Ư ( 28) = { 1; 2; 4; 7;14; 28} Mà 1< x < 25 nên x ∈ {2; 4; 7; 14 } b) x ∈ N; x M12; x M21; x M28 nên x ∈ BC( 12; 21; 28) BCNN( 12, 21, 28) = 84 nên x ∈ B( 84) = { 0; 84; 168; 252; 336; } Mà 150 < x < 305 nên x ∈ { 168; 252} Bàitoán Một đơn vị đội xếp hàng 20; 25; 30 dư 15; xếp hàng 41 vừa đủ Tính số người đơn vị biết số người chưa đến 1000 người *Giải: Gọi số người đơn vị a( người) ( a ∈ N; a ≤ 1000) Khi xếp hàng 20; 25; 30 dư 15 người Do : (a – 15) ∈ BC (20; 25; 30) ONTHIONLINE.NET ONTHIONLINE.NET BCNN ( 20; 25; 30) = 300 => ( a – 15) ∈ B ( 300) = { 0; 300; 600; 900; 1200; } => a ∈ {15 ; 315; 615; 915; 1215; } Do xếp hàng 41 vừa đủ nên a M41; a ≤ 1000 nên a = 615 KL: Số người đơn vị 615 người IV GiảI toán tổng quát việc tìm ưcLn; bcnn hay nhiều sốBàitoán CMR: 14n + 21n + ( n ∈ N) số nguyên tố Chứng minh: Để chứng minh số nguyên tố ta chứng minh ƯCLN chúng Đây dạng toán quen thuộc lạ với em lớp Các tập dạng nhằm phát triển tư suy luận logic em Gọi d = ƯCLN ( 14n + 3; 21n + 4) ( d ∈ N* ) => 14n + Md 21n + Md => 3( 14n + 3) Md 2( 21n+4) Md => 3( 14n + 3) – 2( 21n+ 4) Md => 1Md => d = Do 14n + 21n + số nguyên tố * Gv cần nhấn mạnh việc làm ta lại nhân (14n + 3) với (21n +4) với để làm triệt tiêu n Bàitoán Tìm ƯCLN 2n – 9n + ( n ∈ N*) * Cách làm tương tự mức độ khó ta chưa thể tìm ƯCLN mà phải suy luận Chứng minh: Gọi d = ƯCLN ( 2n - 1; 9n + 4) => 2n - Md 9n + Md ONTHIONLINE.NET ( d ∈ N* ) ONTHIONLINE.NET => 9( 2n - 1) Md 2( 9n+4) Md => 2( 9n + 4) – 9( 2n - 1) Md => 17 Md => d ∈ Ư ( 17) = { 1; 17} Ta có : 2n – = 2n – 18 + 17 = ( n- 9) + 17 Nếu d = 17 => 2n – = ( n- 9) + 17 M17 => 2( n- 9) M17 Vì 17 số nguyên tố nên suy n- M17 => n - = 17k ( k ∈ N) => n = 17k + ( k ∈ N) Lúc 9n + = 9( 17k + 9) + = 17k + 85 M17 KL: + Nếu n = 17k + ( k ...GIẢNG DẠY NHƯ THỂ NÀO ĐỂ HỌC SINH NHANH CHÓNG TIẾP THU VÀ GIẢI THÀNH THẠO LOẠI BÀITOÁNVỀƯCLNVÀ BCNN? 1 PHẦN I. MỞ ĐẦU 1. Lý do chọn đề tài Việc đổi mới phương pháp dạy học đã và đang phát huy tính tích cực của nó, bởi đây là phương pháp phù hợp với sự suy nghĩ, cách làm việc của con người trong thời đại mới. Tuy vậy đây là một công việc không thể tiến hành trong một sớm một chiều mà có thể hoàn thành ngay được bởi để làm tốt việc này nó đòi hỏi một sự thay đổi ở chính suy nghĩ của mỗi giáo viên vàhọc sinh. Hiểu rõ mục đích của sự đổi mới phương pháp, hiểu rõ sự đòi hỏi của xã hội đối với giáo dục thì mới đem lại hiệu quả mong muốn . Đối với người giáo viên sự thay đổi đó thể hiện ở khả năng nắm bắt yêu cầu kiến thức + hiểu rõ đối tượng học sinh + vận dụng phương pháp hợp lý. Theo cá nhân tôi việc đổi mới này không phải từ những điều gì to tát mà là chính những vấn đề đơn giản nhất, phục vụ đông đảo học sinh nhất. Bàitoán vận dụng tìm ƯCLNvàBCNN là một dạng bàitoán cơ bản trong chương trình lớp 6, và trong chương trình toán THCS. Cácbàitoán loại này rất phong phú, đa dạng, nếu nắm vững kiến thức, dạng bàitoán cơ bản học sinh có điều kiện để giải rất nhiều bài tập liên quan tới kiến thức này. Việc giải tốt loại bàitoán này giúp cho học sinh hình thành thói quen làm việc một cách khoa học, hình thành thói quen tìm ra các quy luật trong toánhọc nói riêng và trong đời sống nói chung . Với học sinh đại trà yêu cầu của dạng bài tập này không quá phức tạp, có lẽ vì vậy mà thời gian dành cho học hai bàitoán loại này không nhiều. Tuy nhiên trong thực tế giảng dạy tôi nhận thấy học sinh rất hay nhầm lẫn trong việc tìm ƯCLN với BCNN phải mất khá nhiều thời gian mới có thể phân biệt và giải thành thạo hai bàitoán trên. Chính vì vậy tôi muốn tìm ra cho mình một cách dạy, một quy trình truyền đạt kiến thức cho học sinh để học sinh không mất nhiều thời gian mà vẫn nắm bắt chắc chắn và giải thành thạo hai loại bàitoán này. 2 Đây là đề tài sáng kiến kinh nghiệm đã được tôi thực hịên từ năm hoc trước, khi ấy tôi trực tiếp giảng dạy môn toán6. Tiếp tục khẳng định giá trị thực tế của đề tài, trong năm học này mặc dù chỉ dạy môn toán lớp 8 song tôi vẫn kết hợp với đồng nghiệp áp dụng đề tài. Với mục đích : - Giáo viên gây được hứng thú cho học sinh khi gặp hai loại bàitoán này . - Có kỹ năng nhận diện , phân biệt chính xác hai loại bàitoán này. - Có cách giải và cách trình bày chính xác khoa học, có kỹ năng thành thạo khi giải toán . - Giải được một số dạng bàitoán mà cách giải vận dụng hai dạng toán cơ bản trên . 2. Phạm vi thực hiện đề tài Để thực hiện đề tài này tôi chọn đối tượng là học sinh đại trà lớp 6A trường THCS XXX , thực hiện trong học kì I năm học 20012 – 2013, triển khai áp dụng đối với học sinh lớp 6B năm học 2013 – 2014. 3. Mục tiêu nghiên cứu Nghiên cứu mong muôn sẽ giúp học sinh khắc phục được những yếu điểm đã nêu vềtoánhọc từ đó đạt được kết quả cao khi giải bàitoán nói riêng và đạt kết quả cao trong quá trình học tập nói chung. Ý nghĩa rất quan trọng mà đề tài đặt ra là: Tìm được một phương pháp tối ưu nhất để trong quỹ thời gian cho phép hoàn thành được một hệ thống chương trình quy định và nâng cao thêm về mặt kiến thức, kỹ năng, kỹ xảo trong việc giải cácbài toán. Từ đó phát huy, khơi dậy, sử dụng hiệu quả kiến thức vốn có của học sinh, gây hứng thú học tập cho các em. 4. Nhiệm vụ nghiên cứu. Sáng kiến kinh nghiệm có nhiệm vụ giải đáp các câu hỏi khoa học sau đây: - Kỹ năng là gì? Cơ chế hình thành kỹ năng là như thế nào? - Những tình huống điển hình nào thường gặp trong quá trình giải quyết những vấn đề liên quan. 3 - Trong quá trình giải quyết các vấn đề liên quan, học sinh thường gặp những khó khăn và sai lầm nào? - Những biện pháp sư phạm nào được sử dụng để rèn luyện cho học sinh kỹ năng giải quyết các vấn đề liên quan? - Kết quả của thực nghiệm sư phạm là như thế nào? 5. Phương pháp nghiên cứu: Trong quá trình nghiên cứu, sáng kiến kinh nghiệm sử dụng những phương pháp sau: Nghiên cứu ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA TOÁN-TIN HỌC BÁO CÁO TIỂU LUẬN MÔN HỌC: SỐHỌCVÀ LOGIC ĐỀ TÀI: ĐỒNG DƯ VÀCÁC ĐỊNH LÝ ĐỒNG DƯ Họ tên sinh viên: Đỗ Thị Thu Hiền 1311106 Bùi Thị Yến Duyên 1311046 Trần Thị Ngọc Cẩm 1311026 Lê Thị Hiền Diệu 1311038 Khóa học: 2015-2016 Giảng viên phụ trách: Trần Nam Dũng THÀNH PHỐ HỒ CHÍ MINH-NĂM 2015 I CƠ SỞ KHOA HỌC Cơ sở lý luận Lý thuyết đồng dư xây dựng tảng phép chia vành số nguyên Là nội dung suy luận cách lôgic, chặt chẽ Cơ sở thực tiễn Lý thuyết đồng dư cho ta phương pháp đồng dư, đố động tác có tính chất kỷ thuật giúp bổ sung giải vấn đề chia hết vành số nguyên II NỘI DUNG Đồng dư 1.1 Định nghĩa tính chất 1.1.1 Định nghĩa Cho m m >1 ta nói a b đồng dư theo môđun m viết a b (mod m) a b có số dư chia cho m hay nói cách khác a – b m Ta có : a b (mod m) a – b m Ví dụ: 19 ≡ (mod 8); -25 ≡ (mod 4) Chứng minh: Giả sử chia a b cho n thu thương nguyên phần dư Các phần dư nằm n – 1, nghĩa ≤ r2 ≤ n − a = q1n + r1 b = q2 n + r2 Trong a ≡ b mod n Khi dễ dàng thấy a ≡ b mod n ≤ r1 ≤ n − r1 = r2 Như vậy: a mod n = b mod n 1.1.2 Tính chất đồng dư Tính chất 1: Thì a+c b+d (mod m) a.cb.d (mod m) Chứng minh: + Từ giả thuyết ta có a = mt + b c= d+ ms, suy a+c = b+d + (t+s).m điều có nghĩa a+c b+d (mod m) + Từ giả thuyết ta có a = mt + b c= d+ ms, suy a.c = b.d + (bs+td+mts) n điều có nghĩa a.c b.d (mod m) Tính chất 2: Thì b c (mod m) Tính chất 3: Xét quan hệ , quan hệ tương đương i ii iii Phản xạ : a a (mod m) Đối xứng a b => b a Bắc cầu a b, b c => a c Hệ thặng dư đầy đủ Một họ gồm m đại diện lấy từ m lớp thặng dư gọi hệ thặng dư đầy đủ module m 2.1 Định nghĩa : hệ thặng dư đầy đủ mod m (mod m) Ví dụ: {-4, 5, 10, 15} hệ thặng dư đầy đủ theo modul Ví dụ: {0, 1, 2, 3, 4} hệ thặng dư đầy đủ không âm bé modul Ta có nhận xét: Một tập hợp m số (m > 1) đôi không đồng dư theo modul m lập thành hệ thặng dư đầy đủ theo modul m 2.2 Tiêu chuẩn : hệ thặng dư đầy đủ 2.3 Tính chất Nếu HTDĐĐ module m + hệ thặng dư đầy đủ mô-đun m với số nguyên b + (a,m)=1 hệ thặng dư đầy đủ mô-đun m với số nguyên a nguyên tố Các định lý đồng dư 3.1 Định lý Wilson Với p , p>1, p số nguyên tố (p-1) +1 p (p hợp số (p-1) +1 không chia hết chop) Ví dụ: p = 17 1 (mod 17) 16 -1 (mod 17) 2.9 (mod 17) 3.6 (mod 17) 4.13 (mod 17) 5.7 (mod 17) 8.15 (mod 17) 10.12 (mod 17) 11.14 (mod 17) Ta có 16 (- 1).17 16 + 17 3.2 Định lý Fermat - Định lý Fermat Cho p số tự nhiên khác a số nguyên không chia hết cho m Khi ta có: ap - ≡ (mod p) - Định lý Fermat Cho p số nguyên tố, a số nguyên bât kỳ Khi ta có: ap - ≡ a (mod p) -Định lý fermat nhỏ: a p –a p (a,p) =1 ap-1 (mod p) Bổ đề : với Ví dụ 1: Tìm 32012 mod Giải: lấy 2012 chia cho 6, ta có: 2012=6.335+2 32012 = 36.335 + = (36)335.32 = Ví dụ 2: Chứng minh a1 + a2 + a3 + a4 + a5 (mod 5) a15 + + a55 (mod 5) Giải: số nguyên tố Þ theo định lý Fermat nhỏ: Ví dụ 3: Chứng minh không chia hết cho 11 Giải: Với Do theo định lý Fermat nhỏ với Như 10 số 3.3 Định lý Euler Cho m số tự nhiên khác a số nguyên tố với m Khi ta có: (mod m) Ví dụ 1: Tìm số dư phép chia 109345 chia cho 14 Giải: Ta có: 109 => 109345 ≡ ≡ -3 (mod 14) (-3)345 (mod 14) Ta lại có: ( -3; 14 ) = Hơn nữa: µ(14) = Nên: (-3)6 => (-3)345 ≡ ≡ 1 14.(1 − )(1 − ) = (mod 14) (theo đ ịnh l ý Ơle) (-3)3 (mod 14) Mặt khác: (-3)3 = -27 ≡ (mod 14) Vậy số dư phép chia 109345 chia cho 14 Ví dụ 2: Chứng minh 23 n +1 + 311 Giải: Ta có: µ(11) = 10; µ(10) = với n số tự nhiên 1 10(1 − )(1 − ) Áp dụng ĐL Eucler ta có: (3; 10) = => 34 ≡ (mod 10) => 34n + Đặt 34n + = 10.k + với k n +1 23 Khi ta có: ∈ ≡ = 3µ(10) ≡ (mod 10) (mod 10) N + = 210.k +1 + Áp dụng định lý Eucler ta có: (2; 11) = Nên µ(11) ≡ 210 ≡ (mod 11) (mod 11) => 210.k +3 ≡ 23 (mod 11) n +1 => 210.k +3 + ≡ 23 +3 (mod 11) 23 +3 ≡ (mod 11) Vậy 23 n +1 + 311 Ví dụ 3: Tìm chữ số tận 20092010 Giải: Ta có: 20092010 ≡ 92010 (mod 100) Áp dụng định lý Eucler ta có: (9; 100) =1 Nên: µ(100) ≡ (mod 100) Mà µ(100) = ≡ Hay: 940 (mod 100) => 92010 Mà 910 = 3486784401 ≡ ≡ 1 100.(1 − TRẦN THỊ DƯƠNG VỀCÁCBÀITOÁN NP-C VÀ MỘT SỐ PHƯƠNG PHÁP GIẢI Chuyên ngành : Khoa học máy tính Mã số : 60480101 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Thái Nguyên - 2014 MỞ ĐẦU Ngày nay, với phát triển mạnh mẽ khoa học công nghệ, đặc biệt máy tính, người ta có khả giải nhiều toán phức tạp Tuy nhiên, vấn đề ―không giải được‖ cho dù kỹ thuật máy tính có phát triển có vấn đề xem ―quá phức tạp‖, vượt khả tính toán thực tế nhiều thời gian Việc nghiên cứu độ phức tạp thuật toán cho phép phân loại lớp toán theo mức độ phức tạp khác nhau, ranh giới lớp toán giải lớp toán giải thời gian đa thức Trong lý thuyết độ phức tạp tính toán, lớp NP - C (NP - đầy đủ) lớp toán định Một toán L NP - C nằm lớp NP (lời giải cho L kiểm chứng thời gian đa thức) NP Hard (mọi toán NP quy L thời gian đa thức) Mặc dù lời giải cho toán kiểm chứng nhanh chóng, chưa có cách tìm lời giải cách hiệu Thời gian thực thi tất thuật toán cho toán tăng nhanh theo kích thước toán Vì trường hợp có kích thước tương đối lớn đòi hỏi thời gian hàng tỷ năm để giải Cáctoán lớp NP - C tập hợp toán NP - Hard NP Cáctoán lớp NP - C quan tâm nghiên cứu khả kiểm chứng nhanh chóng lời giải (NP) dường có liên hệ với khả tìm kiếm nhanh chóng lời giải (P) Hiện chưa biết toán NP giải nhanh chóng hay không (đây toán P so với NP) Tuy nhiên, toán NP - C giải nhanh chóng, theo định nghĩa NP - C, toán NP giải nhanh chóng Cáctoán NP- C xuất thường xuyên thực tế nên, chưa có giải thuật thời gian đa thức cho chúng, nhà nghiên cứu tìm cách giải chúng thông qua phương pháp khác thuật toán xấp xỉ, thuật toán gần nhân tử hóa, v.v Việc tìm hiểu nghiên cứu phương pháp giải toán lớp NP- C toán mở khoa học máy tính Vì em chọn đề tài: Vềtoán NP-C số phương pháp giải để làm luận văn tốt nghiệp Cấu trúc luận văn gồm: Phần mở đầu, phần kết luận chương nội dung, cụ thể: Chương 1: Khái niệm lớp toán P, NP, NP-C Trong chương em giới thiệu chung lớp toán P, NP, NP – C, minh họa ví dụ cụ thể đưa mối quan hệ lớp P, NP NP-C Chương 2: Phương pháp tham phương pháp nhánh cận giải sốtoán NP-C Trong chương em trình bày phương pháp tham giải toán đồ thị phương pháp nhánh cận giải toán Ba lô, toán tìm đường ngắn Chương 3: Chương trình thử nghiệm Chương thể chương trình cài đặt thuật toán nhánh cận giải toán Ba lô 3 Chƣơng 1: KHÁI NIỆM CÁC LỚP BÀITOÁN P, NP, NP – C 1.1 Vài khái niệm lý thuyết độ phức tạp 1.1.1 Máy Turing tất định không tất định Máy Turing máy tính trừu tượng mô tả trình tính toán máy tính Máy Turing có hai loại: Máy Turing tất định (Deterministic Turing Machine) Máy Turing không tất định (Nondeterministic Turing Machine) mô tả sau: Máy Turing tất định Mô tả cách làm việc máy: Máy Turing tất định gồm điều khiển hữu hạn trạng thái, đầu đọc ghi, băng vô hạn chia thành ô vuông, ô lưu giữ ký hiệu thuộc tập hữu hạn ký hiệu Hình 1.1 Mô tả máy tính Turing tất định Khởi đầu, xâu Input đặt băng, chuỗi ký hiệu có chiều dài hữu hạn chọn từ chữ Những ô lại băng vô hạn theo hai bên phải trái, chứa ký hiệu đặc biệt ký hiệu trống ( diễn tả trạng thái ô ký hiệu nào) Có đầu đọc – ghi vào ô băng Ta nói máy Turing đọc – ghi ô Lúc khởi hoạt, đầu đọc – ghi nằm tận bên trái xâu Input Một bước hoạt động máy Turing quy định hàm phụ thuộc trạng thái điều khiển ký hiệu đọc chuyển vị Trong bước hoạt động, máy Turing sẽ: - Thay đổi trạng thái Trạng thái trạng thái - Ghi ký hiệu băng vào ô quét Ký hiệu băng thay ký hiệu băng có ô vuông Ký hiệu ghi ký hiệu - Di chuyển đầu đọc – ghi sang trái sang phải Một cách không hình thức, ta định nghĩa sau: Định nghĩa 1.1 Một máy Turing M tất định M = (Q, Σ, Γ, δ, q0, B, F) Trong thành phần M có ý nghĩa sau: Q: tập hữu hạn trạng thái điều khiển hữu hạn Σ: Tập hữu hạn chữ Γ: Tập đầy đủ kí hiệu băng; Σ tập Γ : Hàm chuyển vị, : Γ ×Q x {1, 0, 1}.Đối (q, X) trạng thái q kí hiệu băng X Giá trị (q, X) định nghĩa ba (p, Y, D) Header Page of 126 TRN TH DNG V CC BI TON NP-C V MT S PHNG PHP GII Chuyờn ngnh : Khoa hc mỏy tớnh Mó s : 60480101 LUN VN THC S KHOA HC MY TNH Thỏi Nguyờn - 2014 Footer Page of 126 Header Page of 126 M U Ngy nay, cựng vi s phỏt trin mnh m ca khoa hc v cụng ngh, c bit l mỏy tớnh, ngi ta cú kh nng gii quyt c nhiu bi toỏn rt phc Tuy nhiờn, cũn nhng l khụng gii c cho dự k thut mỏy tớnh cú phỏt trin v cng cú nhng c xem l quỏ phc tp, vt mi kh nng tớnh toỏn thc t vỡ mt quỏ nhiu thi gian Vic nghiờn cu v phc ca thut toỏn ó cho phộp chỳng ta phõn loi c cỏc lp bi toỏn theo tng mc phc khỏc nhau, v ch ranh gii gia cỏc lp bi toỏn gii c v nhng lp bi toỏn khụng th gii c thi gian a thc Trong lý thuyt phc tớnh toỏn, lp NP - C (NP - y ) l mt lp cỏc bi toỏn quyt nh Mt bi toỏn L l NP - C nu nú nm lp NP (li gii cho L cú th c kim chng thi gian a thc) v l NP Hard (mi bi toỏn NP u cú th quy v L thi gian a thc) Mc dự bt kỡ li gii no cho mi bi toỏn u cú th c kim chng nhanh chúng, hin cha cú cỏch no tỡm c li gii ú mt cỏch hiu qu Thi gian thc thi ca tt c cỏc thut toỏn hin ti cho nhng bi toỏn ny u tng rt nhanh theo kớch thc bi toỏn Vỡ vy c nhng trng hp cú kớch thc tng i ln ó ũi hi thi gian hng t nm gii Cỏc bi toỏn lp NP - C l hp cỏc bi toỏn NP - Hard NP Cỏc bi toỏn lp NP - C c quan tõm nghiờn cu bi kh nng kim chng nhanh chúng li gii (NP) dng nh cú liờn h vi kh nng tỡm kim nhanh chúng li gii (P) Hin cha bit c nu mi bi toỏn NP u cú th c gii quyt nhanh chúng hay khụng (õy chớnh l bi toỏn P so vi Footer Page of 126 Header Page of 126 NP) Tuy nhiờn, nu bt kỡ mt bi toỏn no NP - C cú th c gii quyt nhanh chúng, thỡ theo nh ngha ca NP - C, mi bi toỏn NP u cú th c gii quyt nhanh chúng Cỏc bi toỏn NP- C xut hin thng xuyờn thc t nờn, mc dự cha cú gii thut thi gian a thc cho chỳng, cỏc nh nghiờn cu tỡm cỏch gii quyt chỳng thụng qua cỏc phng phỏp khỏc nh thut toỏn xp x, thut toỏn gn ỳng nhõn t húa, v.v Vic tỡm hiu v nghiờn cu cỏc phng phỏp gii bi toỏn lp NP- C l mt nhng bi toỏn m ca khoa hc mỏy tớnh hin Vỡ vy em ó chn ti: V cỏc bi toỏn NP-C v mt s phng phỏp gii lm lun tt nghip Cu trỳc ca lun gm: Phn m u, phn kt lun v chng ni dung, c th: Chng 1: Khỏi nim cỏc lp bi toỏn P, NP, NP-C Trong chng ny em gii thiu chung v cỏc lp bi toỏn P, NP, NP C, minh bng cỏc vớ d c th v a mi quan h gia lp P, NP v NP-C Chng 2: Phng phỏp tham v phng phỏp nhỏnh cn gii mt s bi toỏn NP-C Trong chng ny em trỡnh by phng phỏp tham gii bi toỏn v th v phng phỏp nhỏnh cn gii bi toỏn Ba lụ, bi toỏn tỡm ng i ngn nht Chng 3: Chng trỡnh th nghim Chng ny th hin chng trỡnh ci t thut toỏn nhỏnh cn gii bi toỏn Ba lụ Footer Page of 126 Header Page of 126 Chng 1: KHI NIM CC LP BI TON P, NP, NP C 1.1 Vi khỏi nim c bn ca lý thuyt phc 1.1.1 Mỏy Turing tt nh v khụng tt nh Mỏy Turing l mt mỏy tớnh tru tng mụ t cỏc quỏ trỡnh tớnh toỏn trờn mỏy tớnh Mỏy Turing cú hai loi: Mỏy Turing tt nh (Deterministic Turing Machine) v Mỏy Turing khụng tt nh (Nondeterministic Turing Machine) c mụ t nh sau: Mỏy Turing tt nh Mụ t cỏch lm vic ca mỏy: Mỏy Turing tt nh gm mt b iu khin hu hn trng thỏi, mt u c v ghi, mt bng vụ hn c chia thnh tng ụ vuụng, mi ụ cú th lu gi mt ký hiu thuc hu hn cỏc ký hiu Hỡnh 1.1 Mụ t mỏy tớnh Turing tt nh Khi u, mt xõu Input c t trờn mt bng, ú l chui ký hiu cú chiu di hu hn c chn t mt b ch cỏi Nhng ụ cũn li ca bng vụ hn theo c hai bờn phi v trỏi, cha mt ký hiu c bit l ký hiu trng ( din t trng thỏi ụ khụng cú ký hiu no) Cú mt u c ghi luụn ch vo mt cỏc ụ ca bng Ta núi rng mỏy Turing ang c ghi ụ ú Lỳc hot, u c ghi nm Footer Page of 126 Header Page of 126 tn bờn trỏi ca xõu Input Mt bc hot ng ca mỏy Turing c quy nh bi mt hm ph thuc trng thỏi ca b iu khin v ký hiu ang c c chuyn v Trong mt bc hot ng, mỏy Turing s: - Thay i trng thỏi Trng thỏi tip theo cng chớnh l trng thỏi hin ti - Ghi mt ký hiu bng vo ụ ang c quột Ký hiu bng ny thay th ký hiu bng ang cú ụ vuụng ú Ký hiu c ghi cng cú th chớnh l ký hiu hin ang ú - Di chuyn u c ghi sang trỏi hoc sang ... ưcln; bcnn hay nhiều số Bài toán1 Tìm ƯCLN ; BCNN của: 56; 140 84 * Giải: Ta có: 56 = 23.7; 140 =22.5.7 ; 84 =22.3.7 Các thừa số nguyên tố chung là: 2; Các thừa số nguyên tố riêng là: 3; ƯCLN( 56; ... 84) = 22.7 = 28 BCNN ( 56; 140; 84) = 23.3.5.7 = 840 Bài toán Tìm ƯC; BC 56; 140 84 *Giải: Để tìm ƯC; BC số ta không cần lập tập hợp ước bội số mà thông qua ƯCLN; BCNN để tìm ƯC( 56; 140; 84) =... cần tìm số ngày mà bạn lại trực nhật nên a = BCNN ( 10; 12) = 60 ( ngày ) Lúc An trực nhật 60 : 10 = ( lần) Bách trực nhật 60 : 12 = ( lần) Đáp số: 60 ngày; An trực nhật lần; Bách trực nhật lần