Tải bản đầy đủ (.pdf) (63 trang)

TÌM HIỂU HỆ THỐNG VIẾT LẠI SỐ HẠNG VÀ MINH HỌA BẰNG PHẦN MỀM TỰ ĐỘNG ĐIỀU CHẾ HÓA CHẤT

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.42 MB, 63 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<small> </small> <b> UBND TỈNH QUẢNG NAM TRƯỜNG ĐẠI HỌC QUẢNG NAM KHOA: CƠNG NGHỆ THƠNG TIN </b>

<b>KHỐ LUẬN TỐT NGHIỆP ĐẠI HỌC</b>

<b>Quảng Nam, tháng 04 năm 2017 </b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b> </b> UBND TỈNH QUẢNG NAM

<b>TRƯỜNG ĐẠI HỌC QUẢNG NAM KHOA: CÔNG NGHỆ THÔNG TIN </b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>LỜI CẢM ƠN </b>

Trong thời gian hoàn thành đề tài này, tơi xin tỏ lịng biết ơn sâu sắc đến Thầy Huỳnh Tấn Khải, đã tận tình hướng dẫn tơi trong suốt q trình tìm hiểu và thực hiện làm khóa luận.

Tơi cũng xin chân thành cảm ơn quý Thầy, Cô khoa Công Nghệ Thông Tin trường Đại Học Quảng Nam đã tận tình truyền đạt kiến thức cho tôi trong suốt 4 năm học. Với vốn kiến thức được tiếp thu trong quá trình học khơng chỉ là nền tảng cho q trình nghiên cứu đề tài mà còn là hành trang quý báu để tôi bước vào đời một cách vững chắc và tự tin.

Tôi cũng thầm biết ơn sự ủng hộ của gia đình, bạn bè - những người thân u ln ủng hộ và là chỗ dựa tinh thần vững chắc cho tơi.

Cuối cùng, tơi xin kính chúc q Thầy, Cơ và gia đình dồi dào sức khỏe và thành công trong sự nghiệp cao quý.

<i> Quảng Nam, ngày 13 tháng 04 năm 2017 </i>

Sinh viên thực hiện

Đinh Bá Quang

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>MỤC LỤC </b>

PHẦN I: MỞ ĐẦU ... 1

1.1. Lý do chọn đề tài ... 1

1.2. Mục tiêu của đề tài ... 2

1.3. Đối tượng và phạm vi nghiên cứu ... 2

1.4. Phương pháp nghiên cứu ... 2

1.5. Đóng góp của đề tài ... 2

1.6. Cấu trúc đề tài ... 2

PHẦN II: NỘI DUNG ... 3

CHƯƠNG I. CƠ SỞ TOÁN HỌC ... 3

1.1. Giới thiệu ... 3

1.1.1. Hệ thống viết lại số hạng (Term Rewiting System – TRS) là gì? ... 3

1.1.2. Các khái niệm cơ bản trong TRS ... 6

1.2. Luật viết lại có điều kiện ... 10

1.2.1. Các khái niệm ... 10

1.2.2. Ví dụ minh họa ... 11

1.3. Ứng dụng của hệ thống viết lại số hạng (TRS) trong thực tế ... 12

1.3.1. Dùng TRS để tổ hợp dịch vụ Web ... 12

1.3.2. Xây dựng phần mềm tự động điều chế hóa chất ... 12

1.4. Hướng tiếp cận của đề tài ... 13

1.5. Kết chương ... 13

CHƯƠNG II. MƠ HÌNH CẤU TRÚC SỬ DỤNG HỆ THỐNG VIẾT LẠI ... 14

2.1. Mô hình cấu trúc và các lớp xử lý ... 14

2.1.1. Module hệ thống viết lại số hạng ... 15

2.1.2. Module quản lý các cặp quan trọng ... 22

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

CHƯƠNG III. ỨNG DỤNG MINH HỌA BẰNG PHẦN MỀM TỰ ĐỘNG

ĐIỀU CHẾ HĨA CHẤT ... 40

3.1. Ý tưởng bài tốn ... 40

3.2. Các lớp xử lý của hệ thống viết lại số hạng. ... 42

3.2.1. Lớp luật có điều kiện – ConditionalRule ... 42

2. Hướng phát triển trong tương lai ... 55

PHẦN IV: TÀI LIỆU THAM KHẢO ... 56

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>BẢNG CÁC TỪ VIẾT TẮT </b>

<b>DANH MỤC HÌNH ẢNH </b>

Hình 1.1 Biểu diễn tính hợp nhất

Hình 1.2 Ví dụ khả năng rút gọn về Term Hình 1.3 Ví dụ các vị trí của một Term

Hình 2.1 Module của một TermRewritingSystem Hình 2.2 Module của một Critical Pair

Hình 2.3 Module của một Execution

Hình 2.4 Mơ hình lớp TermRewritingSystem Hình 2.5 Lớp Symbol trong TermRewritingSystem Hình 2.6 Cấu trúc thừa kế của một Symbol

Hình 2.19 Bước 2 của cây

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

Hình 2.20 Bước 3 của cây Hình 2.21 Bước 4 của cây Hình 2.22 Bước 5 của cây Hình 2.23 Bước 6 của cây Hình 2.24 Bước 7 của cây Hình 2.25 Bước 8 của cây

Hình 2.26 Phương thức Gettrace trả về danh sách dữ liệu Hình 2.27 Các bước thực hiện hàm Lift(s,t)

Hình 2.28 Các bước thực hiện hàm Rewrite(r,t) Hình 2.29 Các bước thực hiện hàm Matches(add,ori) Hình 2.30 Các bước thực hiện hàm Normal(r,t) Hình 3.1 Sơ đồ khối bài tốn

Hình 3.2 Chương trình tự động điều chế hóa chất

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>PHẦN I: MỞ ĐẦU </b>

<b>1.1. Lý do chọn đề tài </b>

Trong toán học và các ngành khoa học nghiên cứu phương trình được xem là một đối tượng phổ biến nhất. Đơi khi ta ln cố gắng để đi tìm lời giải sau hàng loạt các mệnh đề logic đã cho trước, tùy vào thời gian tính tốn, tùy vào cách áp dụng các mệnh đề logic khác nhau nhưng kết quả cuối cùng mà ta đi đến là một kết quả tối giản nhất. Những lý luận đi tìm lời giải cho phương trình như vậy cũng rất quan trọng trong nhiều ứng dụng của ngành khoa học máy tính, nó bao gồm các phép tính tốn đại số, chứng minh lý thuyết tự động và các ngôn ngữ lập trình.

Khoa học máy tính là một ngành khoa học mà ở đó tập hợp các kỹ thuật tốn học, các thuật tốn, giải thuật và ngơn ngữ lập trình hỗ trợ cho việc phát triển một hệ thống phần mềm và phần cứng. Với việc áp dụng lý luận đi tìm lời giải cho phương trình vào kỹ thuật lập trình ứng dụng, cơng việc tính tốn tìm kiếm kết quả sẽ trở nên nhanh chóng và chính xác. Có một phương pháp được tạo ra để thực hiện công việc lý luận trên thành một hệ thống đó là : Hệ thống viết lại số hạng-Term Rewriting System.

Viết lại số hạng là một hệ thống tính toán đáng ngạc nhiên dựa trên việc lặp đi lặp lại các quy tắc có sẵn mà ta đã xây dựng trước để tìm ra kết quả tối giản nhất. Với việc tự động tìm ra lời giải logic thơng qua các bộ luật (hay có thể gọi là các qui tắc) hệ thống viết lại rút ngắn thời gian tính tốn, giảm độ phức tạp trong việc tìm kết quả của phương trình. Đối với ngành khoa học máy tính hệ thống viết lại số hạng có đầy đủ sức mạnh của một máy Turing nhưng khác ở chỗ máy Turing chỉ giải quyết các vấn đề liên quan đến việc xử lý các ký tự trong khi đó hệ thống này hỗ trợ bất kỳ kiểu dữ liệu đầu vào nào đó, bạn có thể đưa vào kiểu ký tự, số, chuỗi... hệ thống đều có thể làm việc được. Chính những yêu cầu đơn giản trên hệ thống viết lại số hạng hiện tại đang được nghiên cứu và áp dụng rộng rãi trong các ứng dụng tin học thực tế giảm thiểu tối đa vấn đề thời gian cho việc tìm kiếm kết quả, ta có thể kể đến như sử dụng vào tối ưu các dịch vụ web, sử dụng viết các phần mềm tự động điều chế hóa chất, pha màu sơn...

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Với mong muốn đưa đến cái nhìn rõ nét hơn về hệ thống viết lại số hạng

<i><b>này, tôi đã chọn đề tài “ Tìm hiểu hệ thống viết lại số hạng và minh họa bằng phần mềm tự động điều chế hóa chất ” làm đề tài khóa luận tốt nghiệp cho </b></i>

mình.

<b>1.2. Mục tiêu của đề tài </b>

 Tìm hiểu về hệ thống viết lại số hạng - Term Rewriting System.  Xây dựng phần mềm tự động điều chế hóa chất.

<b>1.3. Đối tượng và phạm vi nghiên cứu </b>

 Đối tượng nghiên cứu: Hệ thống “Term Rewriting System”.

 Phạm vi nghiên cứu: Nghiên cứu các vấn đề xoay quanh việc sử dụng, cách thức hoạt động của hệ thống viết lại số hạng rồi xây dựng ứng dụng demo.

<b>1.4. Phương pháp nghiên cứu </b>

 Thu thập thông tin, nghiên cứu tài liệu liên quan đến đề tài.  Tham khảo sách, báo và từ Internet.

<b>1.5. Đóng góp của đề tài </b>

 Cung cấp kiến thức về hệ thống viết lại số hạng.

 Cung cấp một ứng dụng để giải quyết bài toán viết lại số hạng.

<b>1.6. Cấu trúc đề tài </b>

Ngoài phần mở đầu và kết luận, phần nội dung khóa luận gồm ba chương: Chương 1: Cơ sở toán học về hệ thống viết lại số hạng – Term Rewriting System, chương này giới thiệu sơ lược thế nào là một hệ thống viết lại số hạng, đưa ra các ví dụ để làm rõ.

Chương 2: Mơ hình cấu trúc sử dụng, chương này đề cập đến mơ hình cấu trúc của hệ thống viết lại số hạng, gồm có các module nào, các lớp được hình thành ra sao, đồng thời đưa ra các hàm để giải quyết bài toán.

Chương 3: Ứng dụng minh họa bằng phần mềm tự động điều chế hóa chất.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>PHẦN II: NỘI DUNG </b>

<b>CHƯƠNG I. CƠ SỞ TOÁN HỌC </b>

<b>1.1. Giới thiệu </b>

<b>1.1.1. Hệ thống viết lại số hạng (Term Rewiting System – TRS) là gì? </b>

Trong tốn học, khoa học máy tính và logic học có một phương pháp được xem là một tập hợp mà ở đó nó bao gồm các kỹ thuật tốn học, các bộ luật để phát triển phần mềm và các hệ thống phần cứng. Trong cơng nghệ phần mềm chúng ta có thể sử dụng phương pháp này để khai thác sức mạnh của các ký hiệu

<i>và chứng minh toán học. Phương pháp này chính là Hệ thống viết lại số hạng (Term Rewriting System – TRS), với phương pháp này các quy tắc viết lại được </i>

sử dụng để xác định các thuộc tính và u cầu của chương trình. Tất cả chúng ta đã từng học từng sử dụng hệ thống viết lại mà chúng ta không hề hay biết, ngay khi chúng ta còn ở trường học. Khi chúng ta đơn giản hóa một phương trình tốn học chúng ta có thể làm như sau:

<i>(3 + 4) (4 + 2) → 7 (4 + 2) → 7 6 → 42 </i> (1) Cách đơn giản phương trình này là việc sử dụng các phép toán cộng và

<i>nhân được bổ sung vào, các luật này giống như: 0 + 1 → 1, 0 + 2 → 2, 0 + 3 → 3, ..., 0 1 → 0, 0 2 → 0, ...với việc kết hợp các tổng để rồi tích các tổng đã </i>

tính lại với nhau ta tìm ra kết quả.

<i>Cũng có thể hiểu rằng TRS là tập các luật được xây dựng bằng các dữ liệu </i>

đầu vào, quá trình xây dựng được lặp đi lặp lại với các điều kiện khác nhau cho

<i>đến khi thu được kết quả đơn giản nhất. Ý tưởng của TRS được làm rõ qua ví dụ về “Coffee Can Problem”, ta có hai giống cà phê đen và trắng ta được phép sắp </i>

xếp theo thứ tự nào đó (ngẫu nhiên) – đây là đầu vào (Input).

<i>white white black black white white black black </i> (2) Các bộ luật (qui tắc) được quy định là:

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Bộ qui tắc này là một ví dụ điển hình cho hệ thống viết lại. Mỗi qui tắc đều diễn ra một động thái, một quy phạm đúng, đầu tiên bất kỳ hạt cà phê nào màu trắng khi được kết hợp với hạt đen thì đều cho ra màu đen và ngược lại, tiếp đến nếu hai hạt cùng màu thì sẽ cho ra hạt có màu cịn lại. Ví dụ dưới đây là một chuỗi các luật được lặp đi lặp lại trong suốt quá trình tìm lời giải đơn giản nhất.

<i>white white black black white white black black white white black black white black black </i>

<i>white white white white black black white white white black black </i>

<i>white white black black white black black </i>

<i>black black white </i>

Mục tiêu của bài tốn là tìm ra càng ít hạt cà phê càng tốt, ta có thể thấy rằng với một số lẻ hạt cà phê đen bài tốn sẽ ln tìm ra lời giải cuối cùng là một hạt màu đen. Ví dụ trên cơ bản làm rõ hệ thống viết lại số hạng là gì, nó bao gồm các đầu vào, mơ hình xây dựng các bộ luật (qui tắc), và đầu ra là một kết quả đơn giản nhất.

<i>Các đặc tính quan trọng của một TRS bao gồm: </i>

<i><b> Không xác định: Sử dụng các luật khơng xác định, có nghĩa là trong một bài tốn, một phép giải chúng ta có thể sử dụng các quy tắc, các luật khác nhau: </b></i>

<i>(3+4) (4+2) → 7 (4+2) → 7 4+7 2 → 7 4 +14 → 28+14 → 42 (4) </i>

Chúng ta có thể nhìn thấy ở mỗi bước của (2) các luật được sử dụng một cách linh hoạt nhưng vẫn tuân thủ đúng quy tắc toán học ta gọi đây là một chuỗi ghi đè hợp lệ. Nói chung, q trình viết lại là khơng xác định trước.

<i><b> Kết quả cuối cùng giống nhau: Tính độc đáo của việc sử dụng các luật </b></i>

một cách không xác định trước nằm ở chỗ chúng đều cho ra một kết quả cuối

<i><b>cùng giống nhau, mặc dù đường đi lời giải khác nhau. </b></i>

<i><b> Chấm dứt: Mỗi lần viết lại đều có thể được mở rộng ra để dễ dàng tiếp cận kết quả, và cũng có thể loại trừ để kết thúc bài tốn. </b></i>

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<i><b> Hợp nhất : Tính hợp nhất có tính chất làm đảm bảo các luật trong cùng </b></i>

hệ thống được viết lại bằng những cách khác nhau nhưng cho ra kết quả tương

<i> Hợp nhất toàn bộ nếu : cho tất cả s, t, t<small>’</small>T(F,X), bất kỳ khi nào s → </i><small>∗</small><i>t và s →</i><small>∗</small><i>t<small>’</small>, ta có u T(F,X) như vậy t →</i><small>∗</small><i> u và t<small>’</small> →</i><small>∗</small><i> u. </i>

<i> Ví dụ 1: Với biểu thức s(s(0)) + 0, nếu thay x bằng s(s(0)) (vì x là biến số </i>

nên có thể được thay bằng các biểu thức) thì biểu thức này theo đúng cấu trúc vế

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<i>trái của luật R1, nên có thể viết lại thành s(s(0)) (vì áp dụng R1, kết quả là x mà x = s(s(0))). Q trình trên có thể được biểu diễn thành: </i>

<i>s(0) + s(s(0)) → s(s(0) + s(0)) [R2] → s(s(s(0) + 0) [R2] → s(s(s(0))) [R3] Như vậy kết quả của phép cộng là s(s(s(0))) là biểu diễn của số 3. </i>

Ta cũng có thể áp dụng các luật theo một thứ tự khác để ra được kết quả cuối cùng:

<i> s(0) + s(s(0)) → s(s(0)) + s(0) [R3] → s(s(s(0)) + 0) [R2] → s(s(s(0))) [R1] </i>

Một hệ thống được đặc tả gồm các luật như trên gọi là hệ thống viết lại số hạng. Việc tìm hiểu về hệ thống viết lại số hạng liên quan đến cách điều hướng các luật này và các điều kiện để đảm bảo hệ thống luật tạo ra có sức mạnh tính tốn bằng với hệ thống phương trình mà nó được tạo ra từ trước đó.

<b>1.1.2. Các khái niệm cơ bản trong TRS a) Tập chữ kí </b>

Một tập chữ kí (Signature) ∑ là một tập các ký hiệu hàm, trong đó mỗi f

<i>∑ được liên kết với một số không âm n là bậc của f. So sánh với khái niệm hàm </i>

số trong ngơn ngữ lập trình, tập chữ kí chính là tập chứa tên các hàm số với bậc của một tập chữ kí chính là số lượng thơng số của hàm số đó.Tập các phần tử có

<i>cùng bậc n của ∑ được ký hiệu là ∑ (n). Hằng số là tập các phần tử có bậc 0 của ∑: ∑ (0). </i>

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<i>Ví dụ 4: 0, s đều là các Term, với f thuộc tập chữ kí (f ∑), nếu t<small>1</small>, t<small>2</small>, … t<small>n</small></i>

<i>đều là các Term thì f( t<small>1</small>, t<small>2</small>, … t<small>n </small>) là một Term: f( t<small>1</small>, t<small>2</small>, … t<small>n </small>) ∑. </i>

<i>Ví dụ 5: s(s(0)), s(0) + 0 đều là các Term. (Phép + ở đây là một hàm số có 2 thơng số. </i>

<i> y được gọi là một chuẩn của x nếu và chỉ nếu x →y và y ở dạng chuẩn. </i>

Ví dụ 7: Để minh họa các khái niệm, ta dùng biểu diễn trực quan của 2

<i>cách áp dụng luật để tính s(0) + s(s(0)) : </i>

<i>Hình 1.2 : Ví dụ về khả năng rút gọn về Term. </i>

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

Giải thích:

<i> s(0) + s(s(0)) khả rút gọn.  s(s(s(0))) ở dạng chuẩn . </i>

<i> s(0) + s(0) không ở dạng chuẩn . </i>

<i> s(s(s(0))) là một chuẩn của s(s(0) + s(0)). </i>

<i><b>d) Tập biến: Là tập các biến số có mặt trong Term t. </b></i>

<i> Ví dụ 8: Var(0) = vì Term 0 khơng có biến số; var (x + s(y)) = { x , y } vì có 3 ký hiệu trong term x + s(y) là x, s và y trong đó s là một hàm số: s ∑, x </i>

<i><b>và y là biến: x,y X. </b></i>

<b>e) Luật viết lại: Là là một luật có dạng VT → VP sao cho VT không phải là </b>

<i>một biến và Var(VT) ⊇ Var(VP). </i>

<b>f) Hệ thống viết lại số hạng: Là một tập hợp gồm các luật viết lại. </b>

<i> Ví dụ 9: Hệ thống gồm các luật {x + 0 → x, x + s(y) → s (x + y), x + y → y + x }, trong đó ∑ = {s, 0}, X = {x, y} là một hệ thống viết lại số hạng. </i>

<b>g) Vị trí của term </b>

<i>Cho S là một tập chữ kí, X là một tập các biến ( ∑ ∩ X ≠ </i>∅<i>) và s, t là các Term. Tập các vị trí của Term s là tập hợp Pos(s) (Position) là một chuỗi các số </i>

dương được định nghĩa một cách đệ quy:

<i>Nếu s là biến thì Pos(s) = { }. ( là một ký hiệu dùng để mơ tả rằng tập các vị trí của Term là tập rỗng). </i>

<i>Nếu s=f(s<small>1</small>,...,s<small>n</small>) thì Pos(s) = { } </i>∪<i> ⋃| p Pos(s<small>i</small>)}. </i>

<i>Vị trí của Term là một khái niệm rất quan trọng để có khả năng lập trình hóa việc áp dụng một luật lên một subterm (term thay thế) của một term cho </i>

trước.

<i>Ví dụ 10: Để biểu diễn s(s(0)+ s(0))→ s(s(s(0)+ 0))) khi áp dụng luật R2: x + s(y) → s( x + y ), ta cần phải biết luật này được áp dụng trên term thay thế nào của Term ban đầu( trong trường hợp này là term thay thế s(0)+ s(0) của s(s(0) + s(0)). </i>

<i>Vị trí của term thay thế được biểu diễn trực quan theo hình cây. Cây con </i>

của một nút sẽ có phần đầu là vị trí của nút cha và nối thêm một số chỉ số thứ tự

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

của nó (ví dụ: nếu nút cha có vị trí là 12 thì nút con đầu tiên của nó có vị trí là

<i>121). Nút gốc có vị trí là . Ta có biểu diễn trực quan của Term t = s(y) + s(s(x) + 0. </i>

<i>Hình 1.3: Ví dụ minh họa các vị trí của Term </i>

<i>Giải thích : Pos(t) = { , 1, 11, 2, 21, 211, 212, 2111 }. Trong ví dụ trên, |t| = 8 vì Pos(t) có 8 phần tử , 1, 11, 2, 21, 211, 212 và 2111. </i>

<i>Với p là một phần tử của Pos(s), term thay thế của s tại vị trí p, ký hiệu là s|p được định nghĩa đệ quy trên chuỗi số của p như sau: </i>

<i>s| = s </i>

<i>Khái niệm ‘term thay thế’ này giúp người lập trình dễ dàng xác định term thay thế nào của Term ban đầu được áp dụng các luật. Term thay thế tại vị trí chính là Term ban đầu. Term thay thế tại vị trí iq (với q là một số) là cây con thứ q của si. Trong Term t đã xác định ở trên, ta có: t<small>2</small> = s(s(x) + 0) (cây con thứ hai tính từ nút gốc); t<small>21</small> = s(x) + 0 (cây con thứ nhất của t<small>2</small></i>).

<i>Với p là một phần tử của Pos(s), s[t]<small>p</small> là Term được tạo ra từ s bằng cách thay thế subterm tại vị trí p bởi t. </i>

<i>s[t] = t </i>

<i> f(s<small>1</small>,..., s<small>n</small>)[t]<small>iq</small> = f(s<small>1</small>,..., s<small>i</small>[t]<small>q</small>,...,s<small>n</small>) </i> (6)

<i>Ví dụ 11: s(s(0) + s(0)) → s(s(s(0) + 0))) khi áp dụng luật R2: x + s(y) → s(x+y) tức là ta thay thế subterm s(0) + s(0) bằng s(s(0) + 0), ta chỉ cần dùng ký hiệu s(s(0) + s(0)) [s(s(0) + 0] |<small>1</small></i>.

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

Cho ∑ là một tập chữ kí và V là một tập các biến. Một sự thay thế trên

<i>T(∑, V ), hay nói đơn giản là sự thay thế, là một hàm σ: V → T( ∑, V ) sao cho σ (x) ≠ x cho một số giới hạn các biến x. </i>

<i>Ví dụ 13: Để áp dụng luật R2: x+s(y) → s(x+y) trên Term s(s(0) + s(0)) → s(s(s(0) + 0))), ta cần định nghĩa phép thay thế = {x </i>↦<i> s(0), y </i>↦<i> 0 }. Áp dụng phép thay thế này trên luật R2, ta được: s(0) + s(0) → s(s(0) + 0). Sau đó, ta lấy được kết quả của việc áp dụng luật R2 bằng cách thực hiện: t[ s(s(0) + 0 ] |<small>1</small></i>.

<b>i) Tập </b>

<i><b> Dom( ) là tập hợp các biến sau cho giá trị của nó bị thay đổi khi áp dụng </b></i>

phép thay thế .

<i>Ví dụ 14: Với phép thay thế = { x </i>↦<i> s(0), y </i>↦<i> s(s(0)), z </i>↦<i> z } thì Dom( ) = { x, y }. </i>

<b>1.2. Luật viết lại có điều kiện 1.2.1. Các khái niệm </b>

<b>a) Đồng nhất thức </b>

<i>Cho (∑ là một tập chữ kí và V là một tập các biến vô hạn đếm được sao cho (∑ ∩ X ≠ </i>∅<i>. Một ∑- đồng nhất thức (hay đơn giản là đồng nhất thức) là một </i>

cặp , ∈ ∑, <i>∑, . Các đồng nhất thức được viết thành s →t. </i>

<b>b) Quan hệ giản lược </b>

<i>Cho E là một tập các (∑- đồng nhất thức. Quan hệ giản lược →<small>E</small></i> ⊆ <i>∑, x T( ∑, V ) được định nghĩa: </i>

<i>s </i>→<i><small>E</small> t nếu và chỉ nếu ∃(l,r) ∈ E, p ∈ Pos(s), ∈ Sub. s|p = (l) and t = s[ (r)]p. </i>

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<i>Ví dụ 15: Cho G := {f{x, f(y, z)) →f(f(x, y), z), f(e, x) →x, f(i(x), x) → e}. Khi đó f(i(e), f(e, e)) →<small>G</small> f(f(i(e),e),e) →<small>G</small> f(e,e) →<small>G</small> e. </i>

<i> Lần giản lược đầu tiên diễn ra tại vị trí p<small>1</small> = với cặp đồng nhất thức đầu </i>

tiên và phép thay thế <i><small>1</small> = { x</i>↦<i>i(e), y</i>↦<i> e , z </i>↦<i> e }. </i>

<i> Lần giản lược thứ hai diễn ra tại vị trí p<small>2</small> = 1 với đồng nhất thức thứ 3 và </i>

phép thay thế <i><small>2</small>= { x </i>↦<i>e }. </i>

<i> Lần giản lược thứ ba diễn ra ở vị trí p<small>3</small> = với đồng nhất thức thứ hai và </i>

phép thay thế <i><small>3</small>= { x </i>↦<i>e }. </i>

<b>1.2.2. Ví dụ minh họa </b>

Ta lấy ví dụ ở mục 1.1 để phát triển, hệ thống được mở rộng rộng ra để

<i>biểu diễn không chỉ các số tự nhiên mà cả các số âm bằng cách thêm hàm p để mô tả các giá trị âm. Như vậy, (∑ = { 0 , s, p } trong đó 0 là hằng số, s và p là </i>

các hàm có một thơng số. Để có thể biểu diễn giá trị số trong trường hợp có cả

<i>hai hàm s và p, hệ thống cần thêm vào ba luật: </i>

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<i>p(p(p(0)))+s(s(0)) → s(p(p(p(0)))+s(0)) [R2] → s(s(p(p(p(0)))+0)) [R2] → s(s(p(p(p(0))))) [R1] → s(p(p(0))) [R4] → p(0) [R4] </i> (7)

<i>p(0) chính là dạng biểu diễn của -1. </i>

<b>1.3. Ứng dụng của hệ thống viết lại số hạng (TRS) trong thực tế 1.3.1. Dùng TRS để tổ hợp dịch vụ Web </b>

  Các dịch vụ web có sẵn thường rất cơ bản, chỉ phục vụ cho những thao tác đơn giản của người dùng. Trong khi đó, nhu cầu sử dụng của người dùng ngày càng cao, thường phải kết hợp nhiều dịch vụ web đơn này để có thể thực hiện được công việc mong muốn. Các phương pháp tổ hợp dịch vụ web hiện nay còn đơn giản và tốn nhiều thời gian. Với số lượng dịch vụ web ngày càng nhiều, việc tổ hợp các dịch vụ web bằng tay là không khả thi. Hơn nữa, người dùng không chỉ u cầu tìm được dịch vụ web có các chức năng mong muốn mà còn đòi hỏi dịch vụ này phải là dịch vụ tốt nhất tìm được (chi phí nhỏ nhất, độ tin cậy cao nhất, …). Ngày nay, số lượng các dịch vụ web được cập nhật một cách liên tục địi hỏi các chương trình tổ hợp cần phải cập nhật các thay đổi này mà khơng ảnh hưởng đến q trình thực thi của chương trình.

Ta có thể sử dụng hệ thống viết lại số hạng. Hệ thống chuyển đổi các dịch vụ web có sẵn thành các luật với đặc tả đi kèm về chất lượng dịch vụ và điều kiện thực hiện dịch vụ. Chương trình xét khả năng áp dụng từng luật và chọn ra luật áp dụng tốt nhất cho đến khi thỏa mãn được yêu cầu của dịch vụ web cần tổ hợp. Trong quá trình tổ hợp, chương trình có khả năng thay đổi số lượng, đặc tả của các dịch vụ có sẵn để phù hợp với các cập nhật xảy ra.

<b>1.3.2. Xây dựng phần mềm tự động điều chế hóa chất </b>

  Ta sử dụng hệ thống viết lại số hạng để giải các bài tốn khi đưa ra các luật mơ tả bài tốn đó cùng với đặc tả của vấn đề cần giải quyết. Hệ thống dựa trên các luật có sẵn để đưa vấn đề này thành dạng chuẩn mong muốn. Phần mềm bao gồm 2 thành phần chính: đầu vào (dữ liệu cần thiết để thực hiện một quá trình tạo hóa chất) và đầu ra (dữ liệu có được sau khi thực hiện điều chế). Đặc điểm này hoàn toàn giống với khái niệm luật trong hệ thống viết lại số hạng: khi một biểu thức phù hợp với vế trái của một luật, ta có thể viết lại biểu thức đó

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

dưới dạng vế phải. Mỗi phương trình điều chế sẵn có được mơ tả bằng một luật trong hệ thống.

Việc điều chế một hóa chất là một q trình tìm ra thứ tự áp dụng các chất, các phản ứng có sẵn từ một tập các dữ liệu đầu vào đã có để có thể có được tập dữ liệu đầu ra như mong muốn. Việc tính tốn trên hệ thống viết lại số hạng cũng dựa vào biểu thức cần tính và sử dụng các luật để đưa biểu thức này về dạng chuẩn mà không thể rút gọn lại được nữa. Như vậy, tự động điều chế hóa chất chỉ là một dạng hệ thống viết lại đơn giản trong đó biểu thức cần tính được dựa trên các dữ liệu đầu vào của các phản ứng hóa học. Việc áp dụng các luật (được xây dựng từ các phương trình hóa học có sẵn) dừng lại khi các yêu cầu đầu ra của một hoạt động điều chế một chất nào đó được thỏa mãn.

<b>1.4. Hướng tiếp cận của đề tài </b>

Mục tiêu của đề tài là tìm hiểu thế nào là hệ thống viết lại số hạng – TRS, nó có gì mới được tạo lập từ đâu, đề tài mang đến cái nhìn rõ nét về mơ hình và các lớp hoạt động của một TRS, qua đó xây dựng ra một ứng dụng tự động điều chế hóa chất bằng hệ thống này. Ứng dụng này có khả năng tổ hợp tự động một số lượng lớn phương trình phản ứng hóa học đơn lại với nhau bằng việc đơn giản hóa các đặc tả phức tạp của chuỗi phản ứng và mô tả chúng bằng các luật theo hệ thống viết lại số hạng.

<b>1.5. Kết chương </b>

Trong chương này, chúng ta đã cơ bản tiếp cận cơ sở toán học về một hệ thống viết lại số hạng. Một hệ thống viết lại số hạng bao gồm các khái niệm cơ bản nào, để đi giải quyết cách làm việc của một hệ thống viết lại chúng ta sẽ đi phân tích sâu hơn trong chương 2.

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

<b>CHƯƠNG II. MƠ HÌNH CẤU TRÚC SỬ DỤNG HỆ THỐNG VIẾT LẠI </b>

<b>2.1. Mô hình cấu trúc và các lớp xử lý </b>

Cấu trúc của một TRS bao gồm ba phần chính :

<b> Term Rewriting System Module (TRSM): Module này có trách nhiệm lưu giữ các cấu trúc dữ liệu chính của hệ thống. </b>

<b> Critical Pair Module (CPM): Bao gồm các lớp cần thiết để tính tốn và quản lý các cặp trọng điểm của hệ thống. </b>

<b> Execution Module (EM): Module này có chức năng theo dõi các hoạt động được thực hiện trong một kì của hệ thống. </b>

<i>Hình 2.1: Biểu đồ module của một Term Rewriting System. </i>

<i>Hình 2.2: Biểu đồ module của Critical Pair </i>

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

<i>Hình 2.3: Biểu đồ module của Execution. </i>

<i>Ngồi ra cịn có một lớp phụ trợ, Parser, có nhiệm vụ phân tích tệp .trs và xây dựng một đối tượng TermRewritingSystem. </i>

<b>2.1.1. Module hệ thống viết lại số hạng </b>

Đây là một bộ phận cốt lõi của một mơ hình TRS, nó lưu giữ các dữ liệu cấu trúc của hệ thống và cho phép các module khác truy cập các thuộc tính trong nó. Cấu trúc dữ liệu này được chọn và biểu diễn trên một cây cú pháp, mỗi đối

<i>tượng Term đại diện cho một nút trong cây đó, và có một tham chiếu đến Symbol trên nó. Mỗi Symbol trong hệ thống viết lại số hạng chỉ được đặc trưng bởi một và chỉ một Symbol mà thơi và nó lưu trữ danh sách tất cả các nút trên </i>

các cây nơi nó được sử dụng.

Mơ hình dưới đây là cấu trúc của một TRSM, nó bao gồm bốn lớp thực hiện các chức năng riêng:

 Lớp Symbol  Lớp Term  Lớp Rule

 Lớp Lớp TermRewritingSystem

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

<i>Hình 2.4: Mơ hình lớp của TRS </i>

<b>a) Lớp Symbol </b>

<i>Lớp Symbol được sử dụng để lưu trữ các đặc tính của mỗi ký hiệu trong hệ thống viết lại số hạng, một symbol có thể là một biến “variable”, một hàm “function” hoặc cũng có thể là một hằng số “constant”. Một đối tượng symbol là </i>

đại diện cho các loại của chúng và tất cả các thuộc tính liên quan của nó đều được lưu trữ trên một mảng nơi mà chúng diễn ra các sự kiện (.Instances[0], .Instances[1], .Instances[2], ...).

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

<i>Hình 2.5: Lớp Symbol </i>

<i>Kiểu dữ liệu của Type và Notation (TermType và FunctionNotation) là một bảng liệt kê có các giá trị có thể là [Function, Variable, Constant] and [Null, Prefix, Infix, Postfix]. </i>

<i>Notation đại diện cho cách mà một hàm bất kỳ được in ra và các symbol </i>

không phải là hàm đều là giá trị NULL.

<i>Thuộc tính Arity chỉ được sử dụng trên các ký hiệu hàm. Đối với tất cả các </i>

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

<i>Hình 2.6: Cấu trúc thừa kế của “symbol” </i>

<b>b) Lớp Term </b>

<i>Term là giá trị khởi tạo cho một symbol vì vậy nó sẽ có tham chiếu đến đối tượng symbol được chứa trong nó. Term hoạt động như nút của cây giải thuật, nếu nó là gốc thì nó được phép tham chiếu đến các thuộc tính “Parent ” cịn nếu nó khơng là root thì nó vẫn được tham chiếu đến các thuộc tính con trong đó. Thuộc tính “IsLinear” đặc trưng cho tính chất “Linear” của một Term. Để tăng tốc quá trình thực thi của thuật tốn mỗi Term sẽ lưu giữ một đối tượng từ điển để theo dõi số lượng các sự kiện diễn ra, mỗi khi Term thay đổi số lượng sự kiện (bằng cách thêm, xóa hoặc thay thế các subterms ở bất kỳ độ sâu nào trong cấu </i>

trúc cây) đối tượng từ điển này sẽ cập nhật các giá trị của nó.

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

<i>Hình 2.7: Lớp Term </i>

Các phương thức của lớp này bao gồm:

<i><b> Clone: Clone có nhiệm vụ nhân bản Term hiện tại và trả về một bản sao.  GetSubTerm: Trả về “subterm” tại một vị trí xác định. </b></i>

<b> Matching/Unification: Tính tốn các thay thế cần thiết để thống nhất </b>

<i>một Term nhất định nào đó. Nếu khơng có mathching/unification thì trả về kết </i>

<b>quả là NULL. </b>

<i><b> Replace: Thuộc tính này có nhiệm vụ thay thế các “subterm” tại một vị </b></i>

<b>trí nhất định nào đó. </b>

<i><b> Split: Thuộc tính này sẽ lấy vị trí của một đối số “Argument” và phân </b></i>

<i>chia vị trí các Term thành ba phần: phần trước vị trí được lấy, phần subterm của </i>

<b>vị trí được lấy, và phần sau của vị trí được lấy. </b>

<i><b> ToString: Chuyển đổi Term thành kiểu text. </b></i>

<b>c) Lớp Rule </b>

Các qui tắc viết lại trong TRS được đặc trưng bởi một đối tượng có tên là

<i>“Rule”. Nó tham chiếu đến hai đối tượng trong Term: the left-hand và the hand. </i>

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

<i>right-Hình 2.8: Lớp Rule Lớp Rule có ba phương thức chính: </i>

<i><b> Apply: Phương thức này chứa các tham số : Term, Position , sub. Nó sẽ trả về kết quả là một Term đã được xác định vị trí. </b></i>

<b> GetCriticalPairs: Phương thức cần lấy một qui tắc làm tham số và trả về là danh sách các cặp đối trọng. </b>

<i><b> GetRedexes: Phương thức lấy một Term làm tham số, trả về danh sách các lần xuất hiện của qui tắc cho Term. Một Redex được hình thành bởi một Position của Term và một Substitution. </b></i>

<b>d) Lớp TermRewritingSystem </b>

<i>TermRewritingSystem là lớp cốt lõi của mơ hình này. Nó cho phép tạo ra </i>

các hệ thống viết lại số hạng và cung cấp các phương thức giúp kiểm tra các thuộc tính của nó.

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

<i>Hình 2.9: Lớp TermRewritingSystem Một TermRewritingSystem chứa: </i>

<b> List of Rules: Đây là một mảng các qui tắc của hệ thống viết lại số hạng, </b>

<i>ta có thể truy cập đến mỗi qui tắc trong mảng (.Rules[0], .Rules[1], .Rules[2], </i>

<i><b>...). </b></i>

<i><b> List of Variables: Đây là thư viện đặc trưng cho các symbol của một </b></i>

biến được dùng trong hệ thống viết lại số hạng. Các biến này sẽ được truy cập

<i>bởi một tên được khai báo bằng kiểu String (.Variables[“x”], .Variables[“y”], .Variables[“z”], ... ). </i>

<i><b> List of Functions: Đây là thư viện đặc trưng cho các symbol của một </b></i>

hàm được dùng trong hệ thống viết lại số hạng. Các biến này sẽ được truy cập

<i>bởi một tên được khai báo bằng kiểu String (.Functions[“f”], .Functions[“g”], .Functions[“h”], ...). </i>

<i><b> List of Constants: Đây là thư viện đặc trưng cho các symbol của một </b></i>

hằng được dùng trong hệ thống viết lại số hạng. Các biến này sẽ được truy cập

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<i>bởi một tên được khai báo bằng kiểu String (.Constants[“a”], .Constants[“b”], </i>

<i><b>.Constants[“c”], ...). </b></i>

<i>Các phương thức Instantiate, NewRule và NewSymbol được dùng để tạo ra một phần tử mới của Term, Symbol hoặc Rule trong lớp TermRewritingSystem này . </i>

<b>2.1.2. Module quản lý các cặp quan trọng </b>

Module này lưu trữ các thông tin về các cặp quan trọng(Critical Pair- CP)

các ràng buộc mới vào, phương thức này sẽ kiểm tra kiểu dữ liệu của nó (có phải

<i>là biến hay khơng) nếu khơng đúng thì một ngoại lệ (exception) sẽ được sinh ra. </i>

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

<i>Một đối tượng trong Position không tham chiếu đến bất kỳ một đối tượng bào trong cấu trúc cây của Term. </i>

<i>Hình 2.12: Lớp Position </i>

<b>c) Lớp CriticalPair </b>

Đây là lớp quan trọng nhất của module này, vì nó được sử dụng để lưu trữ

<i>các phần tử xác định một cặp trọng điểm (CP):  Một cặp lệnh của qui tắc Rule </i>

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

<i> Một Position ở phía bên trái của qui tắc đầu tiên </i>

<i> Một Substitution để kết hợp subterm với qui tắc đầu tiên bên trái được </i>

qui định bởi Position với qui tắc thứ hai bên trái. Ở đây giải thiết được đưa ra là cả hai qui tắc đều khơng có biến.

<i> Và một cặp lệnh của Term. </i>

<i>Hình 2.13: Lớp CriticalPair </i>

<i>Lớp này có một phương thức chính: CheckConvergence nó có nhiệm vụ là kiểm tra xem hai Term có tạo thành một cặp điểm quan trọng hay không. Để tránh một vịng lặp kiểm tra vơ hạn MaxIterations sẽ đưa ra một con số cụ thể để </i>

kiểm tra số lần lặp trước khi nó tạo ra một cặp điểm quan trọng. Nếu phương thức khơng tìm thấy câu trả lời và đạt đến vòng lặp tối đa thì nó sẽ trả về kết quả

</div>

×