Biểu diễn (n+1) vạch | thành số tự nhiên n

Một phần của tài liệu (LUẬN văn THẠC sĩ) cài đặt máy turing và ứng dụng máy turing đánh giá độ phức tạp thuật toán (Trang 59 - 62)

- Tư tưởng thuật toán:

Đầu dọc máy Turing gặp dấu vạch đầu tiên “|” chuyển thành kí tự “0”, nếu gặp kí tự “#” chương trình dừng, gặp vạch “|” chuyển thành “?” cộng 1 vào số trước “?” trái nhất. Khi hết kí tự “|” xóa các kí tự “?”. Dừng chương trình.

- Mã lệnh chương trình:

% Bien doi bieu dien vach sang so thap phan |||| => 3

% Bien doi bieu dien vach sang dang thap phan

1 | 0 R 2 // Khoi tri 0 tai | dau tien (Trai nhat)

2 # _ _ 0 // input = |: stop

2 | ? L 3 // Xoa | trai nhat

3 _ _ L 3 // Cong 1 3 {012345678} $& R 4 3 9 0 L _ 3 # 1 R 4 // Cong xong 4 _ _ R _ // Ve dau phai 4 # _ L 5 // Xoa ? 5 ? # L _ 5 _ _ _ 0 4 | ? L 3 E - Trong mã lệnh trên:

Bảng chữ cái là: các chữ số từ 0 đến 9, dấu vạch thẳng |, kí tự hai chấm “?”, kí tự khoảng trắng mặc định là “#”.

Tập trạng thái: 0,1,2,3,4,5. Trong đó trạng thái bắt đầu là 1, trạng thái kết thúc là 0.

Các kí hiệu %, // là toán tử điều khiển chú thích.

- Mô phỏng với bộ số đầu vào |||||||||||||| (14 vạch)

Final output: #13# (2)

Timer: 213

Vậy với thuật toán trên máy Turing cần 213 bước chuyển và ô nhớ cần 15 ô (vì các bước chuyển trung gian quá dài nên học viên chỉ đưa ra kết quả cuối cùng, số ô nhớ 15 là số ô được dùng trong quá trình xử lí của thuật toán).

* Thuật toán sử dụng imem:

- Tư tưởng thuật toán:

Khởi tạo imem, đầu đọc máy Turing gặp kí tự “|” trái nhất chuyển thành kí tự “#” (xóa vạch đầu tiên). Nếu hết vạch, dừng chương trình, gặp vạch cộng thêm 1 vào imem. Nạp hết kí tự “|” trên băng đưa giá trị trong imem ra băng, chương trình kết thúc.

- Mã lệnh chương trình:

% Chuyen dang vach sang so thap phan

% Dung imem

1 _ $i _ 2 // Khoi tri imem

2 | # R 3

3 # $> N 0 // Xuat imem, stop

3 | # N 4

4 _ $+ R 3 // Tang imem

E

- Trong mã lệnh trên:

Bảng chữ cái là: các chữ số từ 0 đến 9, dấu vạch thẳng |, kí tự khoảng trắng mặc định là “#”.

Tập trạng thái: 0,1,2,3,4. Trong đó trạng thái bắt đầu là 1, trạng thái kết thúc là 0.

Sử dụng bộ nhớ imem và các toán tử liên quan đến imem.

Các kí hiệu %, // là toán tử điều khiển chú thích.

- Mô phỏng với bộ số đầu vào |||||||||||||| (14 vạch).

Input: #||||||||||||||# (14)

Final output: #13# (2)

Timer: 29

Vậy với thuật toán trên máy Turing cần 29 bước chuyển và ô nhớ cần 14 ô (vì các bước chuyển trung gian quá dài nên học viên chỉ đưa ra kết quả cuối cùng, số ô nhớ 14 là số ô được dùng trong quá trình xử lí của thuật toán).

Một phần của tài liệu (LUẬN văn THẠC sĩ) cài đặt máy turing và ứng dụng máy turing đánh giá độ phức tạp thuật toán (Trang 59 - 62)