Phức tạp tính toán của bài toán

Một phần của tài liệu Thuật toán di truyền giải bài toán cây khung truyền thông tối ưu (Trang 28)

Định nghĩa 1.11. Độ phức tạp tính toán của một bài toán là thời gian tính (ở đây chỉ quan tâm đến đánh giá thời gian thực hiện, bỏ qua đánh giá về yêu cầu bộ nhớ)

của thuật toán tốt nhất trong số tất cả các thuật toán giải bài toán đó.

Với một bài toán chắc chắn sẽ còn những thuật toán chưa biết, vậy làm thế nào để biết được thời gian tính của thuật toán tốt nhất? Có 2 cách để giải quyết vấn đề này:

 Cách thứ nhất là sử dụng các kỹ thuật đưa ra cận dưới cho độ phức tạp tính toán của bài toán.

 Cách thứ hai là chỉ ra rằng bài toán đang xét có mức độ khó (tức là độ phức tạp tính toán) không thua kém gì bất kì một bài toán khó nào hiện biết.

1.3. Các lớp bài toán tối ƣu 1.3.1. Một số khái niệm cơ bản

Định nghĩa 1.12. Thuật toán có thời gian tính đa thức là thuật toán mà độ phức tạp thời gian của nó trong trường hợp xấu nhất được giới hạn trên bởi một hàm đa thức của kích thước dữ liệu đầu vào (kích thước dữ liệu đầu vào được tính bằng số bit cần thiết để biểu diễn nó). Tức là nếu n là kích thước dữ liệu đầu vào, thì luôn tồn tại một đa thức p n sao cho

 n Op n

W  .

Ví dụ:

Các thuật toán có độ phức tạp thời gian trong trường hợp xấu nhất sau đều có thời gian tính đa thức.

20

Các thuật toán có độ phức tạp thời gian trong trường hợp xấu nhất sau không có thời gian tính đa thức.

O(f(n)) = 2n 20.01n 2 n n!

Định nghĩa 1.13. Bài toán quyết định là bài toán mà đầu ra của nó chỉ có thể là “yes” hoặc “no” (0 hoặc 1, đúng hoặc sai, …).

Định nghĩa 1.14. Xét bài toán tối ưu hóa (P) max{f(x): x D}. Ta gọi bài toán dạng quyết định tương ứng với bài toán tối ưu (P) là bài toán quyết định sau:

(PD) “Cho giá trị K. Hỏi có tìm được u D sao cho f(u) ≥ K hay không?”

Bài toán tối ưu và bài toán quyết định của nó có mối liên hệ được phát biểu trong định lý sau:

Định lý 1.1. Nếu bài toán quyết định tương ứng với một bài toán tối ưu có thể giải được hiệu quả (chẳng hạn bằng thuật toán có thời gian tính đa thức) thì bài toán tối ưu đó cũng giải được hiệu quả (bằng thuật toán thời gian tính đa thức).

Định nghĩa 1.15. Ta gọi bằng chứng ngắn gọn dễ kiểm tra xác nhận câu trả lời “yes” cho bộ dữ liệu vào “yes” của bài toán là một bằng chứng có độ dài bị chặn bởi một đa thức bậc cố định của độ dài dữ liệu đầu vào của bài toán, và việc kiểm tra nó là bằng chứng xác nhận câu trả lời “yes” đối với đầu vào đã cho của bài toán có thể thực hiện xong sau thời gian đa thức.

1.3.2. Lớp bài toán P, NP và co-NP

Dưới đây là phân loại các lớp của bài toán

Định nghĩa 1.16. P là lớp bài toán quyết định có thể được giải quyết trong thời gian đa thức.

Hay nói cách khác, P là lớp các bài toán có thể được giải một cách nhanh chóng.

21

Định nghĩa 1.17. NP là lớp bài toán quyết định mà để xác nhận câu trả lời là “yes” của nó, có thể đưa ra bằng chứng ngắn ngọn dễ kiểm tra.

Hay có thể nói NP là lớp các bài toán mà có thể kiểm tra câu trả lời “yes”

một cách nhanh chóng trong thời gian đa thức nếu đã có được lời giải.

Hiển nhiên ta có PNP, tuy nhiên xác định xem NPP hay không hiện vẫn chưa có lời giải.

Định nghĩa 1.18.co-NP là lớp bài toán mà để xác nhận câu trả lời “no” thì có thể đưa ra bằng chứng ngắn gọn dế kiểm tra.

Như vậy có thể thấy co-NP là lớp bài toán hoàn toàn ngược với lớp NP. Có thể miêu tả mối quan hệ giữa ba lớp bài toán trên như trong hình sau: (adsbygoogle = window.adsbygoogle || []).push({});

Hình 1.4. Các lớp bài toán P, NP và co-NP

1.3.3. Quy dẫn

Định nghĩa 1.19.Giả sử A và B là hai bài toán quyết định. Ta nói bài toán A có thể quy dẫn sau thời gian đa thức về bài toán B nếu tồn tại thuật toán thời gian đa thức R cho phép biến đổi bộ dữ liệu vào x của A thành bộ dữ liệu vào R(x) của B sao cho x là bộ dữ liệu “yes” của A khi và chỉ R(x) là bộ dữ liệu “yes” của B.

P co-NP

22

Hình 1.5. Sơ đồ chứng minh quy dẫn

Ký hiệu AB được dùng để chỉ bài toán A có thể quy dẫn về bài toán B. Phép quy dẫn thường dùng để so sánh độ khó của hai bài toán. Nếu A quy dẫn được về B thì A không khó hơn B. Nếu A là khó (theo nghĩa chưa tìm được thuật toán thời gian tính đa thức để giải A) thì B cũng là khó, còn nếu B là dễ (nghĩa là đã có thuật toán thời gian tính đa thức giải B) thì A cũng là dễ.

Ví dụ: Bài toán cir-SAT: Cho một mạch logic với đầu vào gồm n giá trị, hỏi có tồn tại một đầu vào của mạch để đầu ra của mạch luôn là TRUE, hay mạch luôn đưa ra FALSE.

Hình 1.6. Bài toán cir-SAT

Trên đây là một bằng chứng ngắn gọn dễ kiểm tra xác nhận câu trả lời 'yes' của bài toán. Cho một dãy đầu vào mạch logic, ta có thể tinh được giá trị đầu ra sau thời gian tính đa thức bằng cách duyệt đồ thị.

23 Như vậy cir-SAT thuộc NP. Ta có:

 Mọi bài toán trong NP đều có thể tính được nhờ mạch logic.

 Mạch logic có số thành phần giới hạn bởi đa thức và vì thế cũng có thể giải quyết được trong thời gian đa thức.

Trên đây, chỉ là tư tưởng để chứng minh rằng bài toán cir-SAT thuộc lớp NP- đầy đủ. Tuy nhiên, vào năm 1971, định lí này đã được Cook chứng minh.

1.3.4. NP-đầy đủ và NP-khó

Định nghĩa 1.20.Một bài toán quyết định A được gọi là NP - đầy đủ nếu như A là bài toán trong NP và mọi bài toán trong NP đều có thể quy dẫn về A.

Định nghĩa 1.21.Một bài toán A được gọi là NP - khó nếu như sự tồn tại thuật toán đa thức để giải nó 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.

Nói cách khác, nếu có thể giải một bài toán NP-khó nào đó một cách nhanh chóng, thì cũng có thể nhanh chóng giải quyết bất kỳ một bài toán nào khác. Bài toán NP-khó ít nhất là khó bằng bất cứ một bài toán nào trong NP. NP-đầy đủ là những bài toán khó nhất trong NP. Hình 1.7. biểu diễn cách phân lớp tạm thời các bài toán.

Hình 1.7. Phân lớp tạm thời các bài toán P

co-NP

NP

NP-khó

24

1.4. Bài toán cây khung truyền thông tối ƣu

1.4.1 Phát biểu bài toán cây khung truyền thông tối ƣu

Bài toán cây khung truyền thông tối ƣu (Optimal Communication Spanning Tree Problem - OCST) được phát biểu như sau:

Cho G(V,E,w) là đồ thị vô hướng với hàm trọng số w. Bên cạnh đó là hàm yêu cầu (u,v) cho mỗi cặp đỉnh. Với mỗi cây khung T của G, giá truyền thông giữa 2 đỉnh được tính bằng hàm yêu cầu nhân với độ dài đường đi giữa 2 đỉnh đó trên cây T, và giá của cây khung T là tổng giá truyền thông của tất cả các cặp đỉnh. Mục đích của chúng ta là xây dựng cây khung với giá truyền thông là nhỏ nhất. Tức là chúng ta tìm cây khung T sao cho:

, ( , ) T( , ) u v V u v d u v    là nhỏ nhất.

Hàm yêu cầu trong bài toán OCST có thể là hàm không âm bất kì. Bằng cách giới hạn hàm yêu cầu thì chúng ta có nhiều trường hợp của bài toán này. Chúng ta định nghĩa thêm hàm r:VZ0 là hàm trọng số đỉnh cho trước và SV là tập bao gồm k đỉnh nguồn cho trước:

i. (u,v)1 với mọi u,vV: Đây là bài toán cây khung giá định tuyến cực tiểu (Minimum Routing- Cost Spanning Tree - MRCT). (adsbygoogle = window.adsbygoogle || []).push({});

ii. (u,v)r(u)r(v)với mọi u,vV : Đây là bài toán cây khung truyền thông với hàm yêu cầu tích tối ưu (Optimal Product - Requirement Communication Spanning Tree - PROCT ).

iii. (u,v)r(u)r(v)với mọi u,vV : Đây là bài toán cây khung truyền thông với hàm yêu cầu tổng tối ưu ( Optimal Sum - Requirement Communication Spanning Tree - SROCT).

iv. (u,v)0nếu uS: Đây là bài toán OCT p-source ( p - source OCT), hay nói cách khác là ta đi tìm cây khung có 

 S ) , ( ) , ( u vV T u v d v u  cực tiểu.

25

v. (u,v)1 nếu uS và (u,v)0 nếu ngược lại. Đây là bài toán p-source MRCT ( p-source MRCT). Nói cách khác mục đích của chúng ta là tìm cây khung cực tiểu .  S  ) , ( u v V T u v d

Hình 1.8. Mối quan hệ giữa các bài toán OCT

Tuy nhiên, vì hàm yêu cầu (u,v) thường được cho dưới dạng ma trận )

(rij

R kích thước nn nên cách tính giá của cây khung có thể thu gọn về dạng tổng quát: c(T) =     j i V j i T j i ij d p r , , , ) (

trong đó d(piT,j) là tổng trọng số của các cạnh trên đường đi duy nhất từ i đến j và là dạng tổng quát của tất cả những bài toán OCT đã liệt kê ở trên.

Ví dụ:

PROCT SROCT p source-OCT, p cố định

P source MRCT, p bất kì

MRCT P source-MRCT, p cố định

Optimal communication Spanning Trees Problem

Tính tổng quát

26

Với đồ thị có 6 nút và ma trận trọng số và ma trận yêu cầu được cho như sau: (ma trận trọng số và ma trận yêu cầu thường có dạng ma trận tam giác trên)

0 3 6 5 9 7 0 0 3 2 4 8 0 0 0 3 7 2 0 0 0 0 9 2 0 0 0 0 0 1 0 0 0 0 0 0 D                      0 5 13 12 8 9 0 0 7 4 2 6 0 0 0 3 10 15 0 0 0 0 11 7 0 0 0 0 0 12 0 0 0 0 0 0 R                     

và một cây khung của đồ thị này có dạng:

Hình 1.9. Cây khung minh họa cho việc tính giá.

Giá của cây khung này sẽ là:

c(T) = r12d12 +r13 (d12 + d24 + d46 + d63) + r14 (d12 + d24) +... + r46d46 + r56 d56

= 5(3) + 13 (3 + 2 + 2 + 2) + 12 (3 + 2) +... + 7 (2) + 12(1) = 534.

Bài toán OCST sẽ tìm kiếm cây khung có giá nhỏ nhất trong tất cả các cây khung.

Bài toán OCST trở thành bài toán cây khung nhỏ nhất (MST) khi không có đòi hỏi truyền thông rij giữa các nút. Do đó, T là cây khung nhỏ nhất nếu

c(T)  c(T') với mọi cây khung T' và c(T) =  E j i ij d ) , (

27

Như đã nói ở trên, bài toán cây khung truyền thông tối ưu được Garey và Johnson chỉ ra là thuộc lớp bài toán NP-khó (1979) sau đó được chứng minh là thuộc lớp MAXSNP-khó. (adsbygoogle = window.adsbygoogle || []).push({});

Khi áp dụng giải thuật di truyền thì không gian kiểu hình chính là không gian cây khung và khoảng cách kiểu hình là khoảng cách giữa hai cây khung đó. Khoảng cách Hamming dh giữa hai cây chỉ ra chính xác số các cạnh khác nhau trên hai cây đó.

Như vậy, khoảng cách nhỏ nhất giữa hai cây là dh =2.

Để đơn giản, chúng ta định nghĩa khoảng cách di,j = {0,1,...n-1} giữa 2 cây

Gi, Gj là một nửa số lượng các đường liên kết khác nhau (di,j= ½dhi,j), tức là:

dpGi,Gjdhi,j=          1 1 1 0 , | | | | n u u v j uv i uv V v u j uv i uv l l l l trong đó : 1, ( , ) 0, ( , ) j j uv j u v G l u v G      

1.4.2 Ứng dụng của bài toán

Bài toán được ứng dụng trong một số bài toán thiết kế mạng đơn giản và một số bài toán vận tải cụ thể.

Bài toán thiết kế mạng đơn giản được phát biểu như sau:

Đầu vào:

 Số nút mạng n,

 Vị trí của các nút,

 Yêu cầu truyền thông giữa n nút này,  Khả năng (lưu lượng) của liên kết.

Giá của liên kết phụ thuộc vào khả năng và độ dài của đường liên kết đó.

Yêu cầu xác định:

o Topology (cấu trúc) mạng,

28

Như vậy, chúng ta định nghĩa một mạng như là một đồ thị với n nút và có tối đa n(n-1) liên kết giữa các nút này. Nếu mạng là kết nối đầy đủ thì nó có ít nhất (n- 1) liên kết. Chúng ta giả sử rằng các liên kết này đều là vô hướng (tuy nhiên ta cũng có thể áp dụng trong trường hợp có hướng) và mạng luôn là liên thông. Như vậy, số lượng tối đa các liên kết có thể có là n(n-1)/2. Khoảng cách giữa hai nút được tính toán theo khoảng cách Euclid:

2 2 ) ( ) ( a b a b ab x x y y d    

trong đó x, y là các toạ độ trong hệ trục toạ độ Carter

Mục đích của mạng là để vận chuyển các đối tượng, như hàng hoá hay thông tin, từ nút này đến nút khác trong mạng. Do đó, cần thiết phải có các luật để định tuyến giao thông qua mạng. Các luật này phải dựa trên các thuật toán định tuyến. Nếu số lượng các liên kết trong mạng liên thông đầy đủ lớn hơn n-1, việc định tuyến giao thông qua mạng có thể thay đổi tự động phụ thuộc vào tình trạng tải, độ trễ, lỗi của các nút mạng hay một cài điều kiện khác. Ngược lại, nếu chỉ có n-1 đường liên kết thì theo định lí DaisyChain, sẽ chỉ có một đường đi duy nhất từ nút này đến mỗi nút kia trong mạng và do đó việc định tuyến là không cần thiết.

Dễ dàng thấy được lợi ích của việc sử dụng cây là:

 Thể hiện cấu trúc mạng với số liên kết ít nhất mà vẫn đạt được đồ thị liên thông.

 Không cần định tuyến tự động vì chỉ có đường đi duy nhất giữa hai nút mạng  Kích thước không gian tìm kiếm  n2

tree n

 nhỏ hơn rất nhiều so với đồ thị thông thường  n(n1)/2

graph n

Tuy nhiên, cũng cần thấy việc sử dụng cây khung cũng có những nhược điểm nhất định, đó là cây rất không an toàn với lỗi nút và đường liên kết. Nếu một liên kết hoặc một nút mạng bị lỗi, cây sẽ bị chia thành hai cây con không có khả năng "giao tiếp" được với nhau.

29

Các bài toán thiết kế mạng/vận tải trên thực tế: Bài toán 1: (adsbygoogle = window.adsbygoogle || []).push({});

Giả sử rằng mỗi đỉnh v biểu diễn một thành phố và r(v) là số dân của thành phố đó. Đó là lí do vì sao mà ta giả sử rằng yêu cầu truyền thông/vận tải giữa các cặp đỉnh tỉ lệ thuận với tích (tổng) của trọng số của hai đỉnh đó. PROCT, SROCT là cấu trúc cây với giá truyền thông cực tiểu.

Bài toán 2:

Đối với mỗi nút trong mạng đều có một thông điệp riêng truyền đến các nút khác và tổng thông điệp nhận được sẽ tỉ lệ thuận với trọng lượng (khả năng nhận) của nút nhận. Với giả sử này thì giá liên thông của cây sẽ là:

v u T u v d v r , ) , ( ) ( = ( ) 2 1 T

Cs (giá của SROCT).

Bài toán 3:

Trong một mạng máy tính, hầu hết sự truyền thông là giữa máy chủ và máy khách. Nói chung, chỉ có một số ít máy chủ phục vụ cho nhiều máy khách. Hướng của bài toán p-source MRCT cung cấp giải pháp cho những dạng ứng dụng như vậy.

30

CHƢƠNG 2. GIẢI THUẬT DI TRUYỀN

2.1 Giải thuật tiến hóa 2.1.1 Lịch sử phát triển 2.1.1 Lịch sử phát triển

Tính toán tiến hóa (Evolutionary Computation) là các kỹ thuật tìm kiếm theo xác suất có ý tưởng xuất phát từ nguyên lý “chọn lọc tự nhiên” trong học thuyết về sự tiến hóa của Darwin, và các kỹ thuật về gen. Các kỹ thuật này được áp dụng cho một quần thể bao gồm các cá thể nhân tạo, chúng chiến đấu trong cuộc đấu tranh sinh tồn trong đó các cá thể thích nghi nhất sẽ sống sót và cho phép sản sinh ra các cá thể mới.

Tính toán tiến hóa được giới thiệu vào đầu những năm 1960 trong “Các

Một phần của tài liệu Thuật toán di truyền giải bài toán cây khung truyền thông tối ưu (Trang 28)