Tải bản đầy đủ (.docx) (11 trang)

Lý thuyết Độ phức tạp tính toán (KMA)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (166.46 KB, 11 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

Câ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 tốn. Nội dung 3 lĩnh vực của lý thuyết tính tốn là:

<b>*1 Lý thuyết otomat đề cập đến việc xây dựng các mơ hình tốn học về tính tốn.</b>

<b>*2 Mục tiêu của lý thuyết về khả năng tính tốn là phân chia các bài tốn thành lớp các bài</b>

toán giải được và lớp các bài tốn khơng giải được.

<b>*3 Trong khi đó, lý thuyết độ phức tạp tính tốn phân chia các bài tốn giải được thành các lớp</b>

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 tố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 tố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 q trình giải quyết một bài tốn.

~ Về lý thuyết q trình giải bài tốn bao gồm việc lập mơ hình tốn học cho bài tố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 tốn học cho bài tốn cũng như việc xây dựng thuật tốn giải nó đều phải thích hợp với những trang thiết bị tính tố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ó

<i>dựa trên những kết quả nghiên cứu của lý thuyết otomat.</i>

~ Đôi khi trong q trình giải bài tốn, mặc dù đã rất cố gắng nhưng ta vẫn khơng thể tìm được 1 thuật tốn giải nó. Khó khăn này có thể do bản chất phức tạp của bài tố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 tốn giải bài tốn, là phận sự

<i>của lý thuyết về khả năng tính tốn.</i>

~ Mặc khác, ngay cả khi ta đã xây dựng được thuật tốn giải bài tố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

<i>này là việc làm của lý thuyết độ phức tạp tính toán.</i>

Câu 2: sự ra đời và phát triển của Lý Thuyết độ phức tạp tính tố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 tố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 tố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 tố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 hồn tồn giải được bằng nhiều thuật tốn khác nhau.

~ Như vậy trong thực tiễn ta thường gặp những bài tốn dễ và cả những bài tốn khó. Ngồi ra 1 bài tố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 tố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 tố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

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

nhâ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 tốn chưa hiện đại,..

<b>~ 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 tốn</b>

đượ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 tố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 q 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 tốn như những hàm phụ thuộc vào “kích cỡ” của bài tố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 tố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 tốn trong một khn khổ chung, lý thuyết độ phức tạp tính tố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 tố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 tốn, có ví dụ minh họa

~ Các bài tố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 ,

<b>nhưng đa phần là dạng bài tốn quyết định hoặc bài tốn tìm kiếm</b>, trong đó nói riêng là đạng

<b>bài tốn tối ưu. </b>

Đâ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 tốn có thể được phát biểu chính xác bằng ngơn ngữ tốn học hoặc ngơn ngữ tự nhiên dân dã. Trong trường hợp bài tố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 tốn đó sang một ngữ cảnh tốn học thích hợp, ví dụ như :

<i><b>Bài tố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</b></i>

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ể.

<i><b>~ Đâ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></i>

bằng ngơn ngữ tố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 q trình giải bài tốn. Trong việc hồn tất giải bài tốn, khâu cơ bản nhất là dựa trên mơ hình tố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 tố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 tố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 qt, các bài tố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

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

cho 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 tố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 tố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 tốn tìm kiếm hay 1 bài tốn tối ưu nói riêng, ta có thể nghiên cứu các bài tố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 tốn quyết định, ta có thể đi đến những kết luận thích hợp với bài tốn đã cho. Câu 4 trình bày cách xác lập tương ứng bài tốn tìm kiếm và bài tố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 tố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.

<b>Một bài tố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 u cầu thường có 2 loại. </b>

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

<b>“sai” được gọi là bài toán quyết định. </b>

<b>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àitốn tìm kiếm. Trong lớp các bài tốn tìm kiếm, các bài tốn tối ưu có 1 vị trí quan trọng. Bàitốn cực đại hóa và bài tốn cực tiểu hóa là các bài tố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>

Bài toán quyết định tương ứng với bài tốn tìm kiếm có thể được xác định đơn giản bằng cách

<b>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</b>

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 tố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 tốn quyết định tương ứng với bài tốn cực đại hóa (cực tiểu hóa) được xác định như sau:

<i>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)? </i>

Ví Dụ : bài tốn cực đại hóa MAX-KNAPSACK đc tương ứng với bài tố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.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

Như vậy mỗi bài tốn tìm kiếm hay mỗi bài tốn tối ưu nói riêng đều có thể đc tương ứng với 1 bài tốn quyết định mà thường là khơng khó hơn. Riêng đối với bài tốn tối ưu, do việc tính tốn giá trị các nghiệm là tương đối dễ dàng nên bài tốn quyết định tương ứng khơng thể khó hơn bài tốn tối ưu ban đầu.

Cuối cùng, ta tìm cách đặc trưng mỗi bài tố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 tố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 tố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 tốn quyết định phải đảm bảo các tiêu chí sau đây:

<b>*1 tính súc tích: 1 bài tốn quyết định thường được diễn tả bằng nhiều ngơn ngữ hình thức khác</b>

nhau, theo những phép mã hóa khác nhau đối với các dữ kiện bài tố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.

<b>*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</b>

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.

<b>Song về mặc ngun 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 tố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</b>

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 ngun 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.

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="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.

<b>*3 Ngơn ngữ đặc trưng của bài toán quyết định</b>

-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 tố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ã hố thích hợp nào đó đối với bài tố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 =

- <b>Rõ ràng ngơn ngữ L(II) diễn đạt nội dung của bài tố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 tốn II, và được ký hiệu ngắn gọi bởi</b>

<i>chữ nghiên II.</i>

- <i>Ta có II =def L(II) ⸺ L(D π) ⸺ ∑*</i>⸦ L(D π) ⸺⸦ ∑* ⸦ L(D π) ⸺⸦ ∑*

Câu 6 trình bày về ngơn ngữ đặc trưng của bài tốn quyết định và mơ hình tính tốn đố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<small>Π,</small> và câu hỏi Q<small>Π</small> trên mỗi dữ kiện của bài toán. Khi đó Q<small>Π</small> 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<small>Π</small> đế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<small>Π</small> ta có Q<small>Π</small>(d)=đúng khi câu hỏi Q<small>Π</small> trên dữ kiện d đc trả lời “đúng” và ngược lại Q<small>Π</small>(d)=sai.

Giả sử e là 1 phép mã hóa thích hợp nào đó đối với bài tố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<small>Π </small>.

Ta định nghĩa các ngôn ngữ sau:

L(D<small>Π</small>)=def (viết trên dấu =) {<d>|d (thuộc) D<small>Π</small> },

L(Π)= def (viết trên dấu =) {<d>|d (thuộc) D<small>Π</small> & Q<small>Π</small> (d)=ĐÚNG}.

Rõ ràng ngôn ngữ L(Π) diễn đạt nội dung của bài tốn Π, nên đgl ngơn ngữ đặc trưng của Π, hay

<i>ngơn tương ứng với bài tốn Π, và đc ký hiệu ngắn gọn bởi chữ nghiêng Π. Ta có: </i>

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<i>Π = (def) L(Π) (thuộc) L(D</i><small>Π</small>) (thuộc) ∑ *

- đốn nhận ngơn ngữ: cho PI là 1 bài tốn quyết định, L(Dpi) là ngơn ngữ trên bảng chữ XÍCH

<i>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 tốn PI. g/s tồn tại 1 mơ</i>

hình tính tố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

<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 tốn ấy cókhả năng nhận biết hay đốn nhận ngơn ngữ PI. Khi đó ta dễ dàng thu được lời giải của bài toán</i>

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 đó. Q 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 tố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ữ đốn nhận được, ngơn ngữ khẳng định được, thuật tố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 tố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 L<small>M</small>:

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

- Ngơn ngữ L dgl đốn nhận đc theo turing, hay đơn giản là đố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= L<small>M</small>. khi đó ta nói rằng “máy turing M đốn nhận ngơn ngữ L” hay “ngơn ngữ L đc đố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 đố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 tố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 q trình tính tốn nói chung và đặc biệt trong việc phân tích độ phức tạp tính tố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 tốn chấp nhận.

Bài tố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à A<small>TM</small> . Để cm tính k giải đc của bài tố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) đốn nhận ngơn ngữ ấy.

Ngơn ngữ tương ứng với bài toán A<small>TM </small>được xác định như sau: A<small>TM </small>= {<M,w> | M là máy TR và M chấp nhận w}.

Ngôn ngữ A<small>TM </small>là ngôn ngữ k khẳng định đc.

Ta lưu ý rằng A<small>TM </small>là ngơn ngữ đốn nhận đc. Như vậy lớp các ngơn ngữ đố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 A<small>TM.</small>

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 tố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 A<small>TM </small>. 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 tốn.

Với khả năng tính tố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.

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

- thời gian tính tốn của máy TR trên từ vào w, đc ký hiệu là: t<small>M</small>(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à: t<small>M</small>(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 C<small>t </small>đến hình thái C<small>t+1</small>, 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 tố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 tốn, đối vs các bài tố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 tố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 tốn, thì khảo sát tg trung bình mà thuật tốn cần sử dụng khi tính tốn là cần thiết. theo quan điểm chung, việc xác định tg thực hiện tính tốn của thuật tố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 tố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 tốn trên mỗi từ vào độ dài n, đc ký hiệu bởi t<small>M</small>(n), đc xác định như sau: t<small>M</small>(n)= max { t<small>M</small>(w) | w € (thuộc) ∑<small>n </small>}trong đó ∑<small>n</small> 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, q trình tính tố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 q trình tính tố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 q trình tính tố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 tốn của máy N trên w. Khi đó tg tính tố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 tố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 tố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 tốn của máy.

Câu 12: Nội dung phân tích thuật tố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 tố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 tố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 tốn cần 1 lượng tg lớn nhất.

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="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 tố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 q trình tính tốn và đc thừa nhận là một mơ hình tính tốn của thuật tốn, bởi vậy việc phân tích thuật tố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 q trình tính tố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 tốn hoặc lựa chọn mơ hình tính tố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 tố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 tố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 tốn và qua đó làm sáng tỏ phần nào mức độ ảnh hưởng của mơ hình tính tố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[t<small>2</small>(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 tố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 tốn tg đa thức có thể đc coi là đủ nhanh và chấp nhận đc, cịn những thuật tố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 tố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 tố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 tốn riêng biệt, để khám phá ra những tính chất của tính tố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

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

vấn đề phức tạp, đồng thời nó cịn cho ta những hiểu biết tổng qt về độ phức tạp tính tốn và một hướng đi đúng đắn khi giải quyết các bài tố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<small>+</small> . 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(n<small>k</small>). //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 tố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 tố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<small>+</small> . 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(n<small>k</small>). //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 tốn k tất định nhằm chứng tỏ rằng mỗi nhánh tính tốn của thuật tố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 tốn thuộc lớp NP, bài tố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 tố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 tố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 tồ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.

</div>

×