Thuật toán kí pháp ba lan

18 1.4K 4
Thuật toán kí pháp ba lan

Đ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

Thuật toán kí pháp ba lan

LOGO ĐỀ TÀI BÁO CÁO: THUẬT TOÁN KÍ PHÁP BA LAN www.themegallery.com GIỚI THIỆU CHUNG 1.SƠ LƯỢC VỀ THUẬT TOÁN KÍ PHÁP BA LAN 2.THUẬT 2.THUẬT TOÁN TOÁN KÍ KÍ PHÁP PHÁP BA BA LAN LAN 3.CÀI ĐẶT TRÊN C SƠ LƯỢC VỀ THUẬT TOÁN KÍ PHÁP BA LAN Ký pháp nghịch đảo Ba Lan phát minh vào khoảng thập kỷ 1950 Charels Hamblin-một triết học gia khoa học gia máy tính người Úc-dựa theo công trình ký pháp Ba Lan nhà Toán học người Ba Lan Łukasiewicz SƠ LƯỢC VỀ THUẬT TOÁN KÍ PHÁP BA LAN  Biểu thức tiền tố (prefix): Được biểu diễn cách đặt toán tử lên trước toán hạng  Biểu thức trung tố (infix): Toán tử nằm hai toán hạng  Biểu thức hậu tố (postfix): Được biểu diễn cách đặt toán tử sau toán hạng THUẬT TOÁN KÍ PHÁP BA LAN Ý tưởng toán  Đọc biểu thức từ trái sang phải, gặp toán hạng (con số biến) push toán hạng vào ngăn xếp, gặp toán tử, lấy hai toán hạng khỏi ngăn xếp (stack), tính kết quả, đẩy kết trở lại ngăn xếp  Khi trình kết thúc số cuối lại ngăn xếp giá trị biểu thức THUẬT TOÁN KÍ PHÁP BA LAN 2.Trình bày thuật toán a Thuật toán chuyển đổi từ trung tố sang hậu tố: + + + + + Nếu gặp toán hạng (con số biến) ghi vào chuỗi kết (chuỗi kết biểu thức trung tố) Nếu gặp dấu mở ngoặc, đưa vào Stack Nếu gặp toán tử (gọi 01) thực bước sau: - Nếu có toán tử 02 đỉnh ngăn xếp độ ưu tiên 01 nhỏ hay độ ưu tiên 02 lấy 02 khỏi ngăn xếp ghi vào kết - Push 01 vào ngăn xếp Nếu gặp dấu đóng ngoặc lấy toán tử ngăn xếp ghi vào kết đến lấy dấu mở ngoặc khỏi ngăn xếp Khi duyệt hết biểu thức trung tố, lấy tất toán hạng (nếu có) từ ngăn xếp ghi vào chuỗi kết THUẬT TOÁN KÍ PHÁP BA LAN b Thuật toán tính giá trị biểu thức hậu tố + Lặp qua Token biểu thức postfix từ trái qua phải: + Nếu toán hạng: Push vào Stack + Nếu toán tử: Pop hai toán hạng Stack tính giá trị chúng dựa vào toán tử Push kết lại vào Stack + Phần tử sót lại Stack sau vòng lặp kết biểu thức THUẬT TOÁN KÍ PHÁP BA LAN c.Trình bày thuật toán: - Input: Biểu thức trung tố hợp lệ - Output: Giá trị biểu thức hậu tố - Process:  Thuật toán chuyển từ dạng trung tố sang hậu tố: + Khởi động Stack rỗng + While (Không có lỗi chưa hết biểu thức) - Đọc Token (Token=hằng/biến/toán tử số học/ngoặc trái/ngoặcphải) - Nếu Token là: *) Ngoặc trái: Push vào Stack *) Ngoặc phải: Pop hiển thị phần tử Stack đến gặp ngoặc trái *) Toán tử: Nếu Stack rỗng hay Token ưu tiên phần tử đỉnh Stack Push vào Stack Ngược lại Pop hiên thị phần tử đỉnh Stack Lặp lại việc so sánh Token với phân tử đỉnh Stack  Toán hạng: hiển thị  Khi hết biểu thức trung tố: Pop hiển thị toàn Stack lại THUẬT TOÁN KÍ PHÁP BA LAN  Thuật toán tính giá trị biểu thức hậu tố: + Khởi động Stack rỗng + Lặp lại bước sau đến hết biểu thức: - Đọc Token (Hằng/biến/toán tử) - Nếu Token là: Toán hạng: Push vào Stack Toán tử:  Pop giá trị  Áp dụng toán tử cho giá trị lấy  Push kết vào Stack -End THUẬT TOÁN KÍ PHÁP BA LAN Ví dụ minh họa - Input: (6+4*(2+6))/2 - Output: 19 - Process:  Chuyển từ biểu thức từ dạng trung tố sang hậu tố: Các bước chuyển đổi thực bảng đây: THUẬT TOÁN KÍ PHÁP BA LAN Kí tự Thao tác Stack Chuỗi hậu tố ( Push ( ( Ghi vào kết + Push + Ghi vào kết * Push * ( +* ( Push ( (+*( Ghi vào kết + Push + Ghi vào kết ) Pop đến lấy ),ghi toán tử Pop kết ) Pop đến lấy ),ghi toán tử Pop kết / Push / Ghi vào kết 6426+*+2 Pop tất toán tử khỏi ngăn xếp ghi vào kết 6 + * + 2/ (+ 64 642 ( +* (+ 6426 (+* 6426+ 6426+*+ / THUẬT TOÁN KÍ PHÁP BA LAN  Tính giá trị biểu thức hậu tố: Quá trình tính toán diễn bảng đây: Kí tự Thao tác Trạng thái Stack Push 6 Push 64 Push 642 Push 6426 + Tính 2+6 ,Push 648 * Tính 4*8,Push 32 32 + Tính 6+32 38 Push 38 / Tính 38/2,Push 19 19 CÀI ĐẶT TRÊN C 1.Mô tả cài đặt chương trình: - Input: Biểu thức số học dạng trung tố - Output: Giá trị kết biểu thức dạng hậu tố - Process: - Hàm main: nhập biểu thức vào xâu input, gọi hàm chuyển đổi ,tính toán đưa kết hình - Hàm convert (char *input, char *output): phân tích xâu biểu thức vào input, chuyển đổi xâu biểu thức output biểu thức số học ban đầu dạng hậu tố + Duyệt phần tử xâu input + Bỏ qua gặp dấu cách + Nếu chữ số dấu chấm (số thực) :đưa vào xâu output + Gặp dấu mở ngoặc ‘(’ : đẩy vào Stack CÀI ĐẶT TRÊN C + Gặp dấu cộng ‘+’ trừ ‘-’ mà đỉnh ngăn xếp dấu ‘(’ đẩy vào, dấu mở ‘(’ lấy phần tử đỉnh khỏi ngăn xếp trước, đưa vào xâu output đẩy vào Stack + Gặp dấu nhân ‘*’ chia ‘/’: đẩy vào đỉnh ‘(’, ‘+’, ‘-’, lấy phần tử đỉnh trước đưa vào output đẩy vào Stack ngược lại + gặp toán tử lũy thừa ‘^’, thức ‘√’, logarit ‘l’, hàm lượng giác (sin → ‘s’, cos → ‘c’, tan→’t’): đẩy vào đỉnh toán tử trên, lấy phần tử đỉnh trước đưa vào output đẩy vào Stack ngược lại + Gặp dấu đóng ngoặc ‘)’ :đẩy phần tử ngăn xếp đến gặp dấu mở ngoặc ‘(’ đưa vào xâu output + cuối thu xâu output biểu thức dạng hậu tố CÀI ĐẶT TRÊN C - Hàm tính toán (char *bieuthuc): phân tích biểu thức dạng hậu tố, tính toán giá trị biểu thức theo thuật toán Ba Lan, trả lại giá trị kết biểu thức ban đầu + Duyệt xâu chứa biểu thức dạng hậu tố + Duyệt phần tử xâu + Nếu gặp dấu cách bỏ qua, phần tử = null kết thúc + Gặp chữ số dấu chấm lưu xâu tạm thời để thực việc chuyển đổi sang kiểu số thực vào Stack + Khi gặp toán tử : +, -, *, /, ^: đẩy phần tử đỉnh ngăn xếp ra, lưu vào biến tạm thời rôi thực phép tính + Khi gặp toán tử : sin, cos, tan, ln, e^ đẩy phần tử đỉnh lưu vào biến tạm thời tính + Lặp lại trình đến duyệt hết xâu (Khi ngăn xếp phần tử) -End CÀI ĐẶT TRÊN C  Một số lưu ý: Phép toán Biểu diễn Ví dụ x+y 2+4 X-y 7-1 X*y 2*4 chia x/y 10/2 Lũy thừa X^y 2^3 Lũy thừa số e Ex E3 Căn bậc √x √25 Logarit tự nhiên Lnx lx 120 sin Sinx sx S45 cos Cosx cx C30 tan Tanx tx Các phép toán mà Cộng chương trình có thểTrừ thực nhân t45 CÀI ĐẶT TRÊN C  Một số lưu ý: - - Số thực: Ví dụ: 5.3 Số âm: Ví dụ: -5 Các góc hàm lượng giác tính theo đơn vị radian Có thể sử dụng dấu đóng mở ngoặc Ví dụ: (2+5)*5-5.3/ (5.4-7) Các cách nhập biểu thức sau không hợp lệ: →sin-5→ Hợp lệ: sin(-5) →e-3→ Hợp lệ: e(-3) →2/-1→ Hợp lệ: 2/(-1) →vv7→ Hợp lệ: v(v7) →lnsin2→ Hợp lệ: ln(sin2) LOGO Add your company slogan www.themegallery.com [...]...THUẬT TOÁN KÍ PHÁP BA LAN Kí tự Thao tác Stack Chuỗi hậu tố ( Push ( ( 6 Ghi 6 vào kết quả + Push + 4 Ghi 4 vào kết quả * Push * ( +* ( Push ( (+*( 2 Ghi 2 vào kết quả + Push + 6 Ghi 6 vào kết quả ) Pop đến khi lấy được ),ghi các toán tử Pop được ra kết quả ) Pop đến khi lấy được ),ghi các toán tử Pop được ra kết quả / Push / 2 Ghi 2 vào kết quả 6426+*+2 Pop tất cả các toán tử ra khỏi... 2 vào kết quả 6426+*+2 Pop tất cả các toán tử ra khỏi ngăn xếp và ghi vào kết quả 6 4 2 6 + * + 2/ 6 (+ 64 642 ( +* (+ 6426 (+* 6426+ 6426+*+ / THUẬT TOÁN KÍ PHÁP BA LAN  Tính giá trị của biểu thức hậu tố: Quá trình tính toán được diễn ra như bảng dưới đây: Kí tự Thao tác Trạng thái Stack 6 Push 6 6 4 Push 4 64 2 Push 2 642 6 Push 6 6426 + Tính 2+6 ,Push 8 648 * Tính 4*8,Push 32 6 32 + Tính 6+32 38... gặp dấu mở ngoặc ‘(’ đưa vào xâu output + cuối cùng thu được xâu output là biểu thức dạng hậu tố CÀI ĐẶT TRÊN C - Hàm tính toán (char *bieuthuc): phân tích biểu thức dưới dạng hậu tố, tính toán giá trị biểu thức theo thuật toán Ba Lan, trả lại giá trị là kết quả của biểu thức ban đầu + Duyệt xâu chứa biểu thức dạng hậu tố + Duyệt từng phần tử của xâu + Nếu gặp dấu cách thì bỏ qua, nếu phần tử = null... đây vào Stack + Khi gặp các toán tử 2 ngôi : +, -, *, /, ^: đẩy lần lượt 2 phần tử ở đỉnh ngăn xếp ra, lưu vào 2 biến tạm thời rôi thực hiện phép tính + Khi gặp toán tử một ngôi : sin, cos, tan, ln, e^ đẩy phần tử đỉnh ra lưu vào biến tạm thời rồi tính + Lặp lại quá trình đến khi duyệt hết xâu (Khi ngăn xếp còn duy nhất một phần tử) -End CÀI ĐẶT TRÊN C  Một số lưu ý: Phép toán Biểu diễn Ví dụ x+y 2+4... (5.4-7) Các cách nhập biểu thức sau là không hợp lệ: →sin-5→ Hợp lệ: sin(-5) →e-3→ Hợp lệ: e(-3) →2/-1→ Hợp lệ: 2/(-1) →vv7→ Hợp lệ: v(v7) →lnsin2→ Hợp lệ: ln(sin2) LOGO Add your company slogan www.themegallery.com ... nếu đỉnh không phải là ‘(’, ‘+’, hoặc ‘-’, lấy phần tử đỉnh ra trước đưa vào output rồi đẩy vào Stack nếu ngược lại + khi gặp các toán tử lũy thừa ‘^’, căn thức ‘√’, logarit ‘l’, các hàm lượng giác (sin → ‘s’, cos → ‘c’, tan→’t’): đẩy vào ngay nếu đỉnh không phải là các toán tử ở trên, lấy phần tử đỉnh ra trước đưa vào output rồi đẩy vào Stack nếu ngược lại + Gặp dấu đóng ngoặc ‘)’ :đẩy các phần tử... Giá trị kết quả của biểu thức dạng hậu tố - Process: - Hàm main: nhập biểu thức vào xâu input, gọi hàm chuyển đổi ,tính toán đưa kết quả ra màn hình - Hàm convert (char *input, char *output): phân tích xâu biểu thức vào input, chuyển đổi xâu biểu thức ra output là biểu thức số học ban đầu dưới dạng hậu tố + Duyệt lần lượt các phần tử của xâu input + Bỏ qua khi gặp dấu cách + Nếu là chữ số hoặc dấu chấm... Ví dụ x+y 2+4 X-y 7-1 X*y 2*4 chia x/y 10/2 Lũy thừa X^y 2^3 Lũy thừa cơ số e Ex E3 Căn bậc 2 √x √25 Logarit tự nhiên Lnx hoặc lx 120 sin Sinx hoặc sx S45 cos Cosx hoặc cx C30 tan Tanx hoặc tx Các phép toán mà Cộng chương trình có thểTrừ thực hiện được nhân t45 CÀI ĐẶT TRÊN C  Một số lưu ý: - - Số thực: Ví dụ: 5.3 Số âm: Ví dụ: -5 Các góc trong các hàm lượng giác được tính theo đơn vị radian Có thể ... CHUNG 1.SƠ LƯỢC VỀ THUẬT TOÁN KÍ PHÁP BA LAN 2.THUẬT 2.THUẬT TOÁN TOÁN KÍ KÍ PHÁP PHÁP BA BA LAN LAN 3.CÀI ĐẶT TRÊN C SƠ LƯỢC VỀ THUẬT TOÁN KÍ PHÁP BA LAN Ký pháp nghịch đảo Ba Lan phát minh vào... theo công trình ký pháp Ba Lan nhà Toán học người Ba Lan Łukasiewicz SƠ LƯỢC VỀ THUẬT TOÁN KÍ PHÁP BA LAN  Biểu thức tiền tố (prefix): Được biểu diễn cách đặt toán tử lên trước toán hạng  Biểu... (infix): Toán tử nằm hai toán hạng  Biểu thức hậu tố (postfix): Được biểu diễn cách đặt toán tử sau toán hạng THUẬT TOÁN KÍ PHÁP BA LAN Ý tưởng toán  Đọc biểu thức từ trái sang phải, gặp toán hạng

Ngày đăng: 01/04/2016, 13:27

Mục lục

  • ĐỀ TÀI BÁO CÁO: THUẬT TOÁN KÍ PHÁP BA LAN

  • GIỚI THIỆU CHUNG

  • SƠ LƯỢC VỀ THUẬT TOÁN KÍ PHÁP BA LAN

  • Slide 4

  • THUẬT TOÁN KÍ PHÁP BA LAN

  • Slide 6

  • Slide 7

  • Slide 8

  • Slide 9

  • Slide 10

  • Slide 11

  • Slide 12

  • CÀI ĐẶT TRÊN C

  • Slide 14

  • Slide 15

  • Slide 16

  • Slide 17

  • PowerPoint Presentation

Tài liệu cùng người dùng

Tài liệu liên quan