Professional Documents
Culture Documents
toán
Ngôn ngữ và hàm tính được
5/ Máy Turing vạn năng
Mã hóa máy Turing
Xét máy Turing có
• tập trạng thái
• bảng chữ 9 phần tử gồm ký tự trắng #
• hàm chuyển : quy tắc có dạng
Mã hóa máy Turing bởi một xâu
• Bảng chữ 9 phần tử, ví dụ
• số nguyên i được biểu diễn nhị phân, ký hiệu (trong mục này có thể ngầm hiểu i
là dạng nhị phân)
Mã hóa máy Turing
Mã hóa máy Turing bởi một xâu
• Bảng chữ 9 phần tử, ví dụ
• số nguyên i được biểu diễn nhị phân, ký hiệu (trong mục này có thể ngầm hiểu i
là dạng nhị phân)
Từ đó có thể biểu diễn: (chú ý: các số được biểu diễn nhị phân)
• tập trạng thái: biểu diễn bởi xâu - sử dụng 4 chữ của Z
• bảng chữ: biểu diễn bởi xâu - sử dụng 4 chữ của Z
• hàm chuyển:
• mỗi quy tắc được biểu diễn bởi xâu c(r)
- sử dụng 7 chữ của Z
• hàm chuyển:
Mã hóa máy Turing
Mã hóa máy Turing bởi một xâu
• Xét bảng chữ 9 phần tử, ví dụ
• số nguyên i được biểu diễn nhị phân, ký hiệu (trong mục này có thể ngầm hiểu i
là dạng nhị phân)
Từ đó có thể biểu diễn: (chú ý: các số được biểu diễn nhị phân)
• tập trạng thái: biểu diễn bởi xâu ∗ ∗
- sử dụng 4 chữ của Z
• bảng chữ: biểu diễn bởi xâu ∗ ∗ - sử dụng 4 chữ của Z
• hàm chuyển:
• mỗi quy tắc được biểu diễn bởi xâu c(r)
- sử dụng 7 chữ của Z
Mã hóa máy Turing
• hàm chuyển:
• mỗi quy tắc với được biểu diễn bởi xâu c(r)
- sử dụng 7 chữ của Z
mã của mỗi quy tắc là câu của R:
∗ ∗ ∗ ∗
• hàm chuyển: mã hóa bởi xâu là các quy tắc chuyển c(r) phân cách bởi #
• Từ đó: một máy Turing có thể được mã hóa bởi xâu trên bảng chữ Z
• Xây dựng máy : input là số , cho kết quả là xâu mã hóa máy turing thứ i
Máy có 2 băng
• Băng 1: số 1 0 1 Số i
Chứng minh
• Có máy : nhận số , cho kết quả là xâu mã hóa máy turing thứ i ( )
• Xây dựng máy thực hiện hàm :
• nhận vào: xâu - xâu mã của máy , f - dữ liệu vào của máy
• kết quả được , tức là
• Máy được xây dựng nhờ 2 máy Turing 3 băng là và .
Máy vạn năng
• Máy được xây dựng nhờ 2 máy Turing 3 băng là và .
Máy - khởi động
• Đọc dữ liệu vào ghi trên băng 1; xâu được xóa ở băng 1 và sao chép sang
băng2; băng 3 được ghi trạng thái đầu
• Máy kết thúc ở cấu hình:
• băng 1: chứa xâu dữ liệu vào f , đầu đọc ở ô trái nhất của f
• băng 2: chứa xâu là xâu mã hóa máy , đầu đọc ở ô trái của
• băng 3: chứa xâu (là trạng thái khởi đầu của , đầu đọc ở ô trái của
Câu f
Câu mã wi cho Ti
q 1 Trạng thái q1
Máy vạn năng
Máy . - mô phỏng hoạt động của máy
• các băng nhớ:
• Băng 1: chứa giá trị băng nhớ của cấu hình hiện tại của máy
• Băng 2: chứa xâu mã hóa của máy
• Băng 3: chứa trạng thái hiện tại của máy
• Nếu cấu hình hiện tại của máy là thì u v
• Băng 1: chứa xâu với đầu đọc ở ô đầu của từ
• Băng 2: chứa xâu mã hóa
• Băng 3: chứa trạng thái
Câu mã wi cho Ti
q 1 0 qn
Máy vạn năng a
• Ví dụ:
với , có
Đánh giá thuật toán
• Định nghĩa (7.3): ta nói rằng f(x) tương đương g(x) khi x → + ∞, ký hiệ u f(x) g(x)
nếu 1
→
• Ví dụ:
với
Đánh giá thuật toán
• Mệnh đề (7.1):
Cho , khi đó
• Mệnh đề (7.2):
Nếu thì
• Mệnh đề (7.3):
Nếu thì
Đánh giá thuật toán
Một số lớp độ phức tạp
•
•
•
•
•
•
•
Luận đề Church (Turing-Church thesis)
• Mọi hàm tính được một cách máy móc/hiệu quả là T-tính được
• Để chứng minh - cần so sánh các thủ tục hiệu quả với máy Turing
• Cần hình thưc hóa thủ tục hiệu quả
• Chấp nhận luận đề => chấp nhận có bài toán không có thuật toán hiệu quả
Bài toán quyết định
Bài toán quyết định
• Lớp bài toán với 2 kết quả được gọi là quyết định được (giải được, decidable) nếu
tồn tại thuật toán xác định và luôn dừng với mọi bộ dữ liệu vào và cho kết quả
yes/no
• Ngược lại: bài toán không quyết định được/không giải được
• Bài toán dừng của máy Turing là không quyết định được
Lớp P và NP (Nondeterministic Polynomial)
Độ phức tạp của ngôn ngữ - máy Turing đoán nhận
Độ phức tạp của bài toán - độ phức tạp của ngôn ngữ đặc trưng cho bài toán
Định nghĩa:
Xét máy Turing đơn định k băng, dừng trên mọi dữ liệu vào
Độ phức tạp thời gian T(n) của máy Turing đơn định là số phép chuyển lớn nhất để
xử lý input bất kỳ độ dài n
(quy ước mỗi bước tính toán - kéo dài trong 1 đơn vị thời gian)
Định nghĩa
Xét máy Turing off-line đơn định k băng, dừng trên mọi dữ liệu vào
Độ phức tạp không gian S(n) của máy Turing đơn định là số ô nhớ lớn nhất được
truy cập (bởi các đầu đọc/ghi trên các băng làm việc) để xử lý input bất kỳ độ dài n
Với máy Turing không đơn định
• Độ phức tạp tính toán không đơn định về thời gian T(n) là SL tính toán lớn nhất
khi xử lý các xâu vào độ dài n (SL tính toán xử lý 1 xâu f độ dài n: số lượng phép
toán tối thiểu đoán nhận xâu f)
• Độ phức tạp tính toán không đơn định về không gian S(n) là SL ô nhớ lớn nhất
được truy cập khi xử lý các xâu vào độ dài n (với 1 xâu f độ dài n: số lượng ô nhớ
tối thiểu cần để đoán nhận f)
Các lớp của độ phức tạp
• DSPACE (f (n)) : Họ các ngôn ngữ có độ phức tạp về bộ nhớ S(n) = f(n)
• NSPACE (f (n)) : Họ các ngôn ngữ có độ phức tạp không đơn định về bộ nhớ
S(n)= f (n)
• DTIME (f (n)) : Họ các ngôn ngữ có độ phức tạp về thời gian T(n) = f(n)
• NTIME (f (n)) : Họ các ngôn ngữ có độ phức tạp không đơn định về thời gian
T (n) = f (n)
Bài toán
• Xử lý được/giải được: nếu thuộc lớp P
• không xử lý được/không giải được nếu thuộc NP
Rút gọn đa thức - quy dẫn đa thức (polynomial reduction)
Định nghĩa: Ta nói bài toán A được rút gọn đa thức về bài toán B nếu
+ Tồn tại hàm f được xác định từ tập hợp các biểu diễn dữ liệu của bài toán A vào
tập hợp các biểu diễn dữ liệu của bài toán B, thỏa:
+ Tồn tại máy Turing dừng cho mọi dữ liệu và thực hiện tính hàm f với thời gian đa
thức.
Rút gọn đa thức - quy dẫn đa thức (polynomial reduction)
• Mệnh đề: Nếu A được rút gọn đa thức về B thì
nếu B là bài toán thuộc lớp P thì A cũng là bài toán thuộc lớp P
nếu A là bài toán thuộc lớp NP thì B cũng là bài toàn thuộc lớp NP
Bài toán NP-complete
• P NP => xét quan hệ P và NP: duyệt lớp NP
• NP: chọn (lớp) các bài toán "khó nhất" C và kiểm tra C P ?
• Bài toán "khó nhất" - gọi là bài toán NP-C (Stephen Cook)
Định nghĩa
• C NP-C nếu: (i) C NP và (ii) mọi bài toán B NP đều rút gọn đa thức về C
• Ngôn ngữ L NP-C nếu: (i) L NP và (ii) với mọi ngôn ngữ L' NP, L' rút gọn đa
thức về L
Mối liên hệ
• Nếu B NP-C, C NP và B rút gọn về C thì C NP-C
• Nếu L NP-C khi đó, P=NP khi và chỉ khi L P
Một số bài toán thuộc NP-C
Lớp NP-Hard (NP khó)
• Bài toán H là NP-Hard nếu có bài toán C thuộc NP-C rút gọn đa thức về H