1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tìm hiểu một số giải thuật tìm kiếm chuỗi con và ứng dụng

57 89 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 57
Dung lượng 163,98 KB

Nội dung

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ ĐÀO THỊ DUNG TÌM HIỂU MỘT SỐ GIẢI THUẬT TÌM KIẾM CHUỖI CON VÀ ỨNG DỤNG LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội – 2016 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ ĐÀO THỊ DUNG TÌM HIỂU MỘT SỐ GIẢI THUẬT TÌM KIẾM CHUỖI CON VÀ ỨNG DỤNG Ngành: Công nghệ thông tin Chuyên ngành: Hệ thống thông tin Mã số: 60480104 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƢỜI HƢỚNG DẪN KHOA HỌC: PGS.TS NGUYỄN TRÍ THÀNH Hà Nội – 2016 LỜI CẢM ƠN Sau thời gian nghiên cứu, làm việc khẩn trƣơng đƣợc hƣớng dẫn tận tình giúp đỡ thầy giáo PGS.TS Nguyễn Trí Thành, luận văn với đề tài “ Tìm hiểu số giải thuật tìm kiếm chuỗi ứng dụng” đƣợc hồn thành Tác giả xin bày tỏ lịng biết ơn sâu sắc tới: Thầy giáo hƣớng dẫn PGS.TS Nguyễn Trí Thành tận tình dẫn, giúp đỡ tác giả hồn thành luận văn Các thầy giáo Trƣờng Đại học công nghệ số đồng nghiệp, quan tâm động viên, giúp đỡ tác giả suốt trình học tập để hồn thành luận văn Mặc dù cố gắng hết sức, song điều kiện thời gian kinh nghiệm thực tế thân cịn ít, đề tài khơng thể tránh khỏi thiếu sót Vì vậy, tác giả mong nhận đƣợc đóng góp ý kiến thầy giáo, giáo bạn bè đồng nghiệp Tôi xin chân thành cảm ơn! Hà Nội, ngày 10 tháng 03 năm 2016 Tác giả Đào Thị Dung LỜI CAM ĐOAN Tên là: Đào Thị Dung Sinh ngày 30 tháng 12 năm 1989 Học viên lớp cao học khoá 20 HTTT - Trƣờng đại học công nghệ ĐHQGHN Hiện công tác : Trƣờng THPT DTNT Tỉnh Vĩnh Phúc Xin cam đoan luận văn “ Tìm hiểu số giải thuật tìm kiếm chuỗi ứng dụng” thầy giáo PGS.TS Nguyễn Trí Thành hƣớng dẫn cơng trình nghiên cứu riêng Tất tài liệu tham khảo có nguồn gốc, xuất xứ rõ ràng Tác giả xin cam đoan tất nội dung luận văn nhƣ nội dung đề cƣơng yêu cầu thầy giáo hƣớng dẫn Nếu có vấn đề nội dung luận văn tác giả xin hoàn toàn chịu trách nhiệm với lời cam đoan Hà Nội, ngày 10 tháng 03 năm 2016 Học viên Đào Thị Dung MỤC LỤC LỜI CẢM ƠN LỜI CAM ĐOAN MỤC LỤC Danh mục ký hiệu chữ viết tắt Danh mục bảng Danh mục hình ảnh MỞ ĐẦU CHƢƠNG TỔNG QUAN VỀ TÌM KIẾM CHUỖI CON 13 1.1 Lịch sử tìm kiếm chuỗi 13 1.1.1 Thuật toán trƣớc năm 2000 13 1.1.2 Thuật toán sau năm 2000 14 1.2 Tìm kiếm chuỗi 15 1.2.1 Khái niệm tìm kiếm chuỗi 15 1.2.2 Các cách tiếp cận: 16 1.2.3 Các dạng tìm kiếm chuỗi 16 1.2.4 Ứng dụng tìm kiếm chuỗi 20 1.3 Tóm tắt chƣơng 18 CHƢƠNG CÁC THUẬT TỐN TÌM KIẾM CHUỖI CON 19 2.1 Các thuật toán tìm kiếm chuỗi thơng dụng .19 2.1.1 Thuật toán Brute Force .19 2.1.2 Thuật toán Karp-Rabin 27 2.1.3 Thuật toán Knuth – Morris – Pratt 32 2.1.4 Thuật toán Boyer – Moore .29 2.2 So sánh thuật tốn tìm kiếm chuỗi 42 2.3 Tóm tắt chƣơng 43 CHƢƠNG KẾT QUẢ THỰC NGHIỆM VÀ ỨNG DỤNG 36 3.1 Thực nghiệm 36 3.1.1 Môi trƣờng thực nghiệm 36 3.1.2 Đánh giá kết thực nghiệm 39 3.2 Chƣơng trình ứng dụng : 40 3.2.1 Tập CSDL sử dụng: 48 3.3 Tóm tắt chƣơng 50 KẾT LUẬN 52 Đánh giá kết đề tài : 51 Hạn chế : 51 Hƣớng phát triển tƣơng lai: 51 TÀI LIỆU THAM KHẢO 52 Từ viết tắt AC BDH BOM DFA FJS MDH QS KMP BM RAM Danh mục bảng Bảng 1.1: Phân loại dạng tìm kiếm chuỗi 18 Bảng 2.1: Bảng kmpNext 27 Bảng 2.2 : Bảng bmBc[c] 33 Bảng 2.3 : Bảng bmGs[i] 33 Bảng 2.4: Bảng so sánh thuật tốn tìm kiếm 42 Bảng 3.1: Cấu hình phần cứng Windows 36 Bảng 3.2 : Cấu hình phần cứng Linux .36 Bảng 3.3: Cấu hình phần mềm 36 Bảng 3.4: Bảng thống kê kết số .37 Bảng 3.5: Bảng thống kê kết số .38 Bảng 3.6: Bảng thống kê kết số .38 Bảng 3.7: Bảng thống kê kết số .39 Bảng 3.8 : Bảng thống kê kết số 39 Danh mục hình ảnh Hình 2.1: mis-match so sánh vị trí j 29 Hình 2.2 : good-suffix shift, trƣờng hợp u lại xuất x .37 Hình 2.3: good-suffix shift, trƣờng hợp suffix u xuất x .37 Hình 2.4 : bad-character shift 37 Hình 3.1 : Giao diện chƣơng trình 41 Hình 3.2: Giao diện chƣơng trình tìm kiếm theo từ viết tắt 41 Hình 3.3 : Giao diện chƣơng trình tìm kiếm theo từ đầy đủ 42 MỞ ĐẦU Lý chọn đề tài: Cùng với phát triển công nghệ thông tin, số lƣợng tài liệu điện tử đƣợc tăng lên đáng kể Trong đó, nhu cầu khai thác kho tài liệu khổng lồ để tìm kiếm thơng tin cần thiết nhu cầu thƣờng ngày thiết thực ngƣời sử dụng Tuy nhiên, khó khăn ngƣời gặp phải việc khai thác thông tin khả tìm xác thơng tin họ cần Để trợ giúp công việc này, hệ thống tìm kiếm lần lƣợt đƣợc phát triển nhằm phục vụ cho nhu cầu tìm kiếm ngƣời sử dụng Những hệ thống tìm kiếm bắt đầu phát triển đƣa vào ứng dụng, phổ biến hệ thống tìm kiếm theo từ khóa Nhiều hệ thống hoạt động hiệu Internet nhƣ Google, Bing, Yahoo!… Tuy nhiên, phần lớn cơng cụ tìm kiếm sản phẩm thƣơng mại mã nguồn đƣợc giữ bí mật Hoặc hệ thống tìm kiếm máy cá nhân nhƣ Windows Search, Google Desktop… đáp ứng phần nhu cầu ngƣời sử dụng, miễn phí cho cá nhân, nhiên đáp ứng đƣợc phạm vi nhỏ dừng lại mức độ tìm kiếm từ khóa theo tiêu đề phần tóm tắt Bài tốn tìm kiếm xâu kí tự (string searching, hay gọi đối sánh xâu string matching) toán quan trọng thuật toán xử lý xâu ký tự hay xử lý văn (text processing) Đây thuật toán xử lý xâu văn quan trọng có nhiều ứng dụng thực tế Có nhiều thuật tốn tìm kiếm xâu kí tự ví dụ nhƣ thuật toán Brute Force, thuật toán Knuth - Morris- Pratt, thuật toán DFA (Deterministic Finite Automaton - máy automat hữu hạn), thuật toán Karp Rabin, Luận văn nghiên cứu thuật tốn tìm kiếm chuỗi ứng dụng chúng vào hệ thống tìm kiếm văn Hƣớng nghiên cứu : -Nghiên cứu cài đặt thử nghiệm thuật toán : thuật toán Brute Force, thuật toán Knuth - Morris- Pratt, thuật toán Karp – Rabin, thuật toán Boyer – Moore -Đánh giá hiệu thuật tốn -Xây dựng chƣơng trình ứng dụng : từ điển viết tắt smartDictionary Nội dung :   So sánh tối đa 3n ký tự trƣờng hợp xấu mẫu khơng có chu Độ phức tạp trƣờng hợp tốt ⁄ 2.1.4.4 Ví dụ: - Giai đoạn tiền xử lý : Bảng bmBc[c] bảng bmGs[i] c bmBc[c] Bảng 2.2 : Bảng bmBc[c] i X[i] Suff[i] bmGs[i] - Các bƣớc giải thuật : First attempt GCAT C GC AGAGAGTATACAGTACG GCAGAGAG Shift by: (bmGs[7]=bmBc[A]-8+8) Second attempt GC AT C GC A GAGAGTATACAGTACG GC AGAG A G Shift by: (bmGs[5]=bmBc[C]-8+6 Third attempt GCATCG C A G A G AGTATACAGTACG G C A G A G A G Shift by: (bmGs[0]) 3 Fourth attempt GCATCGCAGAGAGT AT AC A GTACG GCAGAGA G Shift by: (bmGs[5]=bmBc[C]-8+6) Fifth attempt GCATCGCAGAGAGTATACAGT AC G GCAGAGA G Shift by: (bmGs[6]) 2.2 So sánh thuật tốn tìm kiếm chuỗi STT Tên thuật toán Brute-Force Karp-Rabin Knuth-MorrisPratts Boyer-Moore Bảng 2.4: Bảng so sánh thuật tốn 34 2.3 Tóm tắt chƣơng Trong chƣơng 2, luận văn nghiên cứu thuật tốn tìm kiếm chuỗi thơng dụng thƣờng dùng Mỗi thuật tốn có khác tiền xử lý từ có phƣơng pháp khác bƣớc dịch chuyển pattern văn Thuật toán Brute – Fore Rabin – Karp có độ dịch chuyển pattern văn giống Tuy nhiên, thuật toán Rabin – Karp sử dụng hàm băm (hash) để chuyển thuật toán so sánh mảng số nguyên tránh đƣợc việc so sánh chuỗi văn dài Thuật toán KMP Boyer – Moore dựa vào chuỗi mẫu để định bƣớc dịch chuyển chuỗi mẫu văn Tuy nhiên, thuật toán Boyer – Moore phức tạp sử dụng hàm good-suffix bad-character shift đƣợc tính tốn trƣớc để dịch chuyển chuỗi mẫu văn Chƣơng luận văn cài đặt thử nghiệm thuật toán để đánh giá, so sánh thời gian chạy thuật toán cài đặt thử nghiệm ứng dụng CHƢƠNG KẾT QUẢ THỰC NGHIỆM VÀ ỨNG DỤNG 3.1 Thực nghiệm - Mục đích thực nghiệm: Đánh giá so sánh hiệu thời gian chạy thuật toán tìm kiếm chuỗi - Thời gian thực giải thuật phụ thuộc:  Kích thƣớc liệu: liệu lớn thời gian xử lý chậm Nếu gọi n kích thƣớc liệu thời gian thực giải thuật biểu diễn hàm n: T(n)  Phần cứng máy tính  Ngơn ngữ, chƣơng trình dịch ngơn ngữ Chính phần thực nghiệm chƣơng sử dụng tập CSDL từ điển có kích thƣớc mục từ ngắn từ điển có kích thƣớc mục từ dài để đánh giá độ phức tạp thuật tốn ngơn ngữ C++ hệ điều hành Windows hệ điều hành Linux Sau xin đƣợc trình bày cụ thể mơi trƣờng nhƣ cách thức thực thực nghiệm 3.1.1 Môi trƣờng thực nghiệm 3.1.1.1 Cấu hình phần cứng: STT Tên CPU RAM Hệ điều hành STT Bảng 3.1: Cấu Tên CPU RAM Hệ điều hành Bảng 3.2 : Cấu 3.1.1.2 Cấu hình phần mềm STT Tên Microsof Visu Bảng 3.3: Cấu 36 3.1.2 Chƣơng trình thực nghiệm 3.1.2.1 Đối với HĐH Linux Thống kê kết chạy với từ điển dài: - Tổng danh mục từ điển: 479777 - Tổng độ dài từ điển: 42376210 ký tự - Trung bình độ dài danh mục: 88.32 ký tự - Tổng số query: 10000 - Tổng độ dài query :66445 ký tự - Độ dài trung bình query: 6.64 kí tự - Kết thu đƣợc: STT Thuật toán Brute - Force Karp - Rabin Knuth – Morris - Prat Boyer - Moore glibc strstr Bảng 3.4: Bảng thống kê kết số Thống kê kết chạy đƣợc với từ điển ngắn (Số query:10000) - Tổng danh mục từ điển: 479777 - Tổng độ dài từ điển: 4953604 ký tự - Trung bình độ dài danh mục: 10.32 ký tự - Tổng số query: 10000 - Tổng độ dài query: 66445 ký tự - Độ dài trung bình query: 6.64 kí tự - Kết thu đƣợc: STT Thuật toán Brute - Force Karp - Rabin Knuth – Morris - Prat Boyer - Moore 37 glibc strstr Bảng 3.5: Bảng thống kê kết số Thống kê kết chạy đƣợc với từ điển ngắn (Số query:50000) - Tổng danh mục từ điển: 479777 - Tổng độ dài từ điển: 4953604 ký tự - Trung bình độ dài danh mục: 10.32 ký tự - Tổng số query: 50000 - Tổng độ dài query: 334620 ký tự - Độ dài trung bình query: 6.69 kí tự - Kết thu đƣợc: STT Thuật toán Brute - Force Karp - Rabin Knuth – Morris - Prat Boyer - Moore glibc strstr Bảng 3.6: Bảng thống kê kết số 3.1.2.2 Đối với HĐH Windows Thống kê kết chạy đƣợc với từ điển ngắn (Số query:10000) - Tổng danh mục từ điển: 479777 - Tổng độ dài từ điển: 4953604 ký tự - Trung bình độ dài danh mục: 10.32 ký tự - Tổng số query: 10000 - Tổng độ dài query: 66445 ký tự - Độ dài trung bình query: 6.64 kí tự - Kết thu đƣợc: STT Thuật toán Brute - Force Karp - Rabin 38 Knuth – Morris - Prat Boyer - Moore glibc strstr Bảng 3.7: Bảng thống kê kết Thống kê kết chạy đƣợc với từ điển ngắn (Số query:50000) - Tổng danh mục từ điển: 479777 - Tổng độ dài từ điển: 4953604 ký tự - Trung bình độ dài danh mục: 10.32 ký tự - Tổng số query: 50000 - Tổng độ dài query: 334620 ký tự - Độ dài trung bình query: 6.69 kí tự - Kết thu đƣợc: STT Thuật toán Brute - Force Karp - Rabin Knuth – Morris - Prat Boyer - Moore glibc strstr Bảng 3.8 : Bảng thống kê kết số 3.1.3 Đánh giá kết thực nghiệm -Theo lý thuyết độ phức tạp thuật toán lần lƣợt :  Brute Force: O(m*n)  Karp-Rabin: Tồi nhất: O(m*n), tốt O(m+n)  Knuth – Morris – Pratt: O(m+n)  Boyer – Moore: Tồi nhất: O(m*n), tốt O(n/m) Nhƣ vậy, theo lý thuyết thuật tốn Boyer – Moore thuật tốn tìm kiếm nhanh nhất, thuật tốn Brute – Force thuật tốn tìm kiếm tồi nhƣng theo kết thực nghiệm thuật tốn Brute – Force lại cho kết thời gian gần nhƣ nhanh Sự chênh lệch lý thuyết thực nghiệm m, n độ dài xâu mẫu cần tìm độ dài xâu văn Nếu m, n lớn có ý nghĩa với thuật tốn tìm kiếm 39 Nhƣng đầu vào thực nghiệm, độ dài chuỗi văn độ dài xâu mẫu nhỏ nên độ chênh lệch nhiều thuật toán Boyer-Moore phải thực hàm preBmGS preBmBc lại chiếm nhiều thời gian trình Searching mà thuật tốn Boyer – Moore cho kết thời gian nhiều - Trong phần thực nghiệm tơi có cài thêm hàm strstr – hàm tìm kiếm có sẵn thƣ viện string.h để so sánh kết tìm kiếm thuật tốn Qua kết thực nghiệm ta thấy kết tìm kiếm từ hàm có sẵn strstr cho kết tƣơng đối nhanh 3.2 Chƣơng trình ứng dụng : Mục đích: Viết ứng dụng smartdictionary – từ điển viết tắt: Trong có mục tìm kiếm theo từ viết tắt tìm kiếm theo từ đầy đủ Khi ngƣời dùng nhớ cụm từ viết tắt muốn tra cụm từ đầy đủ gõ ký tự vào bên trƣờng Abbriviation, ký tự đƣợc gõ vào giải thuật tìm kiếm xâu đƣợc áp dụng để lọc từ chứa chuỗi đƣợc nhập vào, tên đầy đủ cụm từ tƣơng ứng đƣợc liệt kê trƣờng Full name Trong trƣờng hợp ngƣời dùng nhớ đƣợc số từ tên đầy đủ tra ngƣợc lại từ viết tắt gõ phần tên trƣờng Full name, giải thuật tìm kiếm chuỗi đƣợc áp dụng để lọc tên đầy đủ chứa chuỗi đƣợc nhập vào từ viết tắt tƣơng ứng bên trƣờng Abbriviation Ý nghĩa: Áp dụng đƣợc thuật tốn tìm kiếm vào thực tế 3.2.1 Tập CSDL sử dụng: - Sử dụng tập liệu trích lấy www.abbreviation.com - Tạo tập CSDL : + Tập CSDL viết tắt + Tập CSDL viết đầy đủ 3.2.2 Giao diện chƣơng trình: + Giao diện chính: Hình 3.1 : Giao diện chƣơng trình + Giao diện tìm kiếm theo từ viết tắt Hình 3.2: Giao diện chƣơng trình tìm kiếm theo từ viết tắt + Giao diện tìm kiếm theo từ đầy đủ: Hình 3.3 : Giao diện chƣơng trình tìm kiếm theo từ đầy đủ 3.3 Tóm tắt chƣơng Trong chƣơng trình bày thực nghiệm so sánh thời gian chạy số thuật tốn tìm kiếm chuỗi (string matching) hệ điều hành, tập liệu nhƣ số lƣợng query khác Để đánh giá độ phức tạp thời gian triển khai cài đặt thuật toán Brute-Force, , thuật toán Karp-Rabin, thuật toán KnuthMorris-Pratt, thuật tốn Boyer-Moore ngơn ngữ C++ Điều kiện thực nghiệm kiểm chứng máy tính với hệ điều hành Win 10, RAM 8G, CPU Intel(R) Core(TM) i73632 QM CPU @ 2.20GHz Đồng thời cài đặt chƣơng trình demo ví dụ ứng dụng smartdictionary – từ điển viết tắt áp dụng thuật tốn tìm kiếm chuỗi để giải toán KẾT LUẬN Đánh giá kết đề tài : Nội dung luận văn đạt đƣợc số kết nghiên cứu đạt đƣợc sau đây:  Các kiến thức tốn tìm kiếm chuỗi con, hƣớng tiếp cận  Trình bày số thuật tốn tìm kiếm chuỗi  Cài đặt thực nghiệm thuật tốn từ so sánh đánh giá hiệu thuật tốn tìm kiếm chuỗi môi trƣờng tập liệu khác  Cài đặt ứng dụng thuật tốn tìm kiếm chuỗi vào thực tế  Chƣơng trình thử nghiệm cịn đơn giản Hạn chế : Hƣớng phát triển tƣơng lai: Với kết đạt đƣợc, xin đề xuất số công việc thời gian tới nhƣ sau: Tiếp tục xử lý vấn đề cịn tồn chƣơng trình thử nghiệm cài đặt nhƣ: + Xây dựng giao diện chƣơng trình thân thiện dễ sử dụng + Tiếp tục nghiên cứu phát triển ứng dụng khác sử dụng thuật tốn tìm kiếm từ điển nhƣ tìm kiếm danh bạ điện thoại TÀI LIỆU THAM KHẢO [1] Christian Charras, Therry Lecroq, T, Handbook of Exact String Matching Algorithms, King's College Publications, 2004 [2] Simone Faro, Thierry Lecroq The exact online string matching problem A review of the most recent results [3] Knuth et al 1977, Algorithms and Theory of Computation Handbook [4] Maxime Crochemore, Thierry Lecroq, Pattern matching and text compression algorithms, King's College Publications, 2004 [5] R Boyer and J Moore A Fast String Searching Algorithm, Commun ACM, 1977,pages 762-772 [6] Beate Commentz – Walter , A String Matching Algorithm Fast on the Average Extended Abstract, 1979 [7] S Faro and T Lecroq Efficient Variants of the Backward-Oracle-Matching Algorithm Proceedings of the Prague Stringology Conference 2008, pp.146—160 [8] Gusfield, D., 1997, Algorithms on strings, trees, and sequences: Computer Science and Computational Biology, Cambridge University Press [9] R N Horspool (1980) "Practical fast searching in strings" Software - Practice & Experience [10] Jan Holub1, William F.Smyth, and Shu Wang, Hybrid Pattern – Matching Algorithms on Indeterminate Strings [11] STEPHEN, G.A., 1994, String Searching Algorithms, World Scientific [12] SEDGEWICK, R., 1988, Algorithms in C, Chapter 19, Addison-Wesley Publishing Company [13] LECROQ, T., 1995, Experimental results on string matching algorithms, Software - Practice & Experience [14] CROCHEMORE, M., LECROQ, T., 1996, Pattern matching and text compression algorithms, in CRC Computer Science and Engineering Handbook, A Tucker ed., Chapter 8, pp 162-202, CRC Press Inc., Boca Raton, FL [15] CROCHEMORE, M., HANCART, C., 1999, Pattern Matching in Strings, in Algorithms and Theory of Computation Handbook, M.J Atallah ed., Chapter 11, pp 11-1 11-28 4 [16] GONNET, G.H., BAEZA-YATES, R.A., 1991 Handbook of Algorithms and Data Structures in Pascal and C, 2nd Edition, Chapter 7, pp 251-288, Addison-Wesley Publishing Company [17] GOODRICH, M.T., TAMASSIA, R., 1998, Data Structures and Algorithms in JAVA, Chapter 11, pp 441-467, John Wiley & Sons [18] Zongwei Zhou, Yibo Xue, Junda Liu, Wei Zhang, Jun Li, A high speed multi – phase Dynamic Hash String Matching Algorithm for Large – Scale Pattern Set ... Chƣơng : Tổng quan tìm kiếm chuỗi con: Nghiên cứu tổng quan tìm kiếm chuỗi ứng dụng tìm kiếm chuỗi thực tế Chƣơng : Các thuật tốn tìm kiếm chuỗi : Nghiên cứu thuật tốn tìm kiếm chuỗi kèm theo đánh... trao đổi thông tin Chƣơng trình bày tổng quan tìm kiếm chuỗi ứng dụng tìm kiếm chuỗi Ứng dụng tìm kiếm chuỗi đƣợc sử dụng nhiều lĩnh vực nhƣ máy tìm kiếm, trình soạn thảo văn bản, trình duyệt Web,... sâu nghiên cứu thuật tốn tìm kiếm chuỗi thơng qua so sánh đánh giá hiệu thuật toán 18 CHƢƠNG CÁC THUẬT TỐN TÌM KIẾM CHUỖI CON 2.1 Các thuật tốn tìm kiếm chuỗi thơng dụng 2.1.1 Thuật toán Brute

Ngày đăng: 16/10/2020, 21:46

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w