Tổng hợp những câu hỏi cần thiết và quan trọng của môn Lý thuyết độ phức tạp tính toán (KMA). Tài liệu này giúp các bạn sinh viên có thể vượt qua các bài kiểm tra giữa kỳ, cuối kỳ và đạt kết quả cao nhất. Xin cảm ơn các bạn đã xem và tải tài liệu.
Trang 1Câu 1 Nội dung và mối quan hệ mật thiết giữa ba lĩnh vực nghiên cứu của lý thuyết tính toán Nội dung 3 lĩnh vực của lý thuyết tính toán là:
*1 Lý thuyết otomat đề cập đến việc xây dựng các mô hình toán học về tính toán.
*2 Mục tiêu của lý thuyết về khả năng tính toán là phân chia các bài toán thành lớp các bài
toán giải được và lớp các bài toán không giải được.
*3 Trong khi đó, lý thuyết độ phức tạp tính toán phân chia các bài toán giải được thành các lớp
khác nhau theo mức độ khó khăn khi giải chúng.
~ Ba lĩnh vực nghiên cứu của lý thuyết tính toán tuy có nội dung nghiên cứu riêng rẽ nhưng chúng có quan hệ mật thiết với nhau Để hình dung được sự ảnh hưởng qua lại giữa ba lĩnh vực trong sự phát triển chung của lý thuyết tính toán, chúng ta hãy quan sát vai trò của mỗi lĩnh vực được thể hiện như thế nào trong quá trình giải quyết một bài toán.
~ Về lý thuyết quá trình giải bài toán bao gồm việc lập mô hình toán học cho bài toán khi cần thiết và dựa trên mô hình đó xây dựng phương pháp giải cụ thể hơn là thuật toán giải Tuy nhiên để bài toán giải được 1 cách thực tế, việc lập mô hình toán học cho bài toán cũng như việc xây dựng thuật toán giải nó đều phải thích hợp với những trang thiết bị tính toán hiện có Những trang thiết bị này có được là nhờ các thành tựu của công nghệ mang lại, mà cơ sở lý luận của nó
dựa trên những kết quả nghiên cứu của lý thuyết otomat.
~ Đôi khi trong quá trình giải bài toán, mặc dù đã rất cố gắng nhưng ta vẫn không thể tìm được 1 thuật toán giải nó Khó khăn này có thể do bản chất phức tạp của bài toán chứ không phải vì ta kém cỏi Khẳng định điều này, tức là việc chứng tỏ không có thuật toán giải bài toán, là phận sự
của lý thuyết về khả năng tính toán.
~ Mặc khác, ngay cả khi ta đã xây dựng được thuật toán giải bài toán, nhưng trên thực tế đôi khi để nhận được 1 lời giải thỏa đáng lại rất gian nan, dù ta được cung cấp đầy đủ các trang thiết bị hiện đại nhất Như vậy, giữa “giải được về mặt lý thuyết” và “giải được 1 cách thực tế” có 1 sự khác biệt đáng kể, trong đó “giải được 1 cách thực tế” là giải được trên máy tính điện tử trong phạm vi khả năng về thời gian cũng như về bộ nhớ mà máy có thể có được Lý giải sự khác biệt
này là việc làm của lý thuyết độ phức tạp tính toán.
Câu 2: sự ra đời và phát triển của Lý Thuyết độ phức tạp tính toán
~ Những năm 40 50 thế kỷ XX, sau khi máy tính điện tử ra đời, tưởng rằng với những phương tiện tính toán hiện đại như vậy, việc thực hiện thuật toán để giải tiếp bài toán là việc làm đơn giản Song thực tế lại không lúc nào cũng được như mong muốn Chẳng hạn khi thực hiện thuật toán trên máy tính, nhiều bài toán giải được một cách dễ dàng và cũng không ít bài toán rất khó giải, thậm chí không thể giải được, mặc dù về mặt lý thuyết chúng hoàn toàn giải được bằng nhiều thuật toán khác nhau.
~ Như vậy trong thực tiễn ta thường gặp những bài toán dễ và cả những bài toán khó Ngoài ra 1 bài toán cũng có thể giải bằng nhiều thuật toán xấu tốt khác nhau, và ngay với 1 thuật toán thì có thể trong trường hợp này cho kết quả nhanh còn trong trường hợp khác thì chậm Hơn nữa giải được về mặt lý thuyết và giải được 1 cách thực tế đối vs nhiều bài toán cũng có những khác biệt đáng kể.
Những điều nói trên là hiện tượng khá phổ biến Việc khám phá nguyên nhân dẫn đến hiện tượng như vậy có ý nghĩa quan trọng về mặt lý thuyết và có ý nghĩa to lớn về mặt ứng dụng Nguyên
Trang 2nhân ấy phải chăng là do bản chất phức tạp của bài toán, hay là do thuật toán mà ta xây dựng chưa hiệu quả, và cũng có thể là do trang thiết bị tính toán chưa hiện đại,
~ Liên quan đến việc này vào cuối thập niên 60 thế kỷ XX, lý thuyết độ phức tạp tính toán
được hình thành Dựa trên những khám phá về sự phụ thuộc giữa “kích cỡ” của bài toán vs thời gian thực hiện thuật toán cũng như với dung lượng bộ nhớ mà máy cần sử dụng trong quá trình tính toán, lý thuyết này tiến hành xem xét “độ phức tạp thời gian” và “độ phức tạp không gian” của thuật toán như những hàm phụ thuộc vào “kích cỡ” của bài toán Nhờ đó ta có cái nhìn thống nhất về độ phức tạp của các thuật toán.
~ Ra đời và phát triển mạnh mẽ khoảng 40 năm qua, lý thuyết độ phức tạp tính toán tuy vẫn chưa có được một lý giải thỏa đáng cho những hiện tượng phổ biến nêu trên, nhưng nó đã có một bước tiến đáng kể với nhiều kết quả phong phú có ý nghĩa nhất định về lý thuyết cũng như ứng dụng Nhờ tiến hành khảo sát các bài toán trong một khuôn khổ chung, lý thuyết độ phức tạp tính toán cho ta những hiểu biết khái quát về tính phức tạp của 1 lớp rộng rãi các bài toán, đồng thời cũng gợi mở cho ta những phương hướng giải quyết đối với các bài toán cụ thể mà ta gặp phải.
Câu 3 trình bày các điểm cơ bản trong cách tiếp cận bài toán, có ví dụ minh họa
~ Các bài toán mà ta thường gặp thuộc rất nhiều lĩnh vực khác nhau và có những dạng phân biệt ,
nhưng đa phần là dạng bài toán quyết định hoặc bài toán tìm kiếm, trong đó nói riêng là đạng
bài toán tối ưu
Đây là những bài toán thuần túy toán học hoặc nảy sinh từ hoạt động thực tiễn Các bài toán có thể được phát biểu chính xác bằng ngôn ngữ toán học hoặc ngôn ngữ tự nhiên dân dã Trong trường hợp bài toán chưa được phát biểu bằng ngôn ngữ toán học, việc đầu tiên ta làm là phải dịch bài toán đó sang một ngữ cảnh toán học thích hợp, ví dụ như :
Bài toán xếp ba lô: Cho một lô hàng hóa gồm các gói hàng,mỗi gói hàng đều có khối lượng cùng
với giá trị cụ thể, và cho một chiệc ba lô Hãy chọn từ lô này 1 số gói hàng nào đó và xếp đầy vào ba lô, nhưng không dược quá, sao cho thu được 1 giá trị lớn nhất có thể.
~ Đây là bái toán tối ưu tổ hợp quen thuộc, được ký hiệu là Max-Knapsack và được phát biểu
bằng ngôn ngữ toán học như sau:
Dữ kiện: cho hai dãy số dương s1, s2, … , sn, S và v1,v2,….,vn.
Yêu cầu: tìm một tập con I thuộc {1,2,…,n} sao cho ∑ (i thuộc I) si <= S và ∑(i thuộc I)vi tiến tới Max.
~ Lập được mô hình thích hợp như vậy cho bài toán là một bước quan trọng, nhưng mới chỉ là phần khởi đầu của quá trình giải bài toán Trong việc hoàn tất giải bài toán, khâu cơ bản nhất là dựa trên mô hình toán học của bài toán ta cần đề xuất 1 phương pháp giải hay lý tưởng hơn là xây dựng một thủ tục chặt chẽ xử lý 1 cách hiệu quả thông tin liên quan đến mỗi dữ kiện bài toán, để từ đó thu được nghiệm tương ứng với từng dữ kiện Cuối cùng cần tiến hành phân tích và đánh giá hiệu quả của cách giải bài toán cũng như khả năng thực hiện hóa trên những trang thiết bị tính toán hiện có.
Xây dựng các phương pháp hiệu quả giải quyết các bài toán riêng rẽ nảy sinh từ thực tiễn rất có ý nghĩa đối với ứng dụng Để có được những kết luận hay những kết quả nghiên cứu mang tính khái quát, các bài toán cần được xem xét trong một khuôn khổ chung Các nghiên cứu như vậy giúp chúng ta có một cách nhìn thống nhất đối với vấn đề phức tạo của các bài toán, đồng thời
Trang 3cho ta những hiểu biết khái quát và những hướng dẫn cần thiết trong các tình huống cụ thể, và vì thế nó không chỉ có ý nghĩa lý luận mà còn rất thiết thực cho ứng dụng Việc nghiên cứu này được giới hạn trong các bài toán quyết định, do chúng có 1 sự thể hiện khá tự nhiên dưới dạng ngôn ngữ hình thức rất thích hợp cho việc phân tích và xử lý thông tin bởi 1 mô hình toán chung ~ Tuy nhiên việc giới hạn như vậy thực chất không gây 1 hạn chế nào đáng kể, bởi vì cần xem xét 1 bài toán tìm kiếm hay 1 bài toán tối ưu nói riêng, ta có thể nghiên cứu các bài toán quyết định không khó hơn tương ứng với nó, và từ những kết quả nghiên cứu liên quan đến vấn đề phức tạp của bài toán quyết định, ta có thể đi đến những kết luận thích hợp với bài toán đã cho Câu 4 trình bày cách xác lập tương ứng bài toán tìm kiếm và bài toán quyết định có vd minh họa Để xác lập sự tương ứng giữa bài toán tìm kiếm và bài toán quyết định, trước tiên ta cần phân biệt các loại bài toán mà ta xem xét.
Một bài toán có thể được phát biểu thành 2 phần tách biệt: phần dữ kiện và phần yêu cầu Đốivới phần dữ kiện, ta cần xác định rõ tập dữ kiện của bài toán bao gồm những dữ kiện cụ thểnào Còn phần yêu cầu thường có 2 loại
1 Loại thứ nhất là 1 câu hỏi mà đối với dữ kiện bài toán chỉ cần trả lời đơn giản là “đúng” hoặc
“sai” được gọi là bài toán quyết định
2 Loại thứ hai là yêu cầu tìm kiếm nghiệm đối với dữ kiện bất kỳ cho trước, được gọi là bàitoán tìm kiếm Trong lớp các bài toán tìm kiếm, các bài toán tối ưu có 1 vị trí quan trọng Bàitoán cực đại hóa và bài toán cực tiểu hóa là các bài toán tối ưu với yêu cầu tìm kiếm nghiệmchấp nhận được với giá trị lớn nhất và nhỏ nhất tương ứng.
Bài toán quyết định tương ứng với bài toán tìm kiếm có thể được xác định đơn giản bằng cách
thay yêu cầu: ”Tìm nghiệm với dữ kiện cho trước” bằng câu hỏi “phải chăng tồn tại nghiệm với
mỗi dữ kiện đã cho?”
Trong trường hợp này tập dữ kiện không thay đổi Ví Dụ “hãy tìm chu trình hamilton trong mỗi đồ thị cho trước” được tương ứng với bài toán quyết định sau đây:
Dữ kiện: Cho 1 đồ thị G
Câu hỏi: Phải chăng trong G có chu trình hamilton?
Tuy nhiên các bài toán tối ưu được tương ứng với các bài toán quyết định thích hợp hơn Bài toán quyết định tương ứng với bài toán cực đại hóa (cực tiểu hóa) được xác định như sau:
Tập dữ kiện của nó được xây dựng bằng cách thêm vào mỗi dữ kiện của bài toán tối ưu 1ranh giới B tùy ý, thuộc cùng miền xác định giá trị của nghiệm Tiếp theo, câu hỏi được phátbiểu rằng, đối với mỗi dữ kiện như vậy, phải chăng có 1 nghiệm chấp nhận được vs giá trị k nhỏhơn B ( không lớn hơn B, tương ứng)?
Ví Dụ : bài toán cực đại hóa MAX-KNAPSACK đc tương ứng với bài toán quyết định sau đây:
Dữ kiện: cho hai dãy số dương s1, s2, … , sn, S và v1,v2,….,vn, B
Câu hỏi: phải chăng có một tập con I thuộc {1,2,…,n} sao cho ∑ (i thuộc I) si <= S và ∑(i thuộc I)vi >= B.
Trang 4Như vậy mỗi bài toán tìm kiếm hay mỗi bài toán tối ưu nói riêng đều có thể đc tương ứng với 1 bài toán quyết định mà thường là không khó hơn Riêng đối với bài toán tối ưu, do việc tính toán giá trị các nghiệm là tương đối dễ dàng nên bài toán quyết định tương ứng không thể khó hơn bài toán tối ưu ban đầu.
Cuối cùng, ta tìm cách đặc trưng mỗi bài toán quyết định bởi 1 ngôn ngữ hình thức nào đó, bằng cách mã hóa từng dữ kiện của bài toán bởi 1 từ trên bảng chữ thích hợp và xác định ngôn ngữ tương ứng vs bài toán ấy Việc mã hóa này có thể được thực hiện theo 1 quy trình chung đối với 1 vài ràng buộc cần thiết.
Câu 5 trình bày về ngôn biễu diễn bài toán quyết định, ví dụ dùng xâu liên kết để biểu diễn cho đồ thị có hướng nào đó (29-đầu 31).
Ngôn ngữ biểu diễn bài toán quyết định phải đảm bảo các tiêu chí sau đây:
*1 tính súc tích: 1 bài toán quyết định thường được diễn tả bằng nhiều ngôn ngữ hình thức khác
nhau, theo những phép mã hóa khác nhau đối với các dữ kiện bài toán, để đảm bảo tính súc tích, việc mã hóa cần phải thỏa mãn các tiêu chí sau:
c1) từ mã của mỗi dữ kiện bài toán phải ngắn gọn và không được thêm các thông tin không cần thiết.
c2) các số tham gia trong bài toán cần được biểu diễn dưới dạng nhị phân hoặc theo 1 cơ số nào đó lớn hơn 1.
*2 Sơ đồ mã hóa chuẩn: đối với từng bài toán cụ thể ta dễ dàng xây dựng được 1 phép mã hóa
thích hợp Tuy nhiên việc đưa ra 1 định nghĩa hình thức về phép mã hóa là không hề đơn giản.
Song về mặc nguyên tắc các phép mã hóa thích hợp có thể được xây dựng dựa trên 1 sơ đồ mãhóa chuẩn, mà theo đó các dữ kiện của bài toán đc biểu diễn bởi các xâu liên kết tức xâu có cấutrúc, trên bảng chữ chứa Ѱ={0,1,-,[,],(,),,} với ký tự cuối là dấu phẩy “,” Xâu liên kết đc định
nghĩa đệ qui như sau:
e1) biểu diễn nhị phân của 1 số nguyên k (1 xâu bao gồm các ký tự 0 và 1, có ký tự “-” ở trước nếu k là số âm) là 1 xâu liên kết biểu thị số nguyên k.
e2) nếu x là 1 xâu liên kết biểu thị số nguyên k, thì [x] là 1 xâu liên kết biểu thị “tên” của đối tượng mang số hiệu k.
e3) nếu y1,y2,….,ym là các xâu liên kết biểu thị các đối tượng Y1,Y2,…,Ym thì (y1,y2, …,ym) là 1 xâu liên kết biểu thị dãy (Y1,Y2,…,Ym).
- Dựa theo sơ đồ mã hóa này, ta có thể biểu diễn các dữ kiện của bài toán bởi các xâu liên kết trên một bảng chữ nào đó chứa các kí tự thuộc bảng chữ Ѱ kể trên Dĩ nhiên đây là một sơ đồ nên nó chỉ mang tính nguyên tắc, để đáp ứng yêu cầu về tính súc tích của ngôn ngữ, trong từng trường hợp cụ thể ta có thể bổ sung những quy tắc cần thiết, nhưng vẫn phải đảm bảo tính chuẩn xác của việc biểu diễn.
Ví Dụ: Một đồ thị có hướng G=(V,A) được biểu diễn bởi 1 xâu liên kết (x,y), ta ký hiệu là <G>=(x,y), trong đó x là xâu liên kết biểu diễn tập đỉnh V của đồ thị, và y là xâu liên kết biểu diễn tập cung A của đồ thị Cụ thể với V={v1,…vn} và A{a1, ,am}, trong đó cung aj= (Vkj, Vhj), 1≤ j≤ m, theo sơ đồ mã hóa chuẩn nêu trên ta có thể biểu diễn đồ thị G như sau: G= (([1], [2],…,[n]),(([k1],[h1]),([k2],[h2]),….,([km],[hm])))
//tất cả đều có dấu hai chấm trên đầu biểu thị xâu nhị phân.
Trang 5- Tuy nhiên, để đáp ứng tính súc tích của ngôn ngữ, đồ thị G có thể đc biểu diễn bằng 1 xâu đơn giản hơn <G> = 1,2, ,n#(k1,h1),(k2,h2),…,(km,hm) //tất cả có 2 chấm trên đầu
Trên bảng chữ 6 ký tự {0,1,(,),#,,}, trong đó xâu trước ký tự # biểu diễn tập đỉnh và xâu sau # biểu diễn các cung của đồ thị VD đồ thị ngôi sao 5 cánh sau G1 với tập đỉnh {v1,v2,v3,v4,v5} đc biểu diễn bởi xâu liên kết:
<G1>=1,2,3,4,5#(1,3)(1,4)(2,5)(2,4)(3,5) //tất cả có 2 chấm trên đầu.
*3 Ngôn ngữ đặc trưng của bài toán quyết định
-Giả sử π là một bài toán quyết định với tập dữ kiện D π và câu hỏi Q π trên mỗi dữ liện bài toán Khi đó Q π xác định một tính chất đối với mọi dữ kiện của bài toán, tức một hàm từ tập D π đến tập các giá trị chân lý {ĐÚNG , SAI} như sau: Đối với mỗi dữ kiện d € D π , ta có Q π(d) = ĐÚNG khi câu hỏi Q π trên dữ kiện d được trả lời là “Đúng”; trong trường hợp ngược lại Q π(d) = SAI.
-Giả sử e là một phép mã hoá thích hợp nào đó đối với bài toán II, mf theo đó mõi dữ liệu bài toán được biểu diễn bởi một xâu liên kết trên bảng chữ ∑ Như vậy, e ánh xạ các sự kiện bài toán thành các xâu thuộc ∑* Để đơn giản, khi không cần lưu ý đến phép mã hoá e, ta ký hiệu <d> = e(d) đối với mỗi d € D π
Ta định nghĩa các ngôn ngữ sau : L(D π) =def {<d>| d € D π }
L(D π) =def {<d>| d € D π & Q π(d) = ĐÚNG} //def ở trên dấu =
- Rõ ràng ngôn ngữ L(II) diễn đạt nội dung của bài toán II, nên được gọi là ngôn ngữ đặctrưng của II, hay ngôn ngữ tương ứng của bài toán II, và được ký hiệu ngắn gọi bởi
chữ nghiên II.
- Ta có II =def L(II) ⸺ L(D π) ⸺ ∑*⸦ L(D π) ⸺⸦ ∑* ⸦ L(D π) ⸺⸦ ∑*
Câu 6 trình bày về ngôn ngữ đặc trưng của bài toán quyết định và mô hình tính toán đoán nhận ngôn ngữ (31-đầu 32)
Ngôn ngữ đặc trưng của bài toán quyết định: Giả sử Π là 1 bài toán quyết định vs tập dữ kiện DΠ, và câu hỏi QΠ trên mỗi dữ kiện của bài toán Khi đó QΠ xác định 1 tính chất đối vs mọi dữ kiện của bài toán, tức từ tập DΠ đến tập các giá trị chân lý {đúng,sai} như sau: đối với mỗi dữ kiện d (thuộc) DΠ ta có QΠ(d)=đúng khi câu hỏi QΠ trên dữ kiện d đc trả lời “đúng” và ngược lại QΠ(d)=sai.
Giả sử e là 1 phép mã hóa thích hợp nào đó đối với bài toán Π, mà theo đó mỗi dữ kiện bài toán đc biểu diễn bởi 1 xâu liên kết trên bảng chữ ∑ Như vậy, e ánh xạ các dữ kiện bài toán thành các xâu thuộc ∑ * Để đơn giản, khi k cần lưu ý đến phép mã hóa e, ta ký hiệu <d>=e(d) đối vs mỗi d (thuộc) DΠ .
Ta định nghĩa các ngôn ngữ sau:
L(DΠ)=def (viết trên dấu =) {<d>|d (thuộc) DΠ },
L(Π)= def (viết trên dấu =) {<d>|d (thuộc) DΠ & QΠ (d)=ĐÚNG}.
Rõ ràng ngôn ngữ L(Π) diễn đạt nội dung của bài toán Π, nên đgl ngôn ngữ đặc trưng của Π, hay
ngôn tương ứng với bài toán Π, và đc ký hiệu ngắn gọn bởi chữ nghiêng Π Ta có:
Trang 6Π = (def) L(Π) (thuộc) L(DΠ) (thuộc) ∑ *
- đoán nhận ngôn ngữ: cho PI là 1 bài toán quyết định, L(Dpi) là ngôn ngữ trên bảng chữ XÍCH
MA biểu diễn tập dữ kiện của PI, và PI là ngôn ngữ tương ứng với bài toán PI g/s tồn tại 1 mô
hình tính toán hình thức, mà khi xử lý trên mỗi xâu thuộc L(Dpi), hay thuộc XÍCH MA SAO nói
chung, nó có thể phân biệt được xâu nào thuộc PI và xâu nào k nghĩa là mô hình tính toán ấy cókhả năng nhận biết hay đoán nhận ngôn ngữ PI Khi đó ta dễ dàng thu được lời giải của bài toán
quyết định PI
Câu 7 mô tả cấu tạo và nguyên tắc hoạt động của máy turing (36-đầu 38)
Cấu tạo: máy turing hay máy turing tất định 1 băng là 1 mô hình xử lý tin tự động, mà mỗi dữ liệu đầu vào được biểu diễn đc biểu diễn dưới dạng 1 từ trên bảng chữ xích ma nào đó Quá trình hoạt động của máy diễn ra trong thời gian rời rạc t==0,1,2… máy bao gồm 1 bộ phận điều khiển, 1 băng vô hạn về phía phải, và 1 đầu đọc ghi kết nối bộ phận điều khiển vs băng.
Vẽ hình
+ băng: (băng đơn) đc chia thành các ô bắt đầu từ trái qua phải,mỗi ô chứa 1 ký tự thuộc bảng chữ T nào đó Bảng chữ này chứa ∑, 1 ký tự đặc biệt Ɵ để biểu thị ô trống tại thời điểm bắt đầu t=0, dữ liệu đầu vào đc ghi trên băng bắt đầu từ ô đầu tiên, các ô còn lại trống
+ đầu đọc – ghi Tại mỗi thời điểm hoạt động của máy soi xét 1 ô trên băng, có nhiệm vụ đọc ký tự ở ô đó rồi thông báo cho bộ phận điều khiển để được chỉ dẫn thay kí tự đó bằng 1 ký tự khác, và sau đó có thể chuyển sang ô bên trái hoặc bên phải
+ bộ phận điều khiển: có 1 tập hữu hạn các trạng thái Q, và tại mỗi thời điểm hoạt động nó chỉ ở 1 trạng thái Tập Q chứa 3 trạng thái đặc biệt, q0, qy, và qn trong đó qo là … Nguyên tắc hoạt động: vào thời điểm ban đầu: trạng thái của bộ điều khiển, việc nạp dữ
liệu đầu vào và vị trí của đầu đọc-ghi đc xác định theo qui ước đã nêu trên Quá trình xử lí tin trên mỗi dữ liệu đầu vào đc diễn ra theo các lệnh của máy Tại mỗi thời điểm hoạt động, khi bộ phận điều khiển ở trạng thái q và đầu đọc-ghi đọc đc kí tự x trên băng, nếu máy có lệnh với khúc đầu qx thì máy thực hiện lệnh đó theo nội dung nói trên Trong trường hợp k có lệnh nào như vậy máy dừng hoạt động việc thực hiện 1 lệnh của máy đc diễn ra trong khoảng thời gian giữa 2 thời điểm kế tiếp nhau đgl phép biến đổi cơ bản quá trình đc tiếp diễn cho đến khi máy có thể đi đến những quyết định cuối cùng đối vs dữ kiện đầu vào Dữ liệu đầu vào đc chấp nhận hay bác bỏ tùy thuộc vào máy dừng ở trạng thái qy hay qn Trong trường hợp khi k đến đc trạng thái kết thúc, quá trình tính toán của máy sẽ k bao giờ dừng.
Câu 8 trình bày các định nghĩa về: máy turing chấp nhận đầu vào, ngôn ngữ của máy turing, ngôn ngữ đoán nhận được, ngôn ngữ khẳng định được, thuật toán, luận đề church-turing.
- Máy turing chấp nhận đầu vào: cho máy turing M vs bảng chữ vào ∑ ta nói rằng máy turing M chấp nhận đầu vào w, nếu qow -M ->uqyv, nghĩa là khi tính toán trên từ vào w, máy M chuyển từ hình thái ban đầu đến hình thái chấp nhận.
- Tập các từ vào mà máy M chấp nhận tạo thành ngôn ngữ chấp nhận đc của M, đgl ngôn ngữ của máy Turing M và đc ký hiệu bởi LM:
Trang 7- Ngôn ngữ L dgl đoán nhận đc theo turing, hay đơn giản là đoán nhận đc, nếu nó là ngôn ngữ chấp nhận đc của 1 máy turing nào đó, nghĩa là tồn tại 1 máy turign M sao cho L= LM khi đó ta nói rằng “máy turing M đoán nhận ngôn ngữ L” hay “ngôn ngữ L đc đoán nhận bới máy turing M”.
- Ngôn ngữ L dgl khẳng định đc hay cụ thể hơn là khẳng định đc theo turing, nếu nó đc đoán nhận bởi máy quyết định nào đó Trong trường hợp đó, ta nói rằng “máy turing dừng M khẳng định ngôn ngữ L” hay “ngôn ngữ L được khẳng định bởi máy turing dừng M”; ngược lại, ngôn ngữ L dgl k khẳng định đc.
- Thuật toán là máy turing dừng thuật toán đc định nghĩa theo mô hình máy turing còn dgl thuật toán máy turing Thuật toán máy turing k chỉ là 1 khái niệm 9 xác về mặt toán học đc thừa nhận rộng rãi nhất, mà mô hình này còn đc sử dụng trong việc nghiên cứu các quá trình tính toán nói chung và đặc biệt trong việc phân tích độ phức tạp tính toán.
- Luận đề church-turing: thuật toán theo nghĩa trực giác đồng nhất với thuật toán máy turing Mặc dù luận đề k thể đc chứng minh nhưng trải qua hơn 70 năm kể từ khi ddc đưa ra, thực tiễn ngày càng củng cố niềm tin vào sự đúng đắn của nó Ngày nay luận đề gần như đc tất cả mọi ng thừa nhận
Câu 9 Trình bày bài toán chấp nhận.
Bài toán chấp nhận đối với máy turing là bài toán kiểm tra xem liệu máy turing có chấp nhận một từ vào bất kỳ cho trước, và đc ký hiệu là ATM Để cm tính k giải đc của bài toán, ta sẽ tìm cách chứng tỏ rằng ngôn ngữ tương ứng của nó là k khẳng định đc, tức k tồn tại máy TR dừng (hay thuật toán) đoán nhận ngôn ngữ ấy.
Ngôn ngữ tương ứng với bài toán ATM được xác định như sau: ATM = {<M,w> | M là máy TR và M chấp nhận w}.
Ngôn ngữ ATM là ngôn ngữ k khẳng định đc.
Ta lưu ý rằng ATM là ngôn ngữ đoán nhận đc Như vậy lớp các ngôn ngữ đoán nhận đc rộng hơn lớp các ngôn ngữ khẳng định đc Việc đòi hỏi 1 máy TR phải dừng trên mọi từ vào phần nào hạn chế các ngôn ngữ mà máy có thể đoán nhận Máy TR U sau đây đoán nhân ATM.
U= “trên đầu vào <M,w>, trong đó M là một máy TR và w là một từ” 1 Mô phỏng tính toán của M trên từ w.
2 Nếu bất cứ lúc nào máy M ở trạng thái chấp nhận, thì chấp nhận; nếu M ở trạng thái bác bỏ, thì bác bỏ.
Nhận thấy rằng U k dừng trên <M,w> nếu như M k dừng trên w, và do đó nó k thể khẳng định ATM Nếu như có thuật toán để kiểm định đc rằng M k dừng trên w, nó cần phải bác bỏ <M,w> Nói cách khác việc kiểm tra xem liệu M có dừng hay không trên w là yếu tố quyết định sự tồn tại thuật toán.
Với khả năng tính toán rộng lớn, máy TR U thu hút sự chú ý Đây là VD về máy TR vạn năng, có khả năng mô phỏng sự hoạt động của bất kỳ máy TR nào Nó đóng vai trò quan trọng khởi đầu kích thích sự phát triển của các máy tính có bộ nhớ và hoạt động theo ct có sẵn.
Câu 10.TRình bày quy chuẩn về thời gian hoạt động của máy TR.
Trang 8- thời gian tính toán của máy TR trên từ vào w, đc ký hiệu là: tM(w), chính là số lần thực hiện các phép biến đổi cơ bản để máy chuyển đổi từ hình thái ban đầu đến hình thái kết thúc, nghĩa là: tM(w) =k;
ở đây, 1 phép biến đổi cơ bản là 1 phép chuyển đổi máy M từ hình thái Ct đến hình thái Ct+1, và nó đc diễn ra giữa 2 thời điểm kế tiếp nhau đúng bằng 1 đv tg.
- khi tính toán trên những từ vào với cùng độ dài n, tg máy TR cần sd nhiều nhất chỉ trong một vài trường hợp đặc biệt, như vậy ta có thể xem xét tghđ của máy TR như 1 hàm phụ thuộc vào độ dài của từ vào.
- xđ tghđ của máy TR có ý nghĩa đáng kể về mặt lý thuyết và ứng dụng, nhằm làm sáng tỏ khả năng thực thi cũng như tính hữu hiệu của thuật toán, đối vs các bài toán thực tế tg cần sd có thể phụ thuộc vào 1 vài tham số của các đối tượng của dl bài toán Chẳng hạn như bài toán đồ thi - tuy nhiên, tg tính toán cảu thuật toán cũng chỉ ddc khảo sát ở 1 vài các khía cạnh khác nhau, tùy thuộc vào nhu cầu cụ thể Với mục đích làm sáng tỏ ý nghĩa thực tiễn của thuật toán, thì khảo sát tg trung bình mà thuật toán cần sử dụng khi tính toán là cần thiết theo quan điểm chung, việc xác định tg thực hiện tính toán của thuật toán trong trường hợp xấu nhất là quan trọng, nó cho ta thấy lượng tg tối đa cần sử dụng khi tính toán trên những đầu vào cùng kích cỡ.
-Đối vs máy TR tất định M cho trước, tg tối đa mà máy cần dùng khi tính toán trên mỗi từ vào độ dài n, đc ký hiệu bởi tM(n), đc xác định như sau: tM(n)= max { tM(w) | w € (thuộc) ∑n }trong đó ∑n là tập các từ có độ dài n trên bảng chữ ∑
Câu 11: trình bày định nghĩa độ phức tạp tg của máy TR tất định dừng và máy TR ktđ dừng vễ hình minh họa
- đối với máy TR tất định 1 băng hay nhiều băng, quá trình tính toán trên mỗi từ vào đc diễn ra theo đúng 1 cách chuyển đổi các hình thái của máy từ hình thái bắt đầu đến hình thái kt Vì vậy thời gian hoạt động của máy TR tất định 1 băng và tất định nhiều băng cùng đc định nghĩa như sau:
Cho M là 1 máy TR tất định dừng độ phức tạp tg hay tg hoạt động của M là một hàm t: N -> N, mà giá trị t(n) là số lần tối đa các phép biến đổi cơ bản đc sd trong quá trình tính toán của M trên bất cứ từ vào nào có độ dài n nếu t(n) là độ phức tạp tg thì ta nói rằng M hoạt động trong tg t(n) hoặc M là máy TR tg t(n).
Ta thường dùng n để chỉ độ dài của từ vào.
- đối vs máy TR k tất định dừng N, trong quá trình tính toán trên mỗi từ vào w đc diễn ra theo 1 nhánh nào đó mà máy lựa chọn trong cây tính toán của máy N trên w Khi đó tg tính toán của N trên w đc dịnh nghĩa bởi độ dài của nhánh dài nhất trong cây tính toán Trên cơ sở đó, ta định nghĩa độ phức tạp tg của N như sau:
Cho 1 máy TR ktđ dừng N, độ phức tạp tg của máy TR ktđ N là hàm t: N->N, mà giá trị t(n) là số lần tối đa các phép biến đổi cơ bản được sử dụng trong quá trình tính toán của máy N trên mỗi từ vào độ dài n và theo từng nhánh trong cây tính toán của máy.
Câu 12: Nội dung phân tích thuật toán.
- Để giải quyết trọn vẹn 1 bài toán, ta k chỉ dừng lại ở việc xây dựng thuật toán mà cần phải tiến hành việc phân tích thuật toán, nhằm xđ độ phức tạp tg của thuật toán qua đó thấy đc tính hữu hiệu của nó Việc phân tích thuật toán giúp ta phát hiện “những trường hợp xấu nhất” đối với thuật toán, những trường hợp khi mà tính toán cần 1 lượng tg lớn nhất.
Trang 9- do lượng thời gian thuật toán cần đến trong trường hợp xấu nhất thường đc biểu diễn bởi 1 biểu thức phức tạp, nên thông thường ta tìm cách ước lượng nó bởi 1 biểu thức đơn giản, mặc khác ta cũng chỉ cần biết để đáp ứng yêu cầu này khái niệm O- lớn thường đc sử dụng và tỏ ra khá tiện lợi trong việc diễn tả độ phức tạp thời gian của thuật toán Như vậy, khi k cần thiết phải xác định chính xác, độ phức tạp tg của thuật toán đc thể hiện một cách tương đối bởi cận trên tiệm cận của nó.
- máy TR có khả năng diễn tả tỉ mỉ các quá trình tính toán và đc thừa nhận là một mô hình tính toán của thuật toán, bởi vậy việc phân tích thuật toán đối với máy TR sẽ cho ta hiểu đc một cách cặn kẽ về bản chất của quá trình tính toán, và qua đó k chỉ giúp ta tìm đc cận trên tiệm cận hoặc xđ chính xác độ phức tạp tg của máy TR mà còn gợi mở cho ta cải tiến cách tính toán hoặc lựa chọn mô hình tính toán khác hiệu quả hơn.
Câu 13: tb nội dung về các định lý về quan hệ tg của các loại máy.
Các mô hình tính toán được lựa chọn ở đây là máy TR tất định 1 băng, máy Tr tất định nhiều băng và máy tr k tất định Về khả năng tính toán ba mô hình này là tương đương nhau Sau đây ta sẽ xét sự tương đương này trên quan điểm độ phức tạp tính toán và qua đó làm sáng tỏ phần nào mức độ ảnh hưởng của mô hình tính toán đối với độ phức tpaj tg của ngôn ngữ.
Dl1: g/s t: N->N là một hàm mà t(n) >= n khi đó mỗi máy tR tất định nhiều băng tg t(n) đều có máy TR tất định 1 băng tg O[t2(n)] tương đương.
Dl2: g/s t: N->N là một hàm mà t(n) >= n khi đó mỗi máy TR k tất định tg t(n) đều có máy TR tất định 1 băng tg 2 mũ O[t(n)].
Câu 14 Trình bày về tg đa thức.
Về mặt lý thuyết, sự khác nhau về tg tính toán ở mức độ đa thức đc coi là nhỏ, trong khi đó sự khác nhau ở mức độ hàm mũ là rất lớn vậy tại sao ta lại chọn sự khác biệt giữa hàm đa thức và hàm mũ hơn là giữa các hàm khác.
Một mặt là do có sự khác nhau rất lớn giữa tốc độ tăng trưởng của đa thức và của hàm mũ, mặt khác tốc độ tăng trưởng của đa thức cũng đủ lớn nhưng vẫn trong phạm vi quản lý được, trong khi đó hàm mũ tăng với một tốc độ to lớn đến mức k thể kiểm soát nổi vd như đa thức n3 và hàm mũ 2^n, vs 1000,… Vì vậy, những thuật toán tg đa thức có thể đc coi là đủ nhanh và chấp nhận đc, còn những thuật toán tg hàm mũ họa hoằn lắm mới sd đến.
Các mô hình máy TR tđ 1 băng và nhiều băng là tương đương nhau Ta có thể nói rằng tất cả các mô hình tính toán tất định thích hợp vs các máy tính thực tế đều là tương đương đa thức Nghĩa là, bất cứ một mô hình nào như vậy cũng mô phỏng được mô hình khác chỉ với một lượng thời gian tăng thêm cỡ đa thức.
Từ đây ta tập trung xem xét các khía cạnh của lý thuyết độ phức tạp tính toán mà chúng k bị ảnh hưởng bởi những thay đổi về tg ở mức độ đa thức những thay đổi hoặc những khác nhau như vậy đc coi là k đáng kể và đc bỏ qua Cách tiếp cận này cho phép chúng ta phát triển lý thuyết theo hướng k phụ thuộc vào sự tuyển chọn mô hình tính toán riêng biệt, để khám phá ra những tính chất của tính toán cơ bản nói chung.
Bỏ qua những khác nhau ở mức độ đa thức k có nghĩa là ta coi những khác nhau như vậy là k quan trọng ngược lại, sự khác nhau như vậy dù nhỏ cũng có những ý nghĩa nhất định về mặt ứng dụng thực tiễn không những thế, sự khác nhau đó giúp chúng ta có cái nhìn thống nhất đối với
Trang 10vấn đề phức tạp, đồng thời nó còn cho ta những hiểu biết tổng quát về độ phức tạp tính toán và một hướng đi đúng đắn khi giải quyết các bài toán khó mà ta gặp phải.
Câu 15: trình bày định nghĩa lớp phức tạp TIME, lớp P, vì sao lớp P đóng vai trò trung tâm trong ltdpttt và là một lớp rất quan trọng.
- định nghĩa lớp phức tạp TIME: cho một hàm t:N-> R+ Ta định nghĩa lớp phức tạp TIME (t(n)) là lớp tất cả các ngôn ngữ đc khẳng định bởi máy TR tất định tg O[t(n)].
Rõ ràng TIME(n) TIME(n^2) ……
- Định nghĩa lớp P: P = (def) U TIME(nk) //có 1 k viết dưới U.
Nói cách khác, P là lớp tất cả các ngôn ngữ đc khẳng định bởi máy TR tất định thời gian đa thức Lớp P đóng vai trò trugn tâm trong ltdptt và là lớp rất quan trọng bởi vì:
1: P k thay đổi đối vs tất cả các mô hình tính toán tương đương đa thức vs máy TR tất định một băng.
2: P gần như tương ứng với các bài toán giải đc 1 cách thực tế, tức giải đc trên máy tính điện tử Lý do thứ nhất cho thấy rằng P là một lớp mạnh về mặt toán học, còn lý do thứ hai cho thấy rằng P thích đáng theo quan điểm thực tế.
Câu 16: trình bày định nghĩa lớp phức tạp NTIME, Lớp NP, trình bày một bài toán cụ thể thuộc lớp NP là bài toán đường đi Hamilton …
- định nghĩa lớp phức tạp NTIME: cho một hàm t:N-> R+ Ta định nghĩa lớp phức tạp NTIME (t(n)) là lớp tất cả các ngôn ngữ đc khẳng định bởi máy TR k tất định tg O[t(n)]
- Định nghĩa lớp NP: NP = (def) U NTIME(nk) //có 1 k viết dưới U.
Nói cách khác, NP là lớp tất cả các ngôn ngữ đc khẳng định bởi máy TR k tất định thời gian đa thức
Khi diễn tả và phân tích các thuật toán k tất định thời gian đa thức, ta thường theo sát những thông lệ như đối với thuật toán tất định thời gian đa thức việc phân tích thuật toán k tất định nhằm chứng tỏ rằng mỗi nhánh tính toán của thuật toán sử dụng k quá một số đa thức các phép biến đổi cơ bản.
VD về bài toán thuộc lớp NP, bài toán tìm đường đi hamilton Dữ kiện: cho một đồ thị có hướng G và 2 đỉnh u,v thuộc G.
Câu hỏi: phải chăng trong G tồn tại đường đi Hamilton từ u đến v? Ngôn ngữ ứng vs bài toán này đc xác định bởi
DIHAMILTON = {<G,u,v> | G là một đồ thị có hướng chứa đường đi Hamilton từ u đến v } DIHAMILTON (Thuộc) NP
CM: g/s G là một đồ thị có hướng với m đỉnh đc gán tên bởi các số tự nhiên từ 1 đến m khi đó dãy (k1,….,km),,bao gồm các số tự nhiên từ 1 đến m, sẽ tạo thành một đg đi hamilton trong G có hướng từ đỉnh u đến đỉnh v, nếu các điều kiện sau thỏa mãn: Trước tiên, tất cả các ki ấy phải khác nhau, tiếp đến, u=k1 và v=km cuối cùng, đối vs mỗi 1<=i<=m-1 trong đồ thị G có cung (ki,ki+1) Ta dễ dàng thu đc thuật toán tg hàm mũ cho bài toán, bằng cách kiểm tra lần lượt toàn bộ các dãy nêu trên xem dãy nào tạo thành đg đi hamilton.
Để xây dựng máy TR ktđ tg đa thức kđ DIHAMILTON, thay vì duyệt toàn bộ ta lựa chọn một cách không tất định một dãy nào đó và tiến hành kiểm tra xem liệu dãy ấy có thỏa mãn các điều kiện nêu trên háy không Bằng cách này ta thu đc máy TR k tất định N cho bài toán.