GIẠI THUAƠT CHUYEƠN ĐOƠI TỪ DÁNG TRUNG TÔ SANG HAƠU TÔ BA LAN NGƯỢC

Một phần của tài liệu Tối ưu số cho bài toán tối ưu một mục tiêu (Trang 69 - 73)

HAƠU TÔ BA LAN NGƯỢC

Có nhieău giại thuaơt cho vieơc chuyeơn đoơi từ moơt bieơu thức sô hĩc dáng trung tô sang bieơu thức sô hĩc dáng haơu tô Ba Lan ngược. Giại thuaơt được trình bày dưới đađy là moơt ý tưởng cụa E.W.Dijkstra. Giạ sử raỉng moơt bieơu thức được kêt hợp với các ký hieơu sau:

 Các biên.

 Các phép toán có hai toán háng (+,-,*,/).

 Các ký tự đái dieơn 1 hàm sô bât kỳ, ký hieơu sô mũ, các dâu Relop.  Các dâu ngoaịc trái hay phại.

GIẠI THUAƠT:

Ta cho máy đĩc từng ký tự moơt trong bieơu thức dáng trung tô, baĩt đaău từ beđn trái cho tới khi gaịp ký tự kêt thúc “$” laăn thứ hai. Tùy theo ký tự được đĩc và ký tự ở đưnh stack ta có các tác vú sau:

 Ký tự baĩt đaău “$” luođn được đaơy vào stack.

 Các ký tự là biên luođn được ghi ra, khođng cât vào stack

 Các ký tự được đĩc +, -, *, /, và ký tự kêt thúc $ có tác vú được thực hieơn theo mã sô tác vú được mođ tạ trong bạng sau:

Ký tự được đĩc $ Hàm ^ + - * / Relop ( ) tự tái đưnh stack $ 4 1 1 1 1 1 1 1 1 5 Hàm 2 2 2 2 2 2 2 2 1 2 ^ 2 1 2 2 2 2 2 2 1 2 + 2 1 1 2 2 1 1 2 1 2 - 2 1 1 2 2 1 1 2 1 2 * 2 1 1 2 2 2 2 2 1 2 / 2 1 1 2 2 2 2 2 1 2 Relop 2 1 1 1 1 1 1 2 1 2 ( 5 1 1 1 1 1 1 1 1 3 Trong đó :

Hàm : chư là moơt ký tự đái dieơn cho hàm

Relop : Các phép so sánh <, >, =, ≥, ≤, <> Các tác vú có mã sô là:

(1) Push

(2) Pop và ghi ra

(3) Xóa ký tự đang đĩc và xóa ký tự trong stack (pop nhưng khođng ghi ra)

(4) Giại thuaơt kêt thúc. Kêt quạ bieơu thức đã được ghi ra.

(5) Giại thuaơt dừng. Thođng báo có moơt loêi xuât hieơn. Bieơu thức gôc khođng được cađn đôi đúng.

Đôi với các hàm mà người sử dúng nhaơp vào, chương trình sẽ đĩc và gán cho 1 ký tự mà chương trình đã được laơp trình sẵn đeơ nhaơn biêt hàm đó cho vieơc tính toán sau này.

Sau moêi tác vú được lây, moơt phép so sánh mới được thực hieơn giữa ký tự đang đĩc, nó có theơ là ký tự ở laăn so sánh trước hay là ký tự kê, với ký tự ở đưnh stack. Quá trình tiêp túc cho đên bước 4 thì đát kêt quạ.

Thứ tự cụa các biên là như nhau trong cạ hai dáng trung tô và dáng haơu tô Balan ngược. Tuy nhieđn, thứ tự cụa các toán tử là khác nhau. Các toán tử xuât hieơn trong dáng haơu tô Ba Lan ngược thì theo thứ tự mà chúng thực sự được thực thi trong vieơc đánh giá bieơu thức.

Ví dú: (8+2*5)/(1+3*2-4)

→Haơu tô: 8 2 5 * + 1 3 2 * + 4 - /

III. ĐỊNH GIÁ BIEƠU THỨC DÁNG HAƠU TÔ BA LAN NGƯỢC

Giại thuaơt sau định giá bieơu thức dáng haơu tô Ba Lan ngược:

Bước 1: Ta xét từng ký tự trong bieơu thức dáng haơu tô Ba Lan

ngược, baĩt đaău từ beđn trái cho đên khi gaịp moơt toán tử, hàm, relop, hay dâu mũ(^).

Bước 2: Ghi toán tử hay relop và hai toán háng ngay sát beđn trái

cụa nó ra giây nháp (đôi với hàm, dâu ^ thì chư ghi 1 toán tử).

Bước 3: Xóa toán tử và hai toán háng đó trong bieơu thức, táo ra

moơt khoạng trông.

Bước 4: Thực hieơn phép toán cho bởi toán tử tređn hai(moơt đôi với

hàm và dâu mũ) toán háng và ghi kêt quạ vào khoạng trông.

Bước 5: Nêu bieơu thức chư còn chứa moơt giá trị thì đó là kêt quạ và

giại thuaơt kêt thúc, ngược lái thực hieơn lái bước 1.

Giại thuaơt định giá bieơu thức dáng haơu tô Ba Lan ngược tređn máy tính với Stack:

Cho bieơu thức có n ký hieơu, moêi ký hieơu là moơt biên hay moơt toán tử (hay hàm, relop, dâu mũ). Ta thực hieơn laăn lược các bước sau:

Bước 1 : Đaịt k = 1

Bước 2: Xét ký tự thứ k:

o Nêu ký tự đó là moơt biên, cât nó vào stack

o Nêu ký tự đó là moơt toán tử, laăn lượt lây từ đưnh stack hai toán háng (toán háng beđn phại trước, kê đó là toán háng beđn trái), thực hieơn phép toán và đaơy ngước kêt quạ leđn stack.

o Nêu ký tự đó là moơt đái dieơn cho moơt hàm sô bât kỳ hay dâu mũ , lây từ đưnh stack moơt toán háng, thực hieơn phép toán và đaơy ngược leđn stack

Bước 3: Nêu k = n, giại thuaơt kêt thúc, kêt quạ naỉm trong Stack

Ngược lái, coơng 1 vào k, và thực hieơn lái bước 2.

Lưu ý: Con sô tređn đưnh stack là toán háng beđn phại, khođng là toán háng

beđn trái. Đieău này quan trĩng đôi với các phép toán trừ và phép toán chia vì thứ tự cụa các toán háng có ý nghĩa (khođng giông như phép coơng và phép nhađn).

D.CÁC MAØN HÌNH CHÍNH CỤA CHƯƠNG TRÌNH

I. MAØN HÌNH SPLASH

Một phần của tài liệu Tối ưu số cho bài toán tối ưu một mục tiêu (Trang 69 - 73)

Tải bản đầy đủ (DOC)

(85 trang)
w