intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Môn học: Phân tích và thiết kế giải thuật-Chương 6

Chia sẻ: Phan Thi Ngoc Giau | Ngày: | Loại File: PDF | Số trang:0

57
lượt xem
13
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Những bài toán NP đầy đủ-Đối với nhiều bài toán chúng ta có những giải thuật hữu hiệu để giải, tuy nhiên, có rất nhiều bài toán khác không có giải thuật hữu hiệu để giải

Chủ đề:
Lưu

Nội dung Text: Môn học: Phân tích và thiết kế giải thuật-Chương 6

  1. Ch ng 6 Nh ng bài tóan NP- y 1. Gi i thu t th i gian a th c t t nh và không t t nh 2. V n NP- y 3. nh lý Cook 4. M t s bài toán NP- y 1
  2. T n t i hay không t n t i gi i thu t h u hi u i v i nhi u bài toán chúng ta có nh ng gi i thu t • h u hi u gi i. Tuy nhiên, có r t nhi u bài toán khác không có gi i • thu t h u hi u gi i. Và i v i m t l p khá l n c a nh ng bài toán nh • v y, chúng ta không th nói có t n t i gi i thu t h u hi u gi i nó hay không. 2
  3. Nh ng bài toán khó và nh ng bài toán d Nhi u nghiên c u ã c th c hi n và có nh ng c ch • phân lo i nh ng bài toán m i là “khó b ng” m t s bài toán c ã bi t. • Tuy nhiên, ôi khi ranh gi i gi a nh ng bài toán “khó” và nh ng bài toán “d ” là khá t nh .. Thí d :  D : Có t n t i m t l i i t x n y mà trong s nh h n M?  KHó: Có t n t i m t l i i t x n y mà tr ng s M? Bài toán 1 - BFS – th i gian tuy n tính Bài toán 2 – th i gian hàm m 3
  4. 1. Gi i thu t th i gian a th c t t nh và không t t nh P: T p h p t t c nh ng bài toán có th gi i c b ng nh ng gi i thu t t t nh trong th i gian a th c. “T t nh” (Deterministic) : khi gi i thu t ang làm gì, c ng ch có m t vi c duy nh t có th c th c hi n k ti p. (whatever the algorithm is doing, there is only one thing it could do next). Thí d : X p th t b ng ph ng pháp chèn thu c l p P vì có ph c t p a th c O(N2 ) 4
  5. Tính không t t nh M t cách m r ng quy n n ng c a máy tính là cho nó có n ng l c làm vi c không t t nh (non-determinism). Không t t nh: khi m t gi i thu t g p m t s l a ch n gi a nhi u kh n ng, nó có quy n n ng “tiên óan” bi t ch n m t kh n ng thích áng. Gi i thu t không t t nh (nondeterministic algorithm) Thí d : Cho A là m t m ng s nguyên. M t gi i thu t không t t nh NSORT(A, n) s p th t các s theo th t t ng và xu t chúng ra theo th t này. 5
  6. Thí d v m t gi i thu t không t t nh // An array B is used as temporary array. procedure NSORT(A,n) // sort n positive integers // begin for i:= 1 to n do B[i]:= 0; Hàm choice(1:n) có kh for i:= 1 to n do n ng xác nh m t v trí begin úng trong t m tr t 1 n j := choice(1:n); n. if B[j] 0 then failure else B[j]:= A[i] end for i:= 1 to n-1 do if B[i] > B[i-1] then failure; print(B); success end; 6
  7. Thí d v m t gi i thu t không t t nh (tt.) S phân gi i m t gi i thu t không t t nh có th c th c hi n b ng m t s song song hóa không h n ch (unbounded parallelism). M i l n có b c l a ch n ph i th c hi n, gi i thu t t o ra nhi u b n sao c a chính nó (copies of itself). M i b n sao c th c hi n cho kh n ng l a ch n. Nh v y nhi u kh n ng c th c hi n cùng m t lúc. - B n sao u tiên k t thúc thành công thì làm k t thúc t t c các quá trình tính tóan khác. - N u m t b n sao k t thúc th t b i thì ch b n sao y k t thúc mà thôi. 7
  8. Gi i thu t không t t nh (tt.) Th t ra, m t máy tính không t t nh không t o ra nh ng b n sao c a gi i thu t m t khi ph i th c hi n m t l a ch n. Mà, nó có quy n n ng ch n m t y u t “ úng” t m t t p nh ng kh n ng l a ch n m i ph i th c hi n m t l a ch n. M t y u t “ úng” c nh ngh a nh là m t chu i ng n nh t c a nh ng l a ch n (shortest sequence of choices) mà d n n s k t thúc thành công. Trong tr ng h p không t n t i m t chu i nh ng l a ch n mà d n n s k t thúc thành công ta gi nh r ng gi i thu t d ng và in ra thông báo “tính toán không thành công”. 8
  9. Gi i thu t không t t nh (tt.) Ghi chú:  Các thông báo success và failure là t ng ng v i phát bi u stop trong m t gi i thu t t t nh. ph c t p tính toán c a NSORT là O(n).  NP: t p h p t t c nh ng bài toán mà có th c gi i b ng gi i thu t không t t nh trong th i gian a th c. nh x n Thí d : Bài toán có t n t i l i i dài nh t t nh y là thu c l p NP. 9
  10. Bài toán th a mãn m ch logic (circuit satisfiability problem) Cho m t công th c logic có d ng (x1 + x3 + x5)*(x1+ ~x2 + x4)*(~x3 + x4 +x5)* (x2 + ~x3 + x5) v i các bi n xi là các bi n logic (true or false), “+” di n t OR, “*” di n t AND, và ~ di n t NOT. Bài toán CSP là xác nh xem có t n t i m t phép gán các tr logic vào các bi n logic sao cho toàn công th c tr thành true. CSP c ng là m t bài toán NP. Ghi chú: L p P là m t t p con c a l p NP. 10
  11. 2. V n NP- y Có m t danh sách nh ng bài toán mà ã bi t là thu c v l p NP nh ng không rõ có th thu c v l p P hay không. (T c là, ta gi i chúng d dàng trên m t máy không t t nh nh ng ch a ai có th tìm th y m t gi i thu t h u hi u ch y trên máy tính thông th ng gi i b t k m t bài toán nào c a chúng). Nh ng bài toán NP này l i có thêm m t tính ch t n a là: “N u b t k m t trong nh ng bài toán này có th gi i c trong th i gian a th c thì t t c nh ng bài toán thu c l p NP c ng s c gi i trong th i gian a th c trên m t máy t t nh.” 11
  12. Nh ng bài toán nh v y c g i là nh ng bài toán (NP-complete) NP- y Hình 6.1 NP-complete NP P 12
  13. Tính kh thu gi m a th c (Polynomial reducibility) L p NP- y là l p con c a nh ng bài toán khó nh t • trong l p NP. Công c chính ch ng minh m t bài toán thu c lo i NP- • là ý t ng v tính kh thu gi m a th c (polynomial y reducibility). B t c gi i thu t nào gi i c bài toán m i thu c lo i NP • có th c dùng gi i m t bài toán NP- y nào ó ã bi t b ng cách sau: bi n th m t th hi n b t k c a bài toán NP- y ã bi t thành m t th hi n c a bài toán m i, gi i bài toán này b ng gi i thu t ã có tìm ra m t l i gi i, r i bi n th l i gi i này tr v thành m t l i gi i c a bài toán NP- y ã bi t. 13
  14. Tính kh thu gi m a th c (tt.) ch ng minh m t bài toán thu c lo i NP là NP- y , ta ch c n ch ng t r ng m t bài toán NP- y ã bi t nào ó thì kh thu gi m a th c v bài toán m i y. nh ngh a: (Thu gi m v ). Ta b o bài toán L1 thu gi m v (reduces to) bài toán L2, ký hi u là L1 L2 n u b t k gi i thu t nào gi i c L2 thì c ng có th c dùng gi i L1. 14
  15. Tính kh thu gi m a th c (tt.) ch ng minh m t bài toán m i L là NP- y , chúng ta c n ch ng minh: 1. Bài toán L thu c l p NP 2. M t bài toán NP- y ã bi t thu gi m v L. Thí d : Cho hai bài toán  Bài toán ng i th ng gia du hành (TSP): cho m t t p các thành ph và kho ng cách gi a m i c p thành ph , tìm m t l trình i qua t t c m i thành ph sao cho t ng kho ng cách c a l trình nh h n M.  Bài toán chu trình Hamilton (HCP): Cho m t th , tìm m t chu trình n mà i qua t t c m i nh. 15
  16. Tính kh thu gi m a th c (tt.) Gi s ta bi t HCP là NP- y và mu n xác nh xem TSP c ng là NP- y hay không. B t k gi i thu t nào có th c dùng gi i bài toán TSP c ng có th c dùng gi i bài toán HCP, thông qua s thu gi m sau: Cho m t th hi n c a bài toán HCP (m t th ), hãy t o ra m t th hi n c a bài toán TSP t ng ng nh sau: t o ra các thành ph c a bài toán TSP b ng cách dùng t p nh trong th ; v kho ng cách gi a hai c p thành ph ta gán giá tr 1 n u có t n t i m t c nh gi a hai nh t ng ng trong th và giá tr 2 n u không có c nh. R i thì dùng gi i thu t gi i TSP tìm m t l trình N (N là s nh trong th ). 16
  17. Tính kh thu gi m a th c (tt.) Ngh a là HCP thu gi m v TSP, nh v y tính ch t NP- y c a HCP hàm ý tính ch t tính ch t NP- y c a TSP. S thu gi m HCP v TSP là n gi n vì hai bài toán có nh ng nét t ng t nhau. S thu gi m th i gian a th c có th s r t ph c t p khi chúng ta liên k t nh ng bài toán mà t ng i khác nhau. Thí d : Có th thu gi m bài toán tho mãn m ch logic (CSP) v bài toán HCP. 17
  18. 3. nh lý Cook Nh ng: Bài toán nào là bài toán NP- y u tiên? S.A. Cook (1971) ã xu t c m t ch ng minh tr c ti p u tiên r ng bài toán th a mãn m ch logic (CSP) là bài toán NP- y . “N u t n t i m t gi i thu t th i gian a th c gi i bài toán th a mãn m ch logic thì t t c m i bài toán trong l p NP có th c gi i trong th i gian a th c.” Ch ng minh c a Cook r t ph c t p nh ng ch y u d a vào máy Turing (Turing machine) t ng quát. 18
  19. 4. M t s bài toán NP- y Hàng nghìn bài toán khác nhau c bi t là NP- y . Danh sách này b t u b ng bài toán tho mãn m ch logic, bài toán ng i th ng gia du hành (TSP) và bài toán chu trình Hamilton. M t vài bài toán khác nh sau: - Bài toán phân ho ch s : Cho m t t p nh ng s nguyên, có th phân ho ch chúng thành hai t p con mà có t ng tr s b ng nhau? - Bài toán qui ho ch nguyên: Cho m t bài toán qui ho ch tuy n tính, li u có t n t i m t l i gi i toàn s nguyên? 19
  20. - X p l ch công vi c trên a b x lý ( multiprocessor scheduling): Cho m t k h n (deadline) và m t t p các công tác có chi u dài th i gian khác nhau ph i c th c thi trên hai b x lý. V n là có th s p x p th c thi t t c nh ng công tác ó sao cho th a mãn k h n không? - Bài toán ph nh (VERTEX COVER): Cho m t th và m t s nguyên N, có th ki m c m t t p nh h n N nh mà ch m h t m i c nh trong th ? - Bài toán x p thùng (BIN PACKING): cho n món mà ph i t vào trong các thùng có s c ch a b ng nhau L. i òi h i li n v s c ch a c a thùng. M c ích Món là xác nh s thùng ít nh t c n ch a t t c n món ó. 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2