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

Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 11: Ký pháp nghịch đảo Balan (Reverse Polish Notation)

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 (408.71 KB, 10 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

Giảng viên: TS. Ngo Huu Phuc
Tel: 0438 326 077
Mob: 098 5696 580


Email:


<b>C</b>

<b>ấu trúc dữ liệu và giải thuật</b>



</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

<b>Bài 11: Ký pháp ngh</b>

<b>ịch đảo Balan</b>



<b>N</b>

<b>ội dung:</b>



<b>11.1. Reverse Polish Notation (RPN) (6)</b>


<b>11.2. Chuyển đổi biểu dạng Infix sang RPN (7)</b>
<b>11.3. Ví dụ về chuyển đổi từ Infix sang RPN (9)</b>
<b>11.4. Prefix Notation (3)</b>


<b>Tham khảo:</b>


1. Data structures and Algorithms Stacks.htm


2. Kyle Loudon Mastering Algorithms, Chapter 6 Stacks and Queues


3. Elliz Horowitz – Fundamentals of Data Structures, Chapter 3 Stacks and


Queues


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

<b>11.1. Ký pháp ngh</b>

<b>ịch đảo Balan (RPN)</b>



<b>Nội dung phần 11.1:</b>



</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

<b>11.1.1. Khái ni</b>

<b>ệm về Ký pháp nghịch đảo Balan</b>



 Ký pháp nghịch đảo Balan, còn được gọi là Postfix, do
Charles Hamblin đề xuất vào những năm 1950s…


 Ký pháp này lấy ý tưởng của Polish notation, được đề
xuất vào năm 1920 của nhà toán học người Balan có tên
Jan Łukasiewicz. (Trong một số tài liệu cịn gọi là ký pháp
Łukasiewicz).


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

<b>11.1.2. T</b>

<b>ại sao sử dụng RPN? (1/3)</b>



RPN cho phép giảm thời gian trong việc tính một biểu
thức. Người dùng khơng cần quan tâm đến dấu


ngoặc trong biểu thức.


Với ký pháp này cho phép thấy kết quả ngay sau
phép toán.


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

<b>11.1.2. T</b>

<b>ại sao sử dụng RPN?(2/3)</b>



Với việc cho thấy kết quả ngay, do đó, người sử dụng
có thể kiểm tra kết quả dễ hơn, nhanh hơn.


Với cách viết này, việc tính tốn dựa trên thứ tự của
biểu thức, kết hợp với thứ tự ưu tiên của phép tốn.
RPN có tính logic cao vì người dùng đưa biểu thức,



</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

<b>11.1.2. T</b>

<b>ại sao sử dụng RPN?(3/3)</b>



Xem xét một biểu thức đại số dạng Infix sau:
1 + 2 * 3 = ?


Kết quả là 7 hay 9?


Trả lời: kết quả là 7 vì phép * có độ ưu tiên cao hơn phép +.
Xem xét ví dụ: (1+2) * 3?


Kết quả là 9.


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

<b>11.1.3. M</b>

<b>ột số ví dụ về RPN (1/2)</b>



Xem xét ký pháp RPN sau: 4 5 + 6 *


 Kết quả của biểu thức là bao nhiêu?


 4 5 + → 4 + 5 = 9


 9 6 * → 9 * 6 = 54


Biểu thức 4 5 + 6 * tương tự như biểu thức dạng
Infix (4+5)*6.


Các bước thực hiện:


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

<b>11.1.3. M</b>

<b>ột số ví dụ về RPN(2/2)</b>



Xem xét biểu thức dạng Postfix: 6 4 5 + *



 Kết quả của biểu thức bằng?


 4 5 + → 4 + 5 = 9


 6 9 * → 6 * 9 = 54


Biểu thức 6 4 5 + * tương đương với biểu thức
dạng Infix: 6 * (4 + 5).


Các bước thực hiện:


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

<b>11.2. Chuy</b>

<b>ển đổi biểu dạng Infix sang RPN</b>



<b>11.2.1</b>. Ví dụ về chuyển đổi biểu thức dạng Infix sang
RPN.


<b>11.2.2</b>. Thuật toán chuyển đổi biểu thức dạng Infix
sang RPN.


</div>

<!--links-->

×