Luận văn Xây dựng ứng dụng từ điển trên pocket pc

MỤC LỤC

DANH MỤC CÁC HÌNH . vi

DANH MỤC CÁC BẢNG . ix

Chương 1 Tổng quan .1

1.1 Vai trò của Từ điển .1

1.2 Vai trò các thiết bịdi động .1

1.3 Nhu cầu thực tếvà lý do thực hiện đềtài .2

1.4 Một sốvấn đềvà mục tiêu của đềtài .3

Chương 2 Tổng quan vềPDA và Hệ điều hành Windows CE .4

2.1 Tổng quan vềPDA .4

2.2 Một sốhệ điều hành nhúng cho thiết bịPDA .10

2.3 Tổng quan vềhệ điều hành Windows CE .10

Chương 3 Tổng quan vềPocket PC và môi trường lập trình .Net Compact

Framework .16

3.1 Tổng quan vềPocket PC .16

3.2 Một sốcông cụphát triển trên Pocket PC 2002 .19

3.3 Công cụlập trình Microsoft eMbedded Visual C++ 3.0 .19

3.4 Môi trường lập trình .Net Compact Framework.22

Chương 4 Các vấn đềkhi xây dựng ứng dụng Từ điển trên Pocket PC .29

4.1 Đặc trưng của một ứng dụng Từ điển.29

4.2 Giới hạn vềbộxửlý .30

4.3 Giới hạn vềbộnhớvà khảnăng lưu trữ.32

4.4 Hạn chếvềkhảnăng tương tác giữa người dùng và thiết bị.34

4.5 Kết luận.35

Chương 5 Một sốgiải pháp chính cho việc xây dựng ứng dụng Từ điển trên

Pocket PC .36

5.1 Tổchức cấu trúc dữliệu lưu trữ.36

5.2 Tổchức cấu trúc dữliệu hỗtrợtìm kiếm nhanh .41

Chương 6 Giới thiệu ứng dụng Từ điển “CSPocketDict”.46

6.1 Yêu cầu của người sửdụng .46

6.2 Các chức năng của ứng dụng.46

Chương 7 Phân tích – Thiết kế.51

7.1 Mô hình Use-Case .51

7.2 Thiết kếdữliệu .60

7.3 Thiết kếxửlý.62

7.4 Thiết kếgiao diện .71

Chương 8 Xây dựng ứng dụng hỗtrợquản lý dữliệu Từ điển

“CSDictManager” .83

8.1 Giới thiệu .83

8.2 Mô hình Use-Case .83

8.3 Thiết kếdữliệu .87

8.4 Thiết kếxửlý.88

8.5 Một sốmàn hình giao diện .90

Chương 9 Cài đặt và thửnghiệm .93

9.1 Cài đặt.93

9.2 Thửnghiệm.95

9.3 Hướng đẫn sửdụng.96

Chương 10 Tổng kết.103

10.1 Kết luận.103

10.2 Hướng phát triển .104

Phụlục A Danh sách các hỗtrợvà không hỗtrợtrên .NET Compact

Framework .105

Phụlục B Các hình thức lưu trữtrên Windows CE .107

Phụlục C Chuẩn nén Gzip.110

Tài liệu tham khảo .118

pdf129 trang | Chia sẻ: maiphuongdc | Lượt xem: 1781 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Luận văn Xây dựng ứng dụng từ điển trên pocket pc, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
voke để truy cập đến registry. ∗ Nói “chủ yếu” là bởi vì có một số thư viện hướng mạng (network-oriented), gồm các thư viện socket và thư viện wininet.dll, hỗ trợ cả ANSI lẫn Unicode. KH OA C NT T – Đ H KH TN Chương 4. Các vấn đề khi xây dựng ứng dụng Từ điển trên Pocket PC 29 Chương 4 Các vấn đề khi xây dựng ứng dụng Từ điển trên Pocket PC Khi bắt đầu xây dựng bất cứ một ứng dụng nào thì một trong những điều đầu tiên cần quan tâm chính là các đặc tính của nó. Sau đó, ta cũng cần phải chú ý đến môi trường cài đặt ứng dụng để có thể nắm bắt được các khó khăn, hạn chế khi tiến hành cài đặt ứng dụng này. 4.1 Đặc trưng của một ứng dụng Từ điển Để xây dựng một ứng dụng Từ điển hiệu quả, ta cần quan tâm 2 đặc tính quan trọng sau đây: • Tốc độ xử lý nhanh. Có thể nói thao tác cơ bản nhất của một ứng dụng Từ điển là tra cứu. Do đó, việc tìm kiếm phục vụ cho thao tác tra cứu xảy ra hết sức thường xuyên, yêu cầu nhanh chóng hiện kết quả cho người sử dụng. • Dữ liệu lưu trữ lớn. Từy theo các loại Từ điển khác nhau mà có kích thước lưu trữ khác nhau. Nhưng nhìn chung, thường thì dữ liệu lưu trữ của một Từ điển là khá lớn. Bên cạnh đó, ta cũng cần quan tâm đến số lượng các phần tử trong một Từ điển. Ngoài ra yêu cầu dễ sử dụng cũng là một đặc tính quan trọng không chỉ riêng với ứng dụng Từ điển. Với những tính chất cơ bản trên, thì việc khảo sát các đặc trưng của Pocket PC, đồng thời phân tích các vấn đề phát sinh khi xây dựng một ứng dụng Từ điển trên Pocket PC là rất cần thiết để từ đó đưa ra những giải pháp phù hợp (sẽ được trình bày trong Chương 5). KH OA C NT T – Đ H KH TN Chương 4. Các vấn đề khi xây dựng ứng dụng Từ điển trên Pocket PC 30 4.2 Giới hạn về bộ xử lý Đặc điểm chung của các bộ xử lý trên thiết bị PDA là tiết kiệm pin, nhỏ gọn, nhất là không đòi hỏi các thiết bị giải nhiệt chuyên dụng. Ngoài ra, vì lý do tối ưu giữa chi phí sản xuất và nhu cầu sử dụng chủ yếu của các thiết bị PDA, bộ xử lý cho PDA thường có tốc độ thấp và không ứng dụng hoặc ứng dụng hạn chế một số công nghệ tăng tốc xử lý dùng cho các bộ xử lý Pentium.Pocket PC sử dụng một loại CPU khác với CPU thông thường. Máy Pocket PC 2002 sử dụng CPU StrongARM hoặc XScale của Intel. Các CPU này được gọi là các bộ xử lý RISC (Reduced Instruction Set Computer) vì nó chỉ thực hiện một lệnh trong một chu kì CPU. (Mỗi chu kì CPU trong một giây gọi là 1 Hertz hay 1 Hz). Máy PC thông thường của chúng ta sử dụng bộ xử lý CISC (Complex Instruction Set Computer), đòi hỏi nhiều chu kì CPU để xử lý một lệnh xác định. Do đó, các bộ xử lý RISC như StrongARM theo lý thuyết, có thể tính toán lên tới 206 triệu lệnh một giây nếu nó xử lý ở tốc độ 206 Mhz. Các bộ xử lý StrongARM và XScale cũng xử lý các lệnh 32bit, giống như PC thông thường. Tuy nhiên, lại có một khác biệt lớn trong việc xử lý kích thước lệnh. Bộ xử lý CISC cho phép lệnh có thể có chiều dài biến đổi, vì vậy, nó phải tính toán kích thước của dữ liệu cần đọc khi xử lý lệnh. Trong kiến trúc RISC, mỗi lệnh 32bit sẽ có 32 dữ liệu đi kèm. Vì vậy, bộ xử lý luôn biết được phải đọc bao nhiêu dữ liệu., đây là một điểm mạnh của kiến trúc này. Độ rộng của bus cùng với tốc độ bus cũng có một ảnh hướng lớn đến tốc độ xử lý và tính toán của máy tính. Độ rộng của bus chỉ ra số lượng bit (hay byte) dữ liệu có thể đọc từ / ghi lên RAM vào bộ vi xử lý. Còn tốc độ bus chỉ ra dữ liệu có thể được đọc từ RAM vào bộ vi xử lý với độ nhanh như thế nào. Ta có thể hình dung, độ rộng bus như số làn giao thông trên xa lộ, còn tốc độ bus như giới hạn về tốc độ khi lưu thông. Hiện nay, StrongARM và XScale sử dụng bus tốc độ 100Mhz và thiết kế hiện nay của Pocket PC cho phép dùng bus 16bit. Điều này có nghĩa là tốc độ bus tối đa là 200MB/giây. KH OA C NT T – Đ H KH TN Chương 4. Các vấn đề khi xây dựng ứng dụng Từ điển trên Pocket PC 31 Vấn đề đặt ra ở đây là như vậy, bộ vi xử lý có thể đạt được tốc độ xử lý bao nhiêu. Do chúng ta cần đọc 8bytes dữ liệu trước khi xử lý một lệnh, nên giả sử chúng ta có được tốc độ bus tối đa là 200MB/giây, thì thực sử, bộ xử lý chỉ thi hành được 25 triệu lệnh. Ngoài ra, lại có một vấn đề khác, đó là cache. Cache là một loại RAM đặc biệt được chứa bên trong CPU và xử lý với cùng tốc độ của CPU. Cache trong bộ xử lý StrongARM là 16K cho mã chương trình và 8K cho dữ liệu, cache trong XScale là 32K cho mã chương trình và 32K cho dữ liệu. Nếu dữ liệu và mã chương trình cần xử lý được chứa trọn trong cache, hệ thống sẽ có thể thi hành với tốc độ thật của CPU. Như vậy, tốc độ của ứng dụng có thể được thi hành sẽ có thể tăng từ 25 lên 206 triệu lệnh một giây, tuỳ theo chương trình và dữ liệu có vừa với kích thước cache không. Tốc độ của hệ thống cũng phụ thuộc vào nguồn cung cấp năng lượng, do đó, khi sử dụng Pocket PC, ta có thể nhận thấy sự khác biệt về tốc độ khi thực thi chương trình. Bây giờ, sử dụng các để so sánh về hiệu suất hoạt động giữa máy Desktop PC và Pocket PC. Xét các hệ thống Desktop PC sử dụng bus 100-133 Mhz. Pentium IV có thể sử dụng DDR RAM hoặc RAM BUS (RD RAM) có tốc độ từ 200-800Mhz. Vì vậy, chỉ xét trên phương diện RAM, nếu sử dụng RAM 133Mhz, hiệu suất Desktop PC đã tăng 1/3 lần (25 lên 33 triệu lệnh một giây). Tốc độ CPU của Desktop cũng lớn hơn rất nhiều khi hiện tại đã đạt tới tốc độ trên 3Ghz dẫn đến hiệu suất toàn hệ thống cao hơn. Khi xây dựng ứng dụng Từ điển trên Pocket PC, đặc điểm về bộ xử lý của Pocket PC ảnh hưởng rất lớn đến tốc độ xử lý, hiển thị các từ trong Từ điển cũng như nghĩa của chúng. Để giải quyết vấn đề này, ta cần có những giải pháp phù hợp để tăng hiệu năng của ứng dụng, giúp người sử dụng có thể sử dụng được chương trình với tốc độ chấp nhận được. KH OA C NT T – Đ H KH TN Chương 4. Các vấn đề khi xây dựng ứng dụng Từ điển trên Pocket PC 32 4.3 Giới hạn về bộ nhớ và khả năng lưu trữ Các Pocket PC thông thường có ROM ít nhất là 8MB, RAM ít nhất là 8MB. Các Pocket PC chuyên dụng có ROM ít nhất là 12MB, RAM ít nhất là 16MB. Tuy nhiên, yêu cầu về dung lượng của RAM và ROM tuỳ thuộc vào loại CPU sử dụng, những thành phần mà nhà sản xuất hỗ trợ trên Pocket PC và tuỳ thuộc vào loại Pocket PC. Do hạn chế về nguồn năng lượng pin và kích thước của thiết bị, Pocket PC không sử dụng các thiết bị lưu trữ như đĩa cứng hay đĩa mềm mà nó sử dụng một cơ chế gọi là Bộ lưu trữ đối tượng (Object store). Object store là một vùng RAM được người dùng định nghĩa, dùng để lưu trữ các tập tin, các thông tin registry và các database (gọi là Object Store dạng Storage). Vùng RAM còn lại dùng làm bộ nhớ cho các chương trình được thực thi (gọi là Object Store dạng Program). Object store vẫn lưu giữ được thông tin của các ứng dụng và dữ liệu ngay cả khi năng lượng cung cấp chính bị mất nhờ nguồn pin dự trữ. Có thể xem object store như là đĩa cứng trên thiết bị dùng Windows CE. Vì các end-user không biết về object store nên Microsoft đã cung cấp trình WinCE Explorer để đọc nội dung của nó (tương tự như Microsoft Windows Explorer để đọc nội dung của đĩa cứng trên máy desktop PC). Hình 4.1: Tình trạng bộ nhớ trên Pocket PC KH OA C NT T – Đ H KH TN Chương 4. Các vấn đề khi xây dựng ứng dụng Từ điển trên Pocket PC 33 Để cung cấp thêm khả năng lưu trữ cho Pocket PC (cũng nhu các thiết bị PDA khác), hấu hết các máy đều cho phép gắn thêm các thẻ nhớ (Flash Memory Card) đóng vai trò một bộ nhớ ngoài. Đặc điểm chung của các thẻ nhớ là có tốc độ chậm hơn nhiều so với bộ nhớ RAM nhưng giá thành rẻ và cơ động, có thể dùng chung cho các thiết bị điện tử khác. Ta có thể tận dụng khả năng lưu trữ của thẻ nhớ để giảm bớt hạn chế về khả năng lưu trữ của Pocket PC. Hình 4.2: Một số thẻ nhớ cho PDA Những hạn chế về bộ nhớ trên Pocket PC ảnh hưởng rất nhiều đến việc tổ chức dữ liệu Từ điển của ứng dụng. Giải pháp gắn thêm các thẻ nhớ để tăng khả năng lưu trữ cho Pocket PC là không khả thi do các thẻ nhớ có tốc độ chậm trong khi ứng dụng Từ điển lại có tần suất truy cập dữ liệu rất lớn, đòi hỏi tốc độ nhanh. Một giải pháp khác được đưa ra là nén dữ liệu Từ điển. Phương pháp này có vẻ khả thi hơn. Tuy nhiên, cái giá phải trả là phải truy cập dữ liệu nén. Điều này cũng ảnh hưởng nhiều đến tốc độ của ứng dụng. Vì vậy, việc dung hòa giữa tốc độ xử lý và dữ liệu lưu trữ của ứng dụng là một trong những vấn đề quan trọng nhất khi xâ dựng ứng dụng Từ điển trên Pocket PC. Chi tiết về việc giải quyết vấn đề này sẽ được trình bày cụ thể trong Chương 5. Ngoài ra, ta còn phải xem xét đến hình thức lưu trữ dữ liệu Từ điển. Trên Pocket PC, có 2 hình thức lưu trữ dữ liệu chính, đó là lưu trữ dưới dạng Tập tin và dưới dạng Cơ sở dữ liệu (xem chi tiết ở phần Phụ lục B ). Cũng như trên desktop, cơ sở dữ liệu thường được dùng để lưu các cấu trúc dữ liệu biến động, có nhu cầu KH OA C NT T – Đ H KH TN Chương 4. Các vấn đề khi xây dựng ứng dụng Từ điển trên Pocket PC 34 truy xuất phức tạp,…trong khi dữ liệu Từ điển lại có cấu trúc dữ tĩnh, truy xuất tương đối đơn giản Hơn nữa, cơ sở dữ liệu trên Pocket PC (SQLCE) chưa được sử dụng rộng rãi. Hiện nay, có rất ít ứng dụng sử dụng cơ sở dữ liệu trên Pocket PC. Do đó việc chọn tập tin là hình thức lưu trữ dữ liệu của ứng dụng Từ điển là hợp lý. 4.4 Hạn chế về khả năng tương tác giữa người dùng và thiết bị Hạn chế về khả năng tương tác người dùng tuy không làm cản trở đến hiệu quả thi hành chương trình nhưng lại gây khó khăn cho công việc thiết kế giao diện chương trình. Việc xác định rõ các hạn chế về khả năng tương tác người dùng giúp chúng ta xây dựng các ứng dụng trên Pocket PC thân thiện, tiện dụng với người dùng hơn. 4.4.1 Màn hình hiển thị nhỏ Do đặc tính nhỏ gọn, nên nên màn hình hiển thị của Pocket PC thường có kích thước nhỏ. Với màn hình quá nhỏ, sẽ rất khó để vừa hiển thị danh sách các từ và nghĩa của nó trong Từ điển, vừa bố trí tất cả các chức năng trên các thanh công cụ, thanh thực đơn. Giải pháp thường thấy trong các ứng dụng trên Pocket PC là sử dụng tối đa các popup menu, context menu, dropdown toolbar button để người dùng chọn lựa chức năng. Chỉ có các chức năng thường xuyên sử dụng mới được thiết kế nằm sẵn trên màn hình như chức năng tra nghĩa của từ, chức năng phát âm, … 4.4.2 Bàn phím Pocket PC không có bàn phím vật lý mà sử dụng một bàn phím ảo (Hình 2.2: Bàn phím ảo của Pocket PC). Khi được kích hoạt, bàn phím ảo sẽ chiếm một phần của màn hình (khoảng 1/3) và có thể sẽ che đi các nút chức năng, ô nhập liệu quan trọng. Các ứng dụng cho Pocket PC khi thiết kế phải lưu ý đến trường hợp này để có thiết kế giao diện phù hợp. Microsoft khuyến cáo các lập trình viên thiết kế các ô KH OA C NT T – Đ H KH TN Chương 4. Các vấn đề khi xây dựng ứng dụng Từ điển trên Pocket PC 35 nhập liệu (cần đến bàn phím) ở phía trên, tránh tình trạng khi bật bàn phím ảo để nhập liệu lại không thể nhìn thấy ô này. 4.5 Kết luận Sau khi phân tích các đặc tính của một ứng dụng Từ điển cũng như các hạn chế của Pocket PC, ta có thể đưa ra một số vấn đề cần phải giải quyết như sau: • Mâu thuẫn giữa yêu cầu xử lý nhanh của ứng dụng Từ điển với hạn chế về tốc độ xử lý của Pocket PC. • Mâu thuẫn giữa khối lượng dữ liệu lớn của ứng dụng Từ điển với hạn chế về khả năng lưu trữ của Pocket PC. • Mâu thuẫn giữa tính tiện dụng của chương trình và hạn chế về khả năng tương tác người dùng. Chương sau sẽ đưa ra giải pháp khả thi để giải quyết các vấn đề chính trên. KH OA C NT T – Đ H KH TN Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC 36 Chương 5 Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC Dữ liệu của ứng dụng Từ đỉển này được chuyển từ 2 bộ Từ điển Anh-Việt (68.998 từ) và Việt-Anh (91.146 từ) của phần mềm “English Study 4.0”. Những so sánh và khảo sát dưới đây đều dựa vào 2 bộ dữ liệu này. Các số liệu đo thử nghiệm được thực hiện trên máy Pocket PC HP Jornada 928, bộ nhớ 61.64 MB. Khi tổ chức lưu trữ dữ liệu cho ứng dụng Từ điển, ta phải giải quyết 2 vấn đề chính : • Tổ chức cấu trúc dữ liệu lưu trữ. • Tổ chức cấu trúc dữ liệu khác hỗ trợ cho việc tìm kiếm nhanh. 5.1 Tổ chức cấu trúc dữ liệu lưu trữ Ứng dụng Từ điển có chứa khối lượng dữ liệu rất lớn. Dữ liệu này bao gồm số lượng lớn các mục từ lưu trữ liên tiếp trong tập tin. Các mục từ có kích thước động. Vấn đề đặt ra là các mục từ phải được lưu trữ hiệu quả và dễ dàng truy cập nhanh chóng. Ta lần lượt xét qua các cách tổ chức để chọn ra được cách tối ưu. 5.1.1 Tổ chức các mục từ có kích thước bằng nhau Cách tổ chức này qui định tất cả các mục từ đều có kích thước xác định bằng nhau. Cách này có ưu điểm là dễ dàng truy cập đến một mục từ khi biết thứ tự của nó nhưng có khuyết điểm lớn là gây lãng phí không gian lưu trữ. Các mục từ có kích thước biến động nhiều. Nếu ta đặt kích thước xác định cho tất cả các mục từ thì sẽ có rất nhiều mục từ không dùng hết phần kích thước đó và dữ liệu của ta có kích thước dư thừa, không hiệu quả. Ví dụ với dữ liệu Từ điển Anh –Việt, mục từ lớn nhất có kích thước 20.000 bytes được lấy làm kích thước cho tất cả các mục từ, suy ra kích thước của Từ điển này là 1.28 GB. Con số này là không thực tế cho ứng dụng Từ điển trên Pocket PC. KH OA C NT T – Đ H KH TN Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC 37 5.1.2 Tổ chức các mục từ có kích thước biến đổi Các mục từ có kích thước biến đổi được lưu liêp tiếp sát nhau. Các mục từ được lưu với kích thước thực của chúng nên tránh được lãng phí như cách trên. Nhưng ta phải lưu thêm thông tin để truy cập đến chúng. Dữ liệu cho ứng dụng Từ điển này sẽ được lưu trữ theo cách này. Ví dụ với cách tổ chức này, Từ điển Anh – Việt có kích thước 10 MB và Từ điển Việt – Anh có kích thước 2.8 MB. 5.1.3 Nén dữ liệu Ứng dụng Từ điển trên Pocket PC yêu cầu kích thước lưu trữ dữ liệu càng nhỏ càng tốt. Nên ta phải tiến hành nén dữ liệu trên. Khi dữ liệu bị nén thì kích thước lưu trữ giảm xuống nhưng cũng làm giảm tốc độ truy xuất. Ta phải áp dụng phương pháp nén sao cho vẫn đảm bảo được tốc độ truy xuất hợp lý. Có 2 cách nén dữ liệu: • Nén toàn bộ: áp dụng các thuật toán như Zip, Gzip, Huffman… để nén toàn bộ tập tin dữ liệu. Ưu điểm của cách này là dữ liệu được nén nhỏ tối ưu. Nhưng khi yêu cầu truy cập đến các mục từ thì dữ liệu phải được giải nén toàn bộ nên làm ứng dụng chậm và tốn nhiều bộ nhớ cho lưu trữ dữ liệu giải nén. • Nén từng khối: dữ liệu được nén lại theo từng khối một. Khi cần truy xuất đến entry nào ta chỉ cần giải nén khối dữ liệu tương ứng. Nhưng do nén theo từng phần nên tỉ lệ nén sẽ thấp hơn nén toàn bộ. Ví dụ với dữ liệu Từ điển Anh – Việt được nén theo từng mục từ với thuật toán Zip sẽ có kích thước 8 MB, chỉ nén được khoảng 20%. Ta chỉ có thể áp dụng phương pháp nén từng khối. Ta phải áp dụng cách nén dung hòa giữa tỉ lệ nén cao và tốc độ truy cập dữ liệu ngẫu nhiên nhanh. Trong các chuẩn nén hiện nay, chuẩn nén Dictzip với đặc điểm nén dữ liệu theo từng khối và cho phép truy cập dữ liệu ngẫu nhiên nên thỏa yêu cầu ta đề ra. KH OA C NT T – Đ H KH TN Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC 38 Chuẩn nén Dictzip: Chuẩn nén Dictzip được giới thiệu lần đầu tiên vào năm 1996 bởi Rickard E. Faith. Nó được phát triển với nguồn mở và phiên bản mới nhất là 1.25. Cấu trúc lưu trữ: • Dictzip dựa vào chuẩn Gzip (tham khảo “Phụ lục C : Chuẩn nén Gzip”) nên hoàn toàn tương thích với Gzip. Một phần thông tin mở rộng được thêm vào tập tin nén Gzip để có thể lưu thêm dữ liệu vào phần đầu tập tin nén. Các chương trình giải nén tập tin Gzip đều giải nén được tập tin Dictzip nhưng chúng sẽ bỏ qua phần thông tin thêm này. Một số chương trình sẽ đọc phần thông tin thêm này và cho phép truy xuất dữ liệu ngẫu nhiên trong tập tin. • Cấu trúc phần thông tin thêm: o Khi bit FLG.FEXTRA được đặt (tham khảo “Phụ lục C : Chuẩn nén Gzip”), một trường mở rộng có kích thước XLEN được thêm vào phần đầu tập tin. o SI1, SI2 là 2 byte nhận dạng. Trong trường hợp này thì SI1 là ‘R’ và SI2 là ‘A’ (Random Access – Truy cập ngẫu nhiên). LEN lưu kích thước phần dữ liệu liền sau nó. Phần này có cấu trúc : o VER cho biết phiên bản của kiểu lưu dữ liệu. Với VER là 1 thì các giá trị được lưu dài 2 byte và là số nguyên không dấu. Dữ liệu khi nén được chia thành các khối có kích thước tối đa 64 KB.Trường CHLEN cho biết chiều dài của khối dữ liệu. Trường CHCNT cho biết số lượng khối dữ liệu đã lưu. Trường sau cùng (CHCNT words of data) cho KH OA C NT T – Đ H KH TN Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC 39 biết kích thước của từng khối dữ liệu sau khi giải nén. Khi truy cập ngẫu nhiên, vị trí và kích thước dữ liệu được đưa vào và chương trình sẽ dựa vào đó để lấy được một hay nhiều khối dữ liệu tương ứng và giải nén chúng. Đặc điểm: • Kích thước lưu trữ: qua nhiều khảo sát với dữ liệu Từ điển dạng text, quá trình nén các khối 64KB với chế độ nén LZ77 cao nhất thì kích thước tập tin nén Dictzip chỉ lớn hơn 4% so với tập tin được nén hoàn toàn. Dưới đây là biểu đồ minh họa tỉ lệ nén của 2 bộ dữ liệu Từ điển Anh – Việt, Việt – Anh: 10 3,17 3,33 0 2 4 6 8 10 12 Kí ch th ướ c (M B) Chưa nén Nén Zip Nén Dictzip Hình 5.1: Biểu đồ nén dữ liệu Từ điển Anh – Việt 2,76 0,859 0,878 0 0,5 1 1,5 2 2,5 3 3,5 4 Kí ch th ướ c (M B ) Chưa nén Nén Zip Nén Dictzip Hình 5.2: Biểu đồ nén dữ liệu Từ điển Việt – Anh KH OA C NT T – Đ H KH TN Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC 40 • Truy cập ngẫu nhiên: dữ liệu nén có thể được truy xuất ngẫu nhiên. Khi cần truy xuất, từng khối có kích thước tối đa 64KB tương ứng sẽ được đọc lên và giải nén. Vì vậy nó sẽ chậm hơn so với truy xuất dữ liệu trong tập tin không nén (không phải giải nén khi đọc) nhưng lại nhanh hơn nhiều so với truy xuất dữ liệu trong tập tin nén hoàn toàn (phải tốn 1 khoảng thời gian đáng kể để giải nén toàn bộ tập tin). Dưới đây là biểu đồ minh họa thời gian đọc dữ liệu của 100 từ ngẫu nhiên (theo thứ tự abc) trong Từ điển Anh – Việt được lưu trong tập tin không nén và tập tin nén bằng chuẩn Dictzip. 0 20 40 60 80 100 120 140 1 11 21 31 41 51 61 71 81 91 Từ Th ời g ia n (m s) Dictzip Không nén Hình 5.3: Biểu đồ thời gian đọc dữ liệu của tập tin không nén và tập tin nén chuẩn Dictzip Thời gian(ms) Cách lưu Lớn nhất Nhỏ nhất Trung bình Không nén 29 2 7,34 Nén Dictzip 128 1 26,90 Bảng 5.1: Thời gian truy xuất dữ liệu 100 từ ngẫu nhiên của Từ điển Anh – Việt KH OA C NT T – Đ H KH TN Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC 41 Nhận xét: • Trong phần lớn các trường hợp, thời gian truy xuất tập tin nén Dictzip lớn hơn so với tập tin không nén. • Một số trường hợp truy xuất dữ liệu tập tin nén Dictzip nhanh hơn tập tin không nén. • Thời gian trung bình truy cập tập tin không nén là 7,34 ms và tập tin nén Dictzip là 26,9 ms. Tỉ lệ chênh lệch tương đối lớn nhưng khoảng thời gian chênh lệch là rất nhỏ (19,56 ms) và có thể chấp nhận được. Kết luận: chuẩn nén Dictzip đã thỏa mãn các yêu cầu mà ta đề ra là dữ liệu được tổ chức sao cho dung hòa giữa tỉ lệ nén cao và tốc độ truy cập ngẫu nhiên nhanh. Do đó dữ liệu của ứng dụng Từ điển này sẽ được lưu trữ theo chuẩn nén Dictzip. 5.2 Tổ chức cấu trúc dữ liệu hỗ trợ tìm kiếm nhanh Để truy xuất đến dữ liệu Từ điển được lưu và nén dạng Dictzip trên, ta cần lưu thông tin về vị trí và chiều dài dữ liệu của từng từ. Phần thông tin này sẽ được tổ chức lưu trữ chung với những thông tin khác như từ, từ loại...Vấn đề đặt ra là ta phải tổ chức lưu trữ hợp lý để truy xuất được hiệu quả và đảm bảo yêu cầu tốc độ cho ứng dụng Từ điển. 5.2.1 Tổ chức lưu trữ tập tin chỉ mục Tập tin chỉ mục là tập tin có chứa thông tin về vị trí của 1 mẩu tin trong 1 tập tin khác (thường có kích thước lớn hơn nhiều so với tập tin chỉ mục) để giúp cho việc truy xuất các mẩu tin này được dễ dàng và nhanh chóng. Ta sẽ tổ chức 1 tập tin chỉ mục để hỗ trợ việc truy xuất tập tin dữ liệu Từ điển. Các thông tin như từ, từ loại, vị trí, kích thước dữ liệu được tổ chức thành các mẩu tin và lưu trữ tuần tự. KH OA C NT T – Đ H KH TN Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC 42 Từ Từ loại Vị trí nghĩa Kích thước nghĩa Nghĩa Vị trí nghĩa Kích thước nghĩa File chỉ mục File nghĩa Mẩu tin ... Mẩu tin i Hình 5.4: Tổ chức tập tin chỉ mục hỗ trợ truy xuất tập tin dữ liệu Từ điển Để truy xuất nghĩa 1 từ, ta tiến hành tìm kiếm trong tập tin chỉ mục để lấy ra được mẩu tin tương ứng. Từ vị trí nghĩa và kích thước nghĩa trong mẩu tin này, ta đọc được phần nghĩa trong tập tin dữ liệu nghĩa của Từ điển. Tốc độ tra cứu từ của ứng dụng Từ điển phụ thuộc vào cách truy xuất tập tin chỉ mục này. Ta có thể áp dụng các cách sau: • Tiến hành tìm kiếm tuần tự trên tập tin chỉ mục để lấy ra được mẩu tin thích hợp. Cách này có độ phức tạp là O(n), rất chậm, không tối ưu và không đáp ứng yêu cầu tốc độ của ứng dụng. • Đọc tất cả các mẩu tin và xây dựng thành một cây tìm kiếm. Cách này khai thác được ưu điểm về tốc độ tìm kiếm của các loại cây tìm kiếm nhưng có nhược điểm là chiếm rất nhiều bộ nhớ cho việc lưu trữ cây. Ví dụ với dữ liệu Từ điển Anh – Việt gồm 68.998 từ thì ta cần khoảng 3,4 MB để tổ chức cây trong bộ nhớ. Với dung lượng bộ nhớ giới hạn của Pocket PC thì cách này không thể áp dụng được. • Băm nhỏ tập tin chỉ mục để thu hẹp phạm vi tìm kiếm. Sau đó tiến hành tìm kiếm trên vùng vừa giới hạn. KH OA C NT T – Đ H KH TN Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC 43 Trong 3 cách trên thì giải pháp băm là hiệu quả nhất cho vấn đề ta đặt ra. Với giải pháp băm, phạm vi tìm kiếm được giới hạn nên thỏa mãn yêu cầu tiết kiệm bộ nhớ và tốc độ tìm kiếm. Vậy ta phải tiến hành băm tập tin chỉ mục này để giải quyết vấn đề tốc độ tra cứu từ của ứng dụng. 5.2.2 Tổ chức băm tập tin chỉ mục Băm tập tin chỉ mục nhằm làm nhỏ phạm vi tìm kiếm. Do tập tin chỉ mục của ta được tổ chức thành các mục từ tăng dần theo thứ tự abc nên ta sẽ băm theo các chữ cái đầu của từ. Ta có thể tiến hành băm 1 hay nhiều cấp tương ứng với 1 hay nhiều kí tự đầu của từ. Ta thử xem xét các khả năng: • Băm 1 cấp: các mục từ có cùng 1 kí tự đầu tiên sẽ thuộc 1 nhóm. Với Từ điển Anh – Việt 68.998 từ bắt đầu bằng 26 chữ cái thì trung bình mỗi nhóm phân hoạch sẽ có 265426998,68 = từ. Phạm vi tìm kiếm vẫn còn rất lớn. Ta nên phân hoạch nhỏ hơn nữa. • Băm 2 cấp: các mục từ có cùng 2 kí tự đầu tiên sẽ thuộc 1 nhóm. Tương tự như trên thì trung bình mỗi nhóm phân hoạch có 10226998,68 2 = từ. Phạm vi tìm kiếm đã được giới hạn đáng kể. • Băm 3 cấp: các mục từ có cùng 3 kí tự đầu tiên sẽ thuộc 1 nhóm. Tương tự như trên thì trung bình mỗi nhóm phân hoạch có 426998,68 3 = từ. Phạm vi tìm kiếm là rất nhỏ. Cách này không thể áp dụng được vì tập tin chỉ mục bị chia quá vụn ,việc duy trì bảng băm tốn nhiều bộ nhớ, bảng băm xuất hiện quá nhiều tổ hợp 3 kí tự vô nghĩa và rất dễ biến động khi ta thêm từ mới. Nhận xét: • Ta chỉ có thể băm tập tin chỉ mục theo 1 cấp hay 2 cấp. KH OA C NT T – Đ H KH TN Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC 44 • Mỗi phần tử trong bảng băm bao gồm khóa là 1 kí tự (2 byte) hay 2 kí tự (4 byte), vị trí bắt đầu (4 byte) và kích thước (4 byte) của các mục từ trong tập tin chỉ mục tương ứng với khóa. • Xét cụ thể Từ điển Anh – Việt trên: o Bảng băm 1 cấp có kích thước lưu trữ là (2+4+4)*26 = 260 byte với phạm vi tìm kiếm trong tập tin chỉ mục là 2654 từ. o Bảng băm 2 cấp có kích thước lưu trữ là (4+4+4)*26*26 = 8112 byte với phạm vi tìm kiếm trong tập tin chỉ mục là 102 từ. Mặc dù bảng băm 2 cấp có kích thước lớn hơn nhiều so với băm 1 cấp nhưng kích thước lưu trữ của nó vẫn là rất nhỏ (tương đương 8 KB). Như vậy, băm 2 cấp sẽ hiệu quả hơn băm 1 cấp. Ta sẽ áp dụng cách băm 2 cấp cho tập tin chỉ mục. Hình dưới đây minh họa các tìm kiếm 1 từ trong tập tin chỉ mục với bảng băm 2 cấp : g o o d g ... o ... Vị trí chỉ mục Kích thước chỉ mục Khóa Vị trí chỉ mục Kích thước chỉ mục Bảng băm File chỉ mục Từ go... go... go... ... ... Hình 5.5: Cách tìm kiếm chỉ mục của 1 từ với bảng băm 2 kí tự KH OA C NT T – Đ H KH TN Chương 5. Một số giải pháp chính cho việc xây dựng ứng dụng Từ điển trên Pocket PC 45 Cách tìm kiếm 1 từ : • Từ 2 kí tự đầu

Các file đính kèm theo tài liệu này:

  • pdf0012013_0012085.PDF