1. Trang chủ
  2. » Khoa Học Tự Nhiên

Tài liệu CƠ SỞ TOÁN HỌC docx

31 390 1
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Cơ sở toán học
Tác giả Lê Thụy
Trường học Trường Đại học Dân lập Hải Phòng
Chuyên ngành Lý thuyết mật mã
Thể loại Tài liệu
Thành phố Hải Phòng
Định dạng
Số trang 31
Dung lượng 591,72 KB

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

Nội dung

Định nghĩa Thời gian chạy thực running time của một thuật toán với một đầu vào cụ thể là số các thao tác nguyên thủy hoặc các bước thực hiện.. Định nghĩa Trường hợp trung bình average-

Trang 1

CƠ SỞ TOÁN HỌC



Trang 2

CƠ SỞ TOÁN HỌC

Trong phần này chúng ta sẽ nhắc lại tóm tắt một số kiến thức toán học, là cơ

sở cho Lý thuyết mật mã được sử dụng xuyên suốt tài liệu này Các kết quả quan trọng của Lý thuyết số cũng sẽ được trình bầy và có ví dụ cụ thể

Nội dung chính

I Lý thuyết thông tin 2

II Lý thuyết về độ phức tạp 5 III Lý thuyết số 17

Trang 3

I Lý thuyết thông tin

p

= =

Cũng như vậy, Y và Z cũng là các biến ngẫu nhiên

Entropy của X là một phép đo toán học khối lượng thông tin được cung cấp bởi một sự quan sát X Tương đương, nó là một sự không chắc chắn

về kết quả trước một sự quan sát của X Entropy cũng hữu dụng cho xấp xỉ số bit trung bình được yêu cầu để mã hóa yếu tố X

n i

Trang 4

1.6 Tính chất của Entropy điều kiện

X và Y là các biến ngẫu nhiên

(i) Số lượng H(X|Y) đo khối lượng sự không chắc chắn duy trì về

phía X sau khi Y được quan sát

(ii) H(X|Y) ≥ 0 và H(X|X) = 0

(iii) H(X|Y) = H(X) + H(Y|X) = H(Y) + H(X|Y)

(iv) H(X|Y) ≤ H(X) Dấu “=” xảy ra nếu X và Y là độc lập

2 Thông tin qua lại (mutual information)

2.1 Định nghĩa thông tin qua lại hoặc thông tin (transinformation) của

các biến ngẫu nhiên X và Y là :

I(X; Y) = H(X) – H(X|Y)

Tương tự, thông tin của X và cặp Y, Z được định nghĩa bởi:

I(X; Y, Z) = H(X) – H(X|Y, Z)

Trang 5

2.2 Tính chất của thông tin qua lại

(i) Số lượng I(X; Y) có thể được nghĩ như là khối lượng tin mà Y

bộc lộ về X Tương tự, số lượng I(X; Y, Z) có thể được nghĩ như

là khối lượng tin mà Y và Z đồng thời bộc lộ về X (ii) I(X; Y) ≥ 0

(iii) I(X; Y) = 0 nếu X và Y là độc lập (Y không đóng góp thông tin về

X) (iv) I(X; Y) = I(Y; X)

2.3 Định nghĩa

Thông tin có điều kiện của cặp X, Y được cho bởi Z được định nghĩa:

I Z (X; Y) = H(X|Z) – H(X|Y, Z)

2.4 Tính chất của thông tin có điều kiện

(i) Số lượng I Z (X; Y) có thể được thể hiện như khối lượng tin mà Y

cung cấp về X, khi Z được quan sát

(ii) I(X; Y, Z) = I(X; Y) + I Y (X; Z)

(iii) I Z (X; Y) = I Z (Y; X)

Trang 6

II Lý thuyết về độ phức tạp (complexity theory)

Ý chính của thuyết phức tạp là cung cấp kĩ thuật phân loại các bài toán tính toán tùy theo các tài nguyên cần dùng để giải chúng Việc phân loại không nên phụ thuộc vào một mô hình tính toán cụ thể mà nên tính toán từng độ khó của mỗi loại bài toán Các tài nguyên được đo lường

có thể bao gồm thời gian, không gian lưu trữ, các bit ngẫu nhiên, số tiến trình… Nhưng việc tập trung chính là vào thời gian, đôi khi là không gian

1 Định nghĩa cơ bản

Độ phức tạp tính toán (về không gian hay thời gian) của một tiến trình

tính toán là số ô nhớ được dùng hay số các phép toán sơ cấp được thực hiện trong quá trình tính toán đó Dữ liệu đầu vào đối với một thuật toán thường được biểu diễn thông qua các từ trong một bảng kí tự nào

đó Độ dài của một từ là số kí tự trong từ đó

1.1 Định nghĩa

Một thuật toán là một qui trình tính toán hoàn toàn xác định mà dùng một biến dữ liệu đầu vào và dừng lại với một kết quả ở đầu ra

Thuật ngữ “qui trình tính toán hoàn toàn xác định” không đơn thuần

là toán học Nó có thể được tạo ra bằng cách sử dụng các mô hình tính toán như: máy Turing, máy truy cập ngẫu nhiên, hoặc các mạch logic…Hơn thế nữa, nó còn liên quan đến độ phức tạp về kĩ thuật của các mô hình này Vì vậy, đơn giản hơn, một thuật toán như là một chương trình máy tính, được viết bằng một ngôn ngữ lập trình cụ thể cho mỗi máy tính cụ thể, dùng một biến dữ liệu đầu vào và dừng lại với một kết quả ở đầu ra

Trang 7

Vấn đề thường được quan tâm là tìm ra được thuật toán hiệu quả nhất

để giải một bài toán tính toán được đưa ra Thời gian thực hiện giải thuật phụ thuộc vào từng trường hợp của bài toán Do đó, cần đưa ra chính xác đơn vị của thời gian, đặc biệt là khi so sánh sự thực thi của 2 thuật toán

1.2 Định nghĩa

Kích cỡ của đầu vào (input) là tổng số bit cần thiết để mô tả nó trong

cách kí hiệu nhị phân thông thường, bằng việc dùng một lược đồ mã hóa phù hợp Thông thường, cỡ của đầu vào sẽ là số của mục chọn trong dữ liệu đầu vào

Ví dụ: ( về kích cỡ của một vài đối tượng )

(i) Số các bit trong mô tả nhị phân của 1 số nguyên dương n là 1 +

⎣ln(n)⎦ Để đơn giản, cỡ của n sẽ ≈ lg(n) (ii) Nếu f là 1 đa thức bậc k, mỗi hệ số là 1 số nguyên không âm n

thì cỡ của f là (k+1)lg(n) bit (iii) Nếu A là 1 ma trận với r hàng, s cột, và với các mục nhập n

nguyên không âm thì cỡ của A là r.s.lgn bit

1.3 Định nghĩa

Thời gian chạy thực (running time) của một thuật toán với một đầu vào

cụ thể là số các thao tác nguyên thủy hoặc các bước thực hiện Thường một bước cần đến 1 bít thao tác Nhưng đối với một vài giải thuật, sẽ thuận tiện hơn khi trải qua các bước như: so sánh, chỉ dẫn cơ khí, một

chu kì đồng hồ cơ khí, một phép nhân module…

Trang 8

1.5 Định nghĩa

Trường hợp trung bình (average-case) của thời gian chạy thực của 1

thuật toán là mức trung bình của thời gian trên tất cả các đầu vào của các cỡ cố định, được diễn tả như là một hàm của dữ liệu đầu vào

2 Ký hiệu tiệm cận (asymptotic notation)

Thường rất khó để nhận biết được thời gian chạy thực của một thuật toán Trong trường hợp như vậy, một hàm xấp xỉ sẽ được dùng thay thế, nhưng chỉ thu được gần sát với thời gian chạy thực Chính vì vậy,

sẽ tìm hiểu cách mà thời gian chạy thực của một thuật toán tăng như cỡ của bộ dữ liệu đầu vào tăng mà không cần có sự ràng buộc nào

Với những gì dưới đây, các hàm được định nghĩa trên các số nguyên

dương và các giá trị thực dương, f và g là hai hàm như vậy

2.1 Định nghĩa ( order notation –sắp xếp kí hiệu )

(i) Cận trên tiệm cận (asymptotic upper bound) :

f(n) = O(g(n)) nếu tồn tại một hằng số dương c và 1 số nguyên dương n 0 để 0 ≤ f(n) ≤ cg(n) với n ≥ n 0

(ii) Cận dưới tiệm cận (asymptotic lower bound) :

f(n) = Ω(g(n)) nếu tồn tại một hằng số dương c và 1 số nguyên dương n 0 để 0 ≤ cg(n) ≤ f(n) với n ≥ n 0

(iii) Cận sát theo tiệm cận (asymptotic tight bound) :

f(n) = (g(n)) nếu tồn tại hằng số dương c 1 và c 2 và 1 số nguyên dương n 0 để c 1 g(n) ≤ f(n) ≤ c 2 g(n) với n ≥ n 0 (iv) Kí hiệu o (o- notation):

f(n) = o(g(n)) nếu đối với bất kỳ hằng số c > 0 nào đều tồn tại một hằng n 0 > 0 để 0 ≤ f(n) ≤ cg(n) với n ≥ n 0

Trang 9

* Nếu f(n) = O(g(n)) và g(n) = O(h(n)) thì f(n) = O(h(n))

2.3 Định lý ( sự xấp xỉ của 1 vài hàm phổ biến )

(i) Hàm đa thức (polynomial function): Nếu f(n) là một đa thức

bậc k với các số hạng dương thì f(n) = (n k )

(ii) Với mọi hằng số c > 0 thì log c (n) = (lgn)

(iii) Công thức Stirling: Với mọi số nguyên n ≥ 1 thì:

) n 12

1 ( n

e

n ( n 2

! n ) e

n ( n

n

1 ( 1 ( ) e

n ( n

2π n , n! = o(n n ) và n! = Ω(2 n )

(iv) Ta có: lg(n!) = (nlgn)

Ví dụ: ( so sánh tỉ lệ tăng của 1 vài hàm )

ε và c là các hằng số tùy ý với 0 < ε < 1 < c Các hàm sau được liệt

kê theo thứ tự tăng dần của tỉ lệ tăng tiệm cận:

1< ln ln n < lnn < exp ( ln ln ln n n ) < < n nε c < n ln n < c n < n n < c c n

Trang 10

3 Lớp phức tạp

3.1 Định nghĩa:

Một thuật toán thời gian đa thức là một thuật toán mà hàm thời gian

chạy thử trường hợp tồi nhất (worst-case running time function) của nó

có dạng O(n k ), trong đó n là cỡ dữ liệu đầu vào (input) và k là hằng số

Với bất kì thuật toán nào mà thời gian chạy thực của nó không thể bị

giới hạn (bound) được gọi là một thuật toán thời gian theo số mũ (exponential- time algorithm)

Nói một cách tổng quát, thuật toán thời gian đa thức có thể ngang bằng với các thuật toán tốt hoặc hiệu quả, trong khi thuật toán thời gian theo

số mũ lại bị xem là không hiệu quả Tuy nhiên, đối với một vài tình huống thực tế thì nét riêng biệt này lại không phù hợp

Khi xem xét độ phức tạp của thời gian đa thức (polynomial- time), bậc

của đa thức rất quan trọng, thậm chí dù một thuật toán với một thời

gian chạy thực của O(n ln ln n ), n là cỡ của dữ liệu đầu vào (input), thì chậm hơn so với thuật toán có thời gian chạy thực của O(n 100 ) Thuật toán trước có thể nhanh hơn trong thực tế đối với các giá trị n nhỏ hơn, đặc biệt nếu các hằng số bị ẩn bởi kí hiệu O-lớn là nhỏ hơn

Hơn thế nữa, trong mật mã học, độ phức tạp trung bình thì quan trọng

hơn nhiều độ phức tạp trong trường hợp tồi nhất (worst-case) - một điều kiện cần thiết cho một lược đồ mã hóa (encryption scheme) để

được coi như là an toàn Mà bài toán giải mã tương ứng thì khó trên

trung bình (hoặc chính xác hơn là luôn luôn khó), và không chỉ đối với

một vài trường hợp riêng biệt

3.2 Định nghĩa

Một thuật toán thời gian chạy thử số mũ con (subexponential- time algorithm) là một thuật toán mà hàm thời gian chạy thử tồi nhất có dạng e O(n) , trong đó n là cỡ của của bộ dữ liệu đầu vào

Trang 11

Ví dụ: (về thời gian chạy thử số mũ con )

A là một thuật toán mà dữ liệu đầu vào hoặc là các phần tử của một

trường xác định F q hoặc là 1 số nguyên q Nếu thời gian chạy thử được

mong chờ của A có dạng:

L q [α, c] = O(exp((c + o(1)(lnq) α (ln ln q) 1-α ))

trong đó:

c là hằng số dương, α = 1 là hằng số thỏa mãn 0 < α < 1 thì A là một

thuật toán thời gian chạy thử số mũ con

Quan sát thấy rằng khi α = 0 thì L q [0, c] là một đa thức trong lnq, trong khi α =1 thì L q [1, c] là một đa thức trong q Do đó nên đầy đủ lũy thừa trong lnq

Để đơn giản, lý thuyết độ phức tạp tính toán hạn chế sự chú ý của nó

tới các bài toán quyết định (decision problems), ví dụ: Các bài toán mà

có câu trả lời YES hoặc NO Điều này không quá hạn chế trong thực tiễn, vì tất cả các bài toán tính toán sẽ bị bắt gặp (encounter) ở đây có

thể là cụm từ như các bài toán quyết định theo một cách như vậy, mà một thuật toán hiệu quả đối với các bài toán quyết định mang lại một thuật toán hiệu quả cho bài toán tính toán và ngược lại

3.3 Định nghĩa

Lớp phức tạp P là tập của tất cả các bài toán quyết định mà có thể giải

được trong thời gian đa thức

3.4 Định nghĩa

Lớp phức tạp NP là tập của tất cả các bài toán quyết định cho một câu

trả lời YES, có thể được xác minh trong thời gian đa thức bằng cách

đưa ra một vài thông tin thêm, gọi là một chứng nhận

Trang 12

3.5 Định nghĩa

Lớp phức tạp co-NP là tập của tất cả các bài toán quyết định cho một

câu trả lời NO, có thể được xác minh trong thời gian đa thức bằng cách

sử dụng một chứng nhận phù hợp

Phải nhấn mạnh rằng nếu một bài toán quyết định trong NP, nó có thể

không thuộc trường hợp mà chứng nhận của một câu trả lời YES có thể

dễ dàng đạt được Cái được xác nhận là cái mà giống như một chứng nhận tồn tại và nếu được biết, thì có thể được dùng để xác nhận 1 cách

hiệu quả câu trả lời YES Điều tương tự cũng đúng đối với câu trả lời

NO của các bài toán trong co-NP

Ví dụ: ( bài toán trong NP )

Xem xét một bài toán quyết định sau:

Giả thiết: Cho một số nguyên dương n

Câu hỏi: n có phải là hợp tử hay không? Nghĩa là, có hai số nguyên a,b >1 để n = a.b không?

Hợp tử (composite) thuộc NP bởi vì nếu một số nguyên n là hợp tử thì

sự kiện này có thể được kiểm chứng trong thời gian đa thức nếu a là số chia của n, khi 1< a < n (việc chứng nhận trong trường hợp này bao gồm cả số chia a) Điều này cũng đúng trong trường hợp mà hợp tử

thuộc về co-NP, nhưng cũng vẫn chưa xác định được là hợp tử có thuộc

Trang 13

Hầu hết các chuyên gia đều có ý kiến rằng câu trả lời cho 3 câu hỏi trên

là không, mặc dù không có gì chứng minh Ý kiến về sự qui về được là

hữu ích khi so sánh mối tương quan về độ khó của các bài toán

3.7 Định nghĩa

Cho L 1 và L 2 là 2 bài toán quyết định L 1 là ‘polytime reduce’ đối với L 2

và được viết : L 1 ≤ p.L 2 nếu có một thuật toán giải L 1 mà dùng một

thuật toán để giải L 2 như một thường trình con, và chạy trong thời gian

đa thức nếu thuật toán cho L 2 được dùng

Nếu L 1 ≤ p.L 2 thì L 2 ít nhất cũng khó như L 1 hoặc tương đương L 1 không khó hơn L 2

3.10 Định nghĩa

L 1 và L 2 là 2 bài toán quyết định Nếu L 1 ≤ pL 2 và L 2 ≤ pL 1 thì L 1 và L 2 được coi là tương đương nhau về mặt tính toán (computationally equivalent)

(ii) L 1 ≤ pL với mọi L 1 NP

Lớp của tất cả các bài toán NP- trọn vẹn được kí hiệu là NPC,

Trang 14

(iii) Các bài toán NP- trọn vẹn là các bài toán khó nhất trong NP, ít

nhất thì cũng khó như bất kì bài toán nào trong NP Có hàng

nghìn bài toán đa dạng như: kết hợp, lý thuyết số, logic,…

được biết đến như là NP- trọn vẹn

Ví dụ: ( bài toán tổng tập con - subset sum problem )

Cho một tập các số nguyên dương {a 1 , a 2 , …, a n} và một số nguyên

dương s, thì liệu rằng có một tập con của a i là tổng của s hay không ?

Bài toán này là NP- trọn vẹn

(iii) Nếu L 1 là NP- trọn vẹn và L 1 co-NP thì NP = co-NP

Theo (1): Nếu một thuật toán thời gian đa thức được áp dụng cho bất kì

bài toán NP- trọn vẹn đơn lẻ nào thì đó là trường hợp mà P= NP, một

kết quả cực kì đáng ngạc nhiên Hình 2 sẽ chứng minh mối quan hệ

Trang 15

3.14 Định nghĩa

Một bài toán là NP- khó (hard) nếu tồn tại một vài bài toán NP- trọn

vẹn mà polytime rút gọn (reduce) tới nó

Chú ý rằng việc phân loại NP- khó thì không hạn chế tới các bài toán quyết định Quan sát thấy rằng một bài toán NP- trọn vẹn cũng là NP- khó

4 Thuật toán ngẫu nhiên (Randomized algorithm)

Thuật toán được nghiên cứu trong phần này đã được tiền định trước

(deterministic), như các giải thuật có cùng số chuỗi thao tác, số bước

thực hiện với cùng dữ liệu đầu vào

Tuy vậy, một giải thuật ngẫu nhiên tạo ra các quyết định ngẫu nhiên tại mỗi thời điểm trong lúc thực thi Hơn nữa, chuỗi thao tác thực thi của chúng có thể khác so với mỗi thời điểm mà chúng làm việc với cùng dữ liệu đầu vào Các quyết định ngẫu nhiên được dựa trên các kết quả của

số phần tử sinh (generator) ngẫu nhiên Có nhiều bài toán dành cho các

thuật toán ngẫu nhiên mà chúng được biết đến hiệu quả hơn, cả về thời gian và không gian, hơn là các thuật toán tiền định

Thuật toán ngẫu nhiên dành cho các bài toán quyết định có thể được phân lớp theo xác suất mà chúng quay trở lại câu trả đúng

Trang 16

4.1 Định nghĩa

A là một thuật toán ngẫu nhiên dành cho bài toán quyết định L

A có 0- sided error nếu P(A xuất YES | Câu trả lời của I là YES) = 1

Và P(A xuất YES | Câu trả lời của I là NO) = 0

A có 1- sided error nếu P(A xuất YES | Câu trả lời của I là YES) ≥ 1

2

Và P(A xuất YES | Câu trả lời của I là NO) = 0

A có 2- sided error nếu P(A xuất YES | Câu trả lời của I là YES) 2

2 trong định nghĩa 1- sided error là một cái gì đó bất kì và có thể

được thay thế bởi bất kì hằng số dương nào Tương tự, số 2

3

13

trong định nghĩa 2-sided error có thể được thay thế lần lượt bằng

Thời gian chạy thực được mong chờ của thuật toán ngẫu nhiên là một

cận trên (upper bound) thời gian chạy được mong chờ đối với mỗi dữ

liệu đầu vào việc mong chờ trên tất cả dữ liệu đầu ra của số phần tử

sinh (generator) ngẫu nhiên được dùng bởi thuật toán, được diễn tả như

một hàm độ lớn của đầu vào

Trang 17

4.3 Định nghĩa

Lớp phức tạp ZPP (zero- sided probabilistic polynomial time) là tập

của tất cả các bài toán ngẫu nhiên với 0- sided error, chạy trong thời

gian đa thức mong đợi

Lớp phức tạp RP (randomized polynomial time) là tập của tất cả các bài

toán quyết định mà có một thuật toán ngẫu nhiên với 1-sided error, chạy trong thời gian đa thức tồi nhất (worst-case)

Lớp phức tạp BPP (bounded error probabilistic polynomial time) là tập

của tất cả các bài toán quyết định mà có một thuật toán ngẫu nhiên với

2-sided error, chạy trong thời gian đa thức tồi nhất (worst-case)

4.4 Tính chất

P ZPP RP BPP và RP NP

Ngày đăng: 23/01/2014, 04:20

TỪ KHÓA LIÊN QUAN

w