1. Trang chủ
  2. » Luận Văn - Báo Cáo

TÌM HIỂU BÀI TOÁN 3CNFSAT

17 11 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 897,3 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Toán học đang được áp dụng rộng rãi trong các lĩnh vực trong cuộc sống. Phương pháp Toán là cơ sở quan trọng trong nhiều ngành khoa học cũng như ngành Khoa học máy tính, trong đó có các bài toán tìm thỏa mãn SAT (Satisfiability). Ở bài báo cáo này tôi xin trình bày bài toán 3SAT nhưng trước đó tôi sẽ trình bày một số cơ sở lý thuyết của bài toán ở phần thứ đầu sau đó mới đi vào bài toán.

Trang 1

RƯỜN I HỌC SƯ PH M TP HỒ CHÍ MINH

KHOA CÔNG NGHỆ THÔNG TIN CAO HỌC NGÀNH: KHOA HỌC MÁY TÍNH

KHOÁ: 28



MÔN HỌ : PHƯƠN PH P N R N N HỌC

Ề TÀI CUỐI KÌ:

TÌM HIỂU BÀI TOÁN 3-CNF SAT

Giảng viên hướng dẫn : TS Huỳnh ăn ức

Sinh viên thực hiện : Nguyễn Thanh Thuỷ

Lớp : Khoa Học Máy Tính – Khoá 28

TP Hồ Chí Minh,tháng 8 năm 2018

Trang 2

1

M C L C

A Giới thiệu 3

B Cơ sở lý thuyết 3

1 Tổng quan về thuật toán 3

1.1 Định nghĩa: 3

1.2 Phân tích thuật toán và đánh giá thời gian thực hiện thuật toán 3

1.2.1 Phân tích thuật toán 3

1.2.2 Tại sao lại cần có thuật toán hiệu quả? 3

2 Lý thuyết độ phức tạp 3

2.1 Máy tính Turing 3

2.2 Các khái niệm về độ phức tạp của thuật toán 4

2.2.1 Độ phức tạp trong trường hợp xấu nhất 4

2.2.2 Độ phức tạp trung bình 4

2.2.3 Độ phức tạp tiệm cận 4

2.2.4 Độ phức tạp đa thức (Polynomial) 5

2.2.5 Thuật toán đa thức 5

2.3 Cách tính độ phức tạp 5

2.3.1 Các quy tắc cơ bản 5

2.3.1.1 Quy tắc cộng: 5

2.3.1.2 Lệnh Quy tắc nhân: 5

2.4 Lớp P, NP và mối quan hệ giữa lớp P và lớp NP 5

2.4.1 Lớp P 6

2.4.2 Lớp NP 6

2.4.3 Mối quan hệ giữa lớp P và lớp NP 7

2.4.4 Lớp bài toán NP - khó (NP - hard) và NP - đầy đủ (NP – Complate) 7 2.4.4.1 Các bài toán quyết định 7

2.4.4.2 Bài toán NP – Khó (NP – Hard) 8

2.4.4.3 Bài toán lớp NPC 8

2.4.4.4 Mối quan hệ giữa P, NP và NPC được biểu diễn như hình sau: ………8

2.4.5 Một số bài toán NPC 9

- Bài toán Vertex – Cover 9

3 Lôgic mệnh đề 9

3.1 Công thức Lôgic mệnh đề 9

Trang 3

2

3.2 Chuẩn tắc hội CNF 10

3.3 Giải quyết các bài toán chứng minh logic 10

3.3.1 Bài toán chứng mình logic: 10

3.3.2 Cách giải quyết 10

C Nội dung 11

1 Bài toán SAT 11

1.1 Lịch sử phát triển của SAT: 11

1.2 Bài toán SAT 11

1.3 Bài toán CNF-SAT 12

1.4 Bài toán chứng minh thỏa mãn (SAT): 12

1.5 Giải quyết bài toán SAT 12

1.5.1 Phương pháp Backtracking 12

1.5.2 Các phương pháp tối ưu hoá lặp (Iterative optimization methods) ……… 13

2 Bài toán 3-CNF SAT 13

2.1 Định nghĩa 13

2.2 Ứng dụng bài toán 3 - SAT 14

2.3 Thuật toán DPLL giải quyết các bài toán SAT 15

2.3.1 Lịch sử 15

2.3.2 Giải thuật DPLL 15

2.3.3 Cài đặt giải thuật 16

D Kết luận 16

E Tài liệu tham khảo 16

Trang 4

3

A Giới thiệu

Trong Toán học có rất nhiều dạng toán và bài toán khác nhau, có bài toán là tiền đề hoặc là kết quả của bài toán khác Nhiều bài toán vẫn chưa được giải nhưng

là khởi nguồn để con người tìm hiểu và tìm tòi

Toán học đang được áp dụng rộng rãi trong các lĩnh vực trong cuộc sống

Phương pháp Toán là cơ sở quan trọng trong nhiều ngành khoa học cũng như ngành Khoa học máy tính, trong đó có các bài toán tìm thỏa mãn SAT (Satisfiability)

Ở bài báo cáo này tôi xin trình bày bài toán 3SAT nhưng trước đó tôi sẽ trình bày một số cơ sở lý thuyết của bài toán ở phần thứ đầu sau đó mới đi vào bài toán

B ơ sở lý thuyết

1 Tổng quan về thuật toán

1.1 ịnh nghĩa:

Thuật toán là một dãy hữu hạn các bước, mỗi bước mô tả chính xác các phép toán hoặc hành động cần thực hiện…để cho ta lời giải của bài toán

Các đặc trung của thuật toán

- Input

- Output

- Tính xác định

- Tính khả thi

- Tính dừng

- Tính đơn vị

- Tính tổng quát

1.2 Phân tích thuật toán và đánh giá thời gian thực hiện thuật toán

1.2.1 Phân tích thuật toán

Phân tích thuật toán là quá trình tìm ra những đánh giá về thời gian và dung lượng bộ nhớ cần thực hiện thuật toán

Hầu hết các bài toán đều có rất nhiều thuật toán khác nhau để giải quyết chúng và nhiệm vụ của chúng ta là phải tìm thuật toán tốt nhất để thực hiện bài toán

đã đặt ra

1.2.2 Tại sao lại cần có thuật toán hiệu quả?

Kỹ thuật máy tính ngày càng tiến bộ rất nhanh, các máy tính lớn có thể đạt hàng trăm triệu phép toán mỗi giây Tuy nhiên có những thuật toán mà độ phức tạp

về thời gian là rất lớn mà các máy tính hiện đại này cũng tốn rất nhiều thời gian Khi

đó thì việc phân tích thuật toán để tìm ra những thuật toán hiệu quả là cần thiết

2 Lý thuyết độ phức tạp

2.1 Máy tính Turing

Máy tính Turing là một máy tính toán trừu tượng, vừa có khả năng của máy tính thực sự , vừa cho phép định nghĩa về mặt toán học về những gì có thể tính toán được

Trang 5

4

Một máy Turing là một bộ T = (, Q, , , q0, b ,F)

Trong đó :

 Q là một tập hữu hạn các trạng thái,

Γ là bộ chữ trên băng (bộ chữ dùng trên băng),

 b∈là ký hiệu trống (ký hiệu duy nhất cho phép xuất hiện một cách

vô hạn trên băng ở bất kỳ bước nào trong quá trình tính toán),

 ⊆Γ là bộ chữ vào (bộ chữ dùng cho xâu vào),

 : Q x Γ  Q x Γx {L, R} là một hàm bộ phận, hay còn gọi là hàm

dịch chuyển (là hàm định nghĩa các việc dịch chuyển trạng thái của

máy Turing hoặc máy trạng thái), trong đó L và R được hiểu là trái (Left) và phải (Right)),

 q0∈Q là trạng thái đầu (trạng thái khởi tạo),

 F⊆Q là tập các trạng thái thừa nhận – accepting state (hoặc trạng thái cuối)

Nhận xét: Máy Turing có cấu tạo cực kì đơn giản nhưng lại làm được mọi việc liên

quan tới tính toán các phép tính Từ mô hình này có thể định nghĩa ra phép cộng (mã hóa dạng nhị phân) bằng cách dịch chuyển đầu đọc 0, 1 và từ đó định nghĩa ra các phép tính khác

Có hai loại:

 Máy tính Turing tất định

 Máy tính Turing không tất định

2.2 Các khái niệm về độ phức tạp của thuật toán

2.2.1 ộ phức tạp trong trường hợp xấu nhất

Cho một thuật toán A với đầu vào n, khi đó:

- Độ phức tạp về bộ nhớ trong trường hợp xấu nhất được định nghĩa là:

LA(n) = max{lA(e)║│e│≤n}

Tức là chi phí lớn nhất về bộ nhớ

Trong ví dụ trên: Dữ liệu vào: n+1, ra:1, phụ:1 nên LA(e)=n+3

- Độ phức tạp thời gian trong trường hợp xấu nhất được định nghĩa là :

TA(n) = max{tA(e)║│e│≤n}

Tức là chi phí lớn nhất về thời gian

Trong ví dụ trên TA(n) =1+2(n-1) = 2n-1

2.2.2 ộ phức tạp trung bình

Là tổng số các độ phức tạp khác nhau ứng với các bộ dữ liệu chia cho tổng số

2.2.3 ộ phức tạp tiệm cận

Thuật toán A với đầu vào n gọi là có độ phức tạp O(f(n)) nếu  hằng số C, N0:

TA(n)C.f(n) , nN0 Tức là TA(n) có tốc độ tăng là O(f(n))

Trang 6

5

2.2.4 ộ phức tạp đa thức (Polynomial)

Thuật toán được gọi là có độ phức tạp đa thức nếu tồn tại đa thức P(n) mà TA(n)C.P(n) , nN0

2.2.5 Thuật toán đa thức

Thuật toán được gọi là đa thức nếu độ phức tạp về thời gian trong trường hợp xấu nhất của nó là đa thức

Việc đánh giá đúng độ phức tạp của bài toán là một vấn đề hết sức phức tạp Vì vậy người ta thường quan tâm đến việc đấnh giá độ phức tạp thời gian trong trường hợp xấu nhất của bài toán

Một số đơn vị đo tốc độ tăng:

- O(1): Hầu hết các chỉ thị của chương trình đều được thực hiện một lần hay nhiều nhất chỉ một vài lần⇒Thời gian chạy của chương trình là hằng số

- O(logN): Thời gian chạy của chương trình là logarit, tức là thời gian chạy của chương trình tiến chậm khi N lớn dần

- O(N):Thời gian chạy là tuyến tính Đây là tình huống tối ưu cho một thuật toán phải xử lý N dữ liệu nhập

- O(NlogN): Thời gian chạy tăng dần lên cho các thuật toán mà giải một bài toán bằng cách tách nó thành các bài toán con nhỏ hơn, sau đó tổ hợp các lời giải

- O(N2): Thời gian chạy là bậc 2, trường hợp này chỉ có ý nghĩa thực tế cho các bài toán tương đối nhỏ Thời gian bình phương thường tăng dần trong các thuật toán phải xử lý tất cả các cặp phần tử dữ liệu (2 vòng lặp lồng nhau)

- O(N3): Thuật toán xử lý các bộ ba của các phần tử dữ liệu (3 vòng lặp lồng nhau)⇒ ý nghĩa với các bài toán nhỏ

- O(2n) , O(n!), O(nn): Thời gian thực hiện thuật toán là rất lớn do tốc độ tăng của các hàm mũ

2.3 Cách tính độ phức tạp

2.3.1 Các quy tắc cơ bản

2.3.1.1 Quy tắc cộng:

Nếu T1(n) và T2(n) là thời gian thực hiện 2 chương trình P1, P2 và

T1(n)=O(f(n)), T2(n)=O(g(n)) thì thời gian thực hiện của đoạn 2 chương trình đó nối tiếp nhau là T(n)=O(max(f(n),g(n))

2.3.1.2 Lệnh Quy tắc nhân:

Nếu T 1 (n) và T 2 (n) là thời gian thực hiện 2 đoạn chương trình P 1 , P 2 và

T 1 (n)=O(f(n)), T 2 (n)=O(g(n)) thì thời gian thực hiện của 2 đoạn chương trình đó lồng nhau là T(n)=O(f(n).g(n))

2.4 Lớp P, NP và mối quan hệ giữa lớp P và lớp NP

Thuật toán không đơn định đa thức(Nodeterministic Polynomial NP)

Trang 7

6

Với nhiều bài toán tối ưu tổ hợp vẫn chưa tìm được các thuật toán đơn định chạy trong thời gian đa thức, trong khi đó nếu cho phép dùng thuật toán không đơn định thì lại dễ dàng chỉ ra các thuật toán chạy trong thời gian đa thức

Sự phân lớp các bài toán

Với một bài toán cho trước có 2 khả năng xảy ra:

 Không giải được hoặc

 Giải được bằng thuật toán

- Trường hợp bài toán giải được bằng thuật toán cũng chia làm 2 loại:

 Thực tế giải được: Được hiểu là thuật toán xử lý trong thời gian đủ nhanh, thực tế cho phép, đó là thuật toán có độ phức tạp thời gian là đa thức

 Thực tế khó giải: Được hiểu là thuật toán xử lý trong nhiều thời gian, thực tế khó chấp nhận, đó là thuật toán có độ phức tạp thời gian là trên

đa thức (hàm mũ)

Do đó, ta có sự phân lớp các bài toán do 2 tác giả Cook và Karp đề xuất năm 1970-1971 như sau:

2.4.1 Lớp P

Thuật toán đơn định (Deterministic algorithm): là thuật toán có kết quả thực

hiện mỗi phép toán được xác định duy nhất

Định nghĩa: Lớp P bao gồm tất cả các bài toán giải được bởi thuật toán đơn định trong thời gian đa thức (tức là tồn tại thuật toán giải quyết nó với thời gian chạy đa thức)

Thuật toán có độ phức tạp O(nk), k là hằng số

Những bài toán có độ phức tạp dạng O(k), O(log(n)), O(n), O(nlog(n)), nk đều

là những bài toán thuộc lớp P

Ví dụ: Thuật toán Ơclide tìm Ước chung lớn nhất (UCLN) của hai số là thuật toán giải trong thời gian đa thức Do đó bài toán tìm UCLN của hai số m và n thuộc lớp P

Chú ý:

 Không phải mọi bài toán thuộc lớp P đã có thuật toán hiệu quả

 Nếu bài toán không thuộc lớp P thì đều phải trả giá rất đắt về thời gian hoặc thậm chí không giải được nó trong thực tế

2.4.2 Lớp NP

 Thuật toán không đơn định (nondeterministic algorithm): là thuật toán có kết quả không phải là một giá trị duy nhất mà là một tập hợp hữu hạn các giá trị

 Định nghĩa Là lớp các bài toán có thể giải được bằng thuật toán không đơn định trong thời gian đa thức Hay, là lớp các bài toán mà mọi nghiệm giả định đều

có thể được kiểm chứng trong thời gian đa thức (Nondeterministic polynomial)

Ví dụ: Bài toán HC (Hamilton cycle)

- Intance: Cho đồ thị vô hướng G = (V,E)

- Question: Hỏi đồ thị vô hướng G = (V,E) có chu trình Hamilton hay không?

Trang 8

7

2.4.3 Mối quan hệ giữa lớp P và lớp NP

Ta có thể thấy một cách trực quan là P  NP Tuy vậy, cho đến nay người ta

vẫn chưa tìm được một bài toán thuộc lớp NP nhưng không thuộc lớp P Có nghĩa là câu hỏi " P = NP?" chưa có lời giải Mặc dù vậy, nhiều nhà khoa học cho rằng P ≠

NP

Có lẽ lý do hấp dẫn lý giải tại sao các nhà khoa học luôn tin rằng P ≠ NP, đó là

sự tồn tại của một lớp các bài toán trong NP\P được gọi là lớp NP -đầy đủ NPComplete hay gọn hơn NPC) Lớp này có tính chất gây kinh ngạc rằng, nếu một

bài toán trong lớp này có thể giải được bởi một thuật toán đơn định thời gian đa

thức, thì mọi bài toán trong lớp NP cũng giải được bởi một thuật toán đơn định thời gian tương tự, nghĩa là P = NP (!)

Việc xem xét quan hệ giữa P và NP dẫn đến chúng ta đi đến nghiên cứu lớp NPC

Hình 2: Minh họa giả thuyết về mối quan hệ giữa các lớp P, NP và NP-đầy đủ

2.4.4 Lớp bài toán NP - khó (NP - hard) và NP - đầy đủ (NP – Complate) 2.4.4.1 Các bài toán quyết định

Định nghĩa: Bài toán quyết định là bài toán mà câu trả lời của nó chỉ là “yes” hoặc “no” (tương ứng với true/1 hay false/0)

Về nguyên tắc mọi bài toán đều có thể biểu diễn dưới dạng bài toán quyết định tương ứng

Ví dụ về bài toán quyết định

Ví dụ 1: Bài toán kiểm tra số nguyên tố

P Sắp xếp Cây khung bé nhất Nhân ma trận Tìm kiếm tuần tự Đường đi ngắn nhất

NP Bài toán cái túi Bài toán ba lô Bài toán người du lịch

Trang 9

8

- Instance: Cho một số nguyên n>2

- Question: n có phải là số nguyên tố hay không?

Ví dụ 2: Bài toán HC (Hamilton cycle)

- Intance: Cho đồ thị vô hướng G = (V,E)

- Question: Hỏi đồ thị vô hướng G = (V,E) có chu trình Hamilton hay không?

2.4.4.2 Bài toán NP – Khó (NP – Hard)

Bài toán A được gọi là NP- khó nếu như tồn tại thuật toán đa thức để giải bài toán A thì kéo theo sự tồn tại thuật toán đa thức để giải mọi bài toán trong NP

Hay: A là NP – Khó nếu như B A, với mọi bài toán B  NP

2.4.4.3 Bài toán lớp NPC

2.4.4.3.1 Phép dẫn với thời gian đa thức

Định nghĩa: Cho hai bài toán 1 và 2

1 là lớp các Instance ứng với Yes , 1 =

2 là lớp các Instance ứng với No, 2 =

Phép dẫn thời gian đa thức f biến đổi mỗi dữ kiện 1 thành dữ kiện 2 thoã mãn:

1 Phép dẫn f được thực hiện trong thời gian đa thức bởi máy Turing

2 f( ) 

f( ) 

Ký hiệu : 1 ∞ 2

Ví dụ:

Instance: n, các thành phố: C = {c1, c2,…cm}, khoảng cách giữa ci, cj là d(ci, cj)  Z+, B  Z+

Question: Tồn tại hay thỏa : C (1) ,C (2) , ,C (m) thoã:

∑ ( ( ) ( )) ( ( ) ( ))

2.4.4.3.2 Bài toán lớp NPC

Định nghĩa: Một bài toán thuộc lớp NP mà mọi bài toán thuộc lớp NP khác đều dẫn được về nó với thời gian đa thức được gọi là bài toán NPC

2.4.4.4 Mối quan hệ giữa P, NP và NP được biểu diễn như hình sau:

Trang 10

9

2.4.5 Một số bài toán NPC

- Bài toán SAT

- Bài toán 3-SAT

- Bài toán Vertex – Cover

- Bài toán Clique

- Bài toán Subset – Sum

- Bài toán Knapsack

- Bài toán Traveling Salesman

- …

Hình 2.4.4(1) Sơ đồ chứng minh một số bài toán NPC

Ở nội dung bài này, tôi sẽ trình bày bài toán 3-CNF SAT

3 Lôgic mệnh đề

Đầu vào của bài toán SAT là một công thức Lôgic mệnh đề thường được biểu diễn dưới dạng chuẩn tắc hội (CNF) hoặc chuẩn tắc tuyển (DNF) Dưới đây sẽ định nghĩa một công thức Lôgic mệnh đề và các dạng chuẩn tắc tương ứng

3.1 Công thức Lôgic mệnh đề

Một công thức Lôgic mệnh đề được xây dựng từ các biến và các phép toán lôgic bao gồm: AND (phép hội), OR (phép tuyển), NOT (phủ định), IMPLICATION (phép kéo theo) Dưới đây là các khái niệm cơ bản [1]:

 Mệnh đề: Mỗi câu được phát biểu là đúng hay sai được gọi là một mệnh đề

 Các phép toán trên mệnh đề bao gồm:

 Phép phủ định ( )

 Phép tuyển ( )

 Phép hội ( )

 Phép XOR ()

 Phép kéo theo ( )

 Phép tương đương ( )

 Bảng chân trị đối với các phép toán mệnh đề:

 Bảng giá trị các phép toán mệnh đề

A B A  B A  B A  B A  B A  B ̅

0 0 0 0 0 1 1 1

0 1 1 0 1 1 0 1

1 0 1 0 1 0 0 0

Trang 11

10

1 1 1 1 0 1 1 0

3.2 Chuẩn tắc hội CNF

CNF là một tuyển sơ cấp hay hội của hai hay nhiều tuyển sơ cấp Dạng chuẩn tắc hội CNF có dạng như sau:

TSC1 … TSCn

Trong đó TSCi ≡ (P1 … Pm) với n, m và Pi là các biến Lôgic mệnh đề Bất kỳ một công thức Lôgic mệnh đề nào cũng có thể được chuyển đổi thành

công thức dạng CNF nhờ các phép biến đổi tương đương như: Luật De Morgan, các luật phân phối, các phép giao hoán, …

Dưới đây là một số phép biến đổi tương đương:

* Luật De Morgan

¬(A  B)  ¬A  ¬B

¬(A  B)  ¬A  ¬B

* Tính chất giao hoán của các phép Lôgic

A  B  B  A

A  B  B  A

* Tính chất kết hợp của các phép Lôgic

(A  B)  C  A  ( B  C)

(A  B)  C  A  ( B  C)

* Tính chất phân phối

A  (B  C)  (A  B )  (A  C)

A  (B C)  (A  B )  (A  C)

* Biểu diễn phép kéo theo qua các phép Lôgic khác

A B  ¬A  B

A B  ¬(¬A B)

A B  ¬ B ¬A

* Biểu diễn phép tương đương qua các phép Lôgic khác

A B  (A B) (B A)

3.3 Giải quyết các bài toán chứng minh logic

3.3.1 Bài toán chứng mình logic:

Với một cơ sở tri thức (một tập các mệnh đề) KB và một mệnh đề  cần chứng minh (gọi là một định lý)

Câu hỏi được đặt ra là liệu có tồn tại một thủ tục (suy diễn) có thể giải quyết được bài toán chứng minh logic, trong một số hữu hạn bước

3.3.2 Cách giải quyết

Có 3 phương pháp (chứng minh) phổ biến:

 Sử dụng bảng chân lý (Truth-table)

 Áp dụng các luật suy diễn (Inference rules)

 Chuyển về bài toán chứng minh thoã mãn (SAT)

 

Ngày đăng: 27/02/2022, 16:58

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w