1. Trang chủ
  2. » Luận Văn - Báo Cáo

CÁC NGÔN NGỮ ĐỆ QUY VÀ ĐỆ QUY LIỆT KÊ (TIỂU LUẬN MÔN LÝ THUYẾT TÍNH TOÁN)

19 782 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 281,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

MỤC LỤC MỤC LỤC 1 PHẦN 1: 2 10.1 ĐỆ QUY VÀ LIỆT KÊ ĐỆ QUY 2 10.2 LIỆT KÊ MỘT NGÔN NGỮ 5 10.3 KHÔNG PHẢI MỌI NGÔN NGỮ ĐỀU LÀ LIỆT KÊ ĐỆ QUY 8 PHẦN 2: BÀI TẬP 16 PHẦN 3: TÀI LIỆU THAM KHẢO 19 PHẦN 1: PHẦN LÝ THUYẾT 10.1 ĐỆ QUY VÀ LIỆT KÊ ĐỆ QUY Chương này chúng ta sẽ tập trung (to concentrate on) vào nhận dạng ngôn ngữ (languagerecognition), một khía cạnh của các máy Turing (TMs) và nghiên cứu chi tiết hơn về các ngôn ngữ có thể được chấp nhận nhờ máy Turing. Chúng ta bắt đầu bằng cách hình thức hóa sự khác biệt giữa thừa nhận (accepting) và nhận ra (recognizing) một ngôn ngữ. Định nghĩa 10.1. Cho L là một ngôn ngữ nào đó. Một máy Turing cùng bộ kí tự nhập được phát biểu là thừa nhận L nếu L(T) = L. Máy Turing T recognizes hoặc decides L nếu T tính được hàm bộ phận (characteristic function XL: . Mặt khác, T đón nhận L nếu T dừng với bất kì chuỗi x nào trong tập , kết quả trả về 1 nếu x L và ngược lại trả về là 0. Một ngôn ngữ L là liệt kê đệ quy (recursively enumerable) nếu có tồn tại một máy Turing T chấp nhận (accept) L và đệ quy nếu có một máy Turing nhận ra L. Mọi ngôn ngữ đệ quy cũng đều là liệt kê đệ quy nếu: T là một máy Turing nào đó nhận ra L thì khi đó một máy bổ sung sẽ crash thay vì trả về kết quả 0 chấp nhận L. Vậy là chúng ta đã nhận diện được vấn đề còn tồn đọng (potential) với hướng đi trái ngược nhau. Nếu T là một máy Turing chấp nhận L thì có thể có các chuỗi không nằm trong L mà T crashes và khi đó sẽ không bao giờ có được câu trả lời. Sau chương này chúng ta sẽ nghiên cứu (investigate) thêm các ngôn ngữ có khả năng không thể loại bỏ (khử) được. Còn bây giờ chúng ta hãy ghi nhận một phần (partial) kết quả mà chúng ta đã đề cập. Định lý 10.1 Nếu L được chấp nhận bởi một máy Turing T không xác định và mỗi bước di chuyển có thể của T cho ra kết quả hoặc là dừng hoặc là crash thì khi ấy L là đệ quy.

Trang 1

ĐẠI HỌC ĐÀ NẴNG

TRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA CÔNG NGHỆ THÔNG TIN

Tel (84-511) 736 949, Fax (84-511) 842 771 Website: itf.ud.edu.vn , E-mail: cntt@edu.ud.vn

Tiểu luận môn học

LÝ THUYẾT TÍNH TOÁN

Đề tài:

CÁC NGÔN NGỮ ĐỆ QUY VÀ ĐỆ QUY

LIỆT KÊ

- NGUYỄN ĐÔNG KỲ

- VÕ TRƯƠNG HOÀNG OANH

- NGUYỄN THỊ UYÊN THẢO

ĐÀ NẴNG, 05/2010

Trang 2

MỤC LỤC

10.1 ĐỆ QUY VÀ LIỆT KÊ ĐỆ QUY 3

10.2 LIỆT KÊ MỘT NGÔN NGỮ 6

10.3 KHÔNG PHẢI MỌI NGÔN NGỮ ĐỀU LÀ LIỆT KÊ ĐỆ QUY 9

PHẦN 2: BÀI TẬP 17

PHẦN 3: TÀI LIỆU THAM KHẢO 19

Trang 3

PHẦN 1: PHẦN LÝ THUYẾT

10.1 ĐỆ QUY VÀ LIỆT KÊ ĐỆ QUY

Chương này chúng ta sẽ tập trung (to concentrate on) vào nhận dạng ngôn ngữ (language-recognition), một khía cạnh của các máy Turing (TMs) và nghiên cứu chi tiết hơn về các ngôn ngữ có thể được chấp nhận nhờ máy Turing Chúng ta bắt đầu bằng cách hình thức hóa sự khác biệt giữa thừa nhận

(accepting) và nhận ra (recognizing) một ngôn ngữ

Định nghĩa 10.1 Cho L ⊆∑* là một ngôn ngữ nào đó Một máy Turing cùng bộ kí tự nhập ∑ được phát biểu là thừa nhận L nếu L(T) = L Máy Turing T recognizes hoặc decides L nếu T tính được hàm bộ phận (characteristic function XL: ∑* →{0 , 1} Mặt khác, T đón nhận L nếu T dừng với bất kì chuỗi x nào trong tập ∑*

, kết quả trả về 1 nếu x ∈L và ngược lại trả về là 0

Một ngôn ngữ L là liệt kê đệ quy (recursively enumerable) nếu có tồn tại một máy Turing T chấp nhận (accept) L và đệ quy nếu có một máy Turing

nhận ra L

Mọi ngôn ngữ đệ quy cũng đều là liệt kê đệ quy nếu: T là một máy Turing nào đó nhận ra L thì khi đó một máy bổ sung sẽ crash thay vì trả về kết quả 0 chấp nhận L Vậy là chúng ta đã nhận diện được vấn đề còn tồn đọng (potential) với hướng đi trái ngược nhau Nếu T là một máy Turing chấp nhận

L thì có thể có các chuỗi không nằm trong L mà T crashes và khi đó sẽ không

bao giờ có được câu trả lời Sau chương này chúng ta sẽ nghiên cứu (investigate) thêm các ngôn ngữ có khả năng không thể loại bỏ (khử) được Còn bây giờ chúng ta hãy ghi nhận một phần (partial) kết quả mà chúng ta đã

đề cập

Định lý 10.1 Nếu L được chấp nhận bởi một máy Turing T không xác định và

mỗi bước di chuyển có thể của T cho ra kết quả hoặc là dừng hoặc là crash thì khi ấy L là đệ quy

Trang 4

Chứng minh: chúng ta xây dựng máy Turing T’ sao cho có một sự thay đổi

của máy Turing T2 trong phần chứng minh định lý 9.2 Trong trường hợp đó,

T2 tái tạo mỗi bước di chuyển hữu hạn có thể của T, máy T dừng lại nếu T tìm thấy bước mà gây cho T dừng, và ngược lại máy T sẽ lặp mãi mãi Máy mà chúng ta cần bây giờ phải khác với hai dấu hiệu này Trước tiên, nếu và khi T’ tìm thấy một bước di chuyển của T làm cho T dừng thì T sẽ tạo xuất ra ∆ 1 trên băng 1 trước khi máy T dừng Thứ 2, sự thay đổi này mới quan trọng hơn Nếu không có bước di chuyển nào gây cho T dừng thì T’ phải xác định một vài thời điểm và dừng lại với ∆ 0 trên băng 1

Nhớ lại chứng minh trong định lý 9.2, T2 theo dõi các bước di chuyển bằng cách dùng một chuỗi các con số trên băng 2, số thứ i chỉ ra sự lựa chọn

mà T2 thực hiện tại bước thứ i Rõ ràng nếu có một vài số nguyên n sao cho mọi chuỗi có thể của n số trình bày lại tuần tự các bước di chuyển mà dẫn đến crash, vì bất kì một chuỗi số nào dài hơn mà được bắt đầu bằng chuỗi có chiều dài n thì khi ấy chuỗi nhập sẽ không được chấp nhận

Định lý 10.2 Giả sử L1 và L2 là các ngôn ngữ liệt kê đệ quy trên ∑, khi đó L1

∪L2 và L1∩L2 cũng là ngôn ngữ liệt kê đệ quy.

Chứng minh: Giả sử rằng T1 = (Q1, ∑, Γ1, q1, δ1) và T2 = ((Q2, ∑, Γ2, q2, δ2)

là các máy Turing chấp nhận L1 và L2 Chúng ta cần xây dựng các máy Turing chấp nhận L1 ∪L2 và L1∩L2 Ý tưởng này giống như chứng minh trong định lý

3.4, khi đó chúng ta kết hợp Fas chấp nhận L1 và L2 để có được sự chấp nhận

L1 ∩L2 Chúng ta gom (include in) tập các trạng thái các cặp trong Q2 x Q2.

Nên nhớ lại (recall) kỹ thuật này không làm việc với PDAs vì các ngăn xếp

Lý do để máy Turing thực hiện được ở đây là chúng ta thoải mái sử dụng 2 băng trong máy Turing Chúng ta mô tả giải pháp này cho L1 ∪L2.

Máy Turing 2 băng (two – tape) T = (Q 1 , ∑, Γ , q0, δ ) bắt đầu bằng

việc sao chép chuỗi nhập x trên băng 2 và chèn một dấu # để đánh dấu lúc bắt đầu trên mỗi băng Mô phỏng đồng thời (the simultaneous simulation) máy Turing T1 trên băng 1 và máy Turing T2 trên băng 2 thực hiện (to accomplish) bằng cách cho phép các bước di chuyển có thể:

Trang 5

δ ((p1,p2), (a1,a2))=((q1,q2), (b1,b2), (D1,D2))

Trong đó: cả hai giá trị của i, δi(pi, ai) = (qi, bi, Di) Các kết quả mô phỏng này

có thể là:

1 Cả T1 và T2 đều dừng lại trong trường hợp T không bao giờ dừng

2 Ít nhất một trong hai máy T1 và T2 dừng trong trường hợp T dừng

3 Một trong hai máy crash Nếu cả hai máy crash đồng thời thì T crash Nếu một máy crash, T cũng bỏ qua mô phỏng này (ví dụ như là bỏ qua băng đó) và tiếp tục với máy khác Nếu một máy dừng lại do hoặc là crash hoặc là dừng, thì T cũng dừng theo cách đó

Việc xây dựng gây cho T dừng khi và chỉ khi có ít nhất một trong hay máy

T1 và T2 dừng, có thể bao gồm trường hợp T chấp nhận ngôn ngữ L1 ∪L2.

Ngôn ngữ L1 ∩L2 cũng được xử lý theo cách tương tự, chấp nhận máy

Turing có thể crash ngay khi hoặc T1 crach hoặc là T2 crash và máy Turing có thể chỉ dừng sau khi cả T1 và T2 đã dừng

Giao và hội cũng là thuộc tính riêng của đệ quy Đối với các ngôn ngữ đệ quy, chúng ta có thể thêm phép tính bù cho danh sách này cũng được (as well)

Định lý 10.3 If L is recurse, so is L’

Chứng minh: Nếu T là máy Turing chấp nhận L, chúng ta có thể tạo ra máy

Turing đón nhận L’ bằng sự thay đổi 2 băng xuất

Chứng minh đơn giản này không thích hợp trong (to adapt) bất cứ

trường hợp nào rõ ràng trong các ngôn ngữ liệt kê đệ quy It does not immediatetly follow that the coresponding statement for RE languages is false (although it is); howerver, the next result suggests that it is at least less likely

to be true

Định lý 10.4 Nếu L là ngôn ngữ liệt kê đệ quy whose complement is RE thì L

là đệ quy

Trang 6

Chứng minh: Cho T1 và T2 là các máy Turing chấp nhận ngôn ngữ L và L’.

Chúng ta xây dựng một máy Turing T hai băng dùng để đón nhận L, bắt đầu việc xây dựng như trong chứng minh định lý 10.2 cho trường hợp hợp của 2 ngôn ngữ Sự khác nhau ở chỗ là bây giờ chúng ta biết trước (in advance)

được bất cứ chuỗi nhập x nào, rõ ràng (precisely) là một trong 2 máy Turing

T1 và T2 sẽ dừng lại Do đó, có đủ khả năng để hiệu chỉnh máy T như sau: Lúc T1 hoặc T2 dừng, T sẽ xóa bỏ trên băng 1 và xuất ra 0 hoặc 1 trước khi dừng, điều này tùy thuộc vào máy dừng chấp nhận L hoặc L’ hay không

10.2 LIỆT KÊ MỘT NGÔN NGỮ

Chúng ta bắt đầu bằng việc mô tả một cách chính xác cách mà một máy Turing liệt kê 1 ngôn ngữ Điều này có ích khi sử dụng máy Turing có ít nhất hai băng, trong đó một băng được thiết kế như là băng xuất

Định nghĩa 10.2 Cho T là máy Turing k băng, trong đó k >= 2, và cho L

⊆ * Chúng ta nói rằng T liệt kê L nếu T hoạt động sao cho các điều kiện sau được thỏa mãn:

1 Băng đầu trên băng đầu tiên không được dịch chuyển sang trái

2 Tại mỗi một thời điểm trong hoạt động của T, băng 1 chứa:

x1#x2# #xn#y , trong đó n ≥0, mỗi xi, xi’ là phân biệt nhau, và

y là một tiếp đầu ngữ của phần tử L

3 Với mọi x ∈L, x xuất hiện nhưng là một chuỗi xi trên băng 1.

Nếu L là một ngôn ngữ hữu hạn, máy Turring theo định nghĩa có thể hoặc là dừng khi tất cả các phần tử L xuất hiện trên băng 1 hoặc là máy Turing tiếp tục thực hiện việc di chuyển mà không cần phải in ra những chuỗi khác trên băng 1 Nếu L là vô hạn, máy T tiếp tục di chuyển mãi mãi Định nghĩa này rõ ràng là cách thích hợp để hiện thực (to formulate) ý tưởng của máy T là

“liệt kê các phần tử của L”

Như chúng ta đã định nghĩa, một ngôn ngữ là liệt kê đệ quy nếu có thể được chấp nhận bởi một số máy Turing

Trang 7

Mặc khác, nếu chúng ta có một máy Turing T dùng để liệt kê L thì khi

đó cho trước một chuỗi nhập x, chúng ta có thể thử (to attempt) kiểm tra xem

x đối với phần tử trong L bằng cách chờ xem (waiting to see) x có xuất hiện trên băng xuất của T hay không Máy Turing T1 có thực hiện chiến lược này bảo đảm (guarantee) chấp nhận L vì nếu chuỗi x nằm trong L thì cuối cùng x cũng sẽ xuất hiện, còn nếu x không nằm trong L thì x sẽ không xuất hiện (vì thế máy Turing sẽ lặp mãi trừ phi L là hữu hạn)

Mặc khác, nếu T là một máy Turing chấp nhận L thì khi đó liệt kê L, chúng ta bắt đầu bằng một vài thứ tự chuẩn của tất cả các chuỗi nằm trong

∑*

, chẳng hạn như thứ tự kinh điển (canonical order) đã được giới thiệu

trong phần 9.6 Trong thứ tự này, những chuỗi nào ngắn hơn đến trước (to precede) những chuỗi dài hơn, đồng thời những chuỗi nào có cùng độ dài thì được xếp theo thứ tự alphabe Chúng ta xét tất cả các chuỗi theo thứ tự này, đồng thời với mỗi chuỗi x chúng ta thử chọn kể cả x trong việc liệt kê của chúng ta Đây là chỗ mà lý luận cần phức tạp một chút: máy T có thể lặp mãi trên chuỗi nhập x Chứng minh chính thức của chúng ta có thể sẽ vận dụng (handle) vấn đề này

Định lý 10.5 Một ngôn ngữ L ⊆∑*

là liệt kê đệ quy (có thể được chấp nhận bởi một số mát Turing) khi và chỉ khi L có thể được liệt kê bởi một số máy Turing

Chứng minh: Giả sử T là một máy Turing liệt kê L Một máy T1 chấp nhận L được xây dựng có hơn 1 băng, băng 1 là băng thêm vào ( tape 1 being the extra tape) có vai trò như là băng xuất Máy Turing T1 mô phỏng (simulate) T

chấp nhận bất cứ lúc nào dấu # được ghi trên băng 2, mô phỏng máy T dừng khi T1 đối sánh chuỗi nhập với chuỗi đã được liệt kê phía trước dấu # Nếu hai chuỗi kết hợp giống nhau thì T1 dừng Rõ ràng là T1 chấp nhận một cách chính xác các chuỗi đã được tạo ra trên băng 2, giả định là các phần tử của L

Chính xác hơn, T1 có thể kết hợp với các chuyển tiếp của T , xét các băng khác trừ băng 1 của máy T bằng sự thay đổi như sau: mỗi một chuyển tiếp đòi hỏi phải (involve) ghi dấu # trên băng 2 được thay thế bởi tuần tự các chuyển tiếp trong đó các băng ngoại trừ băng 1 và băng 2 được bỏ qua, chuỗi

Trang 8

nhập được so với chuỗi ngay trước dấu # trên băng 2, và nếu không kết hợp T1

quay trở lại tình trạng mà dẫn đến kết quả từ chuyển tiếp ban đầu

Theo hướng ngược lại (in the converse direction), giả sử T chấp nhận L Chúng ta xây dựng một máy Turing T1 ba băng liệt kê ngôn ngữ L Băng 1 là băng xuất, băng 2 được dùng bởi T1 để tạo ra các chuỗi trong tập ∑* và băng

3 là băng T1 sử dụng để mô phỏng hành động của T trên mỗi chuỗi được tạo

Để tránh khó khăn được thảo luận ở trước, T1 mô phỏng tuần tự hữu hạn các bước chuyển động của T hơn là cố tiếp tục hoàn thành việc xử lý T trên một chuỗi đơn Vì lý do này trên băng 2 không chỉ lưu lại các chuỗi được tạo

ra cho đến bây giờ (so far) mà số lượng các bước di chuyển của T cũng được thực hiện trên mỗi chuỗi đó

Chúng ta chọn (adopt) thứ tự trên ∑*

Lấy ví dụ nếu ∑ ={a,b} thì các chuỗi được tạo ra theo thứ tự sẽ là :

∧, a, b, aa, ab, ba, bb, aaa, aab, …, bbb, aaaa, aaab,…

Máy Turing T1 tạo một dãy các vị trí (pass) Với vị trí đầu tiên, T1 tạo ra

chuỗi ∧ đồng thời mô phỏng một bước di chuyển của T trên chuỗi nhập đó Ở

vị trí thứ 2, T1 mô phỏng hai bước di chuyển của T trên chuỗi nhập ∧, rồi tạo

ra a đồng thời mô phỏng một bước di chuyển trên chuỗi nhập đó Trên vị trí thứ ba, T1 tạo ra 3 bước di chuyển trên ∧, 2 bước di chuyển trên a và một

bước di chuyển trên b Sau khi vị trí i hoàn thành, băng 2 sẽ trông giống như thế này :

1

1

11 1

11 1

∆∆ a b x

Trong đó x là chuỗi thứ i theo thứ tự Suốt các vị trí tiếp theo T1 xử lý mỗi chuỗi thứ i trên băng 2 bằng cách thêm vào một số 1 đằng sau chuỗi ∆, sao chép chuỗi này vào trên băng thứ 3, mô phỏng T trên chuỗi nhập đó cho các bước được chỉ định, đồng thời xóa băng 3 Nếu mô phỏng dừng, T1 sao chép chuỗi này trên băng 1 và theo sau chuỗi này là dấu # Bước cuối cùng tại

i i - 1 i - 2

Trang 9

vị trí này là để kết thúc băng 2 phần tử tiếp theo của ∑*

(phần tử này đứng sau x), đặt một chữ 1 sau x đồng thời mô phỏng bước di chuyển của T trên chuỗi nhập đó

Chúng ta không chỉ ra một cách rõ ràng (explicitly) các thiết bị theo dõi

mà T cần để thực hiện những bước này, tuy nhiên các bước này hoàn toàn dễ

hiểu (straightforward) Rõ ràng mọi chuỗi đều được chấp nhận bởi máy T

ngay cả chuỗi được liệt kê trên băng 1 và không có chuỗi được liệt kê

Trong phần chứng minh định lý 10.5, chúng ta nên lưu ý rằng mặc dầu những chuỗi trong ∑*

được tạo theo thứ tự cổ điển trên băng 2, nói chung các chuỗi trong ngôn ngữ L không được liệt kê theo thứ tự trên băng 1 Với các

giả định tốt hơn (stronger assumption) về máy T có nghĩa là giả định rằng

(amount to assuming) ngôn ngữ L không chỉ là có thể liệt kê đệ quy mà còn đệ quy Ngược lại, dễ dàng chỉ ra rằng nếu có một máy Turing T liệt kê ngôn ngữ

L theo thứ tự cổ điển thì khi ấy L phải là đệ quy

Định lý 10 6: L là đệ quy khi và chỉ khi có một máy Turing liệt kê ngôn ngữ

L theo thứ tự cổ điển

Chứng minh: Chứng minh xem bài tập Exercise 10.7

10.3 KHÔNG PHẢI MỌI NGÔN NGỮ ĐỀU LÀ LIỆT KÊ ĐỆ QUY

Các mô hình tính toán đơn giản mà chúng ta vừa xem xét trước đây, Automat hữu hạn (Fas) và Automat đẩy xuống (PDAs) đều có khả năng (capable) chấp nhận một vài kiểu ngôn ngữ Chúng ta cần chỉ ra được một số máy Turing (TMs) chúng ta chỉ ra cái gì trong cả hai trường hợp này: Có các ngôn ngữ

Định nghĩa 10.3: Một tập S là vô hạn đếm được (countably infinite) nếu có một song ánh từ (bijection) từ N đến S, và có thể đếm được (countable) nếu tập S hoặc là vô hạn đếm được hoặc là hữu hạn đếm được Tập A là vô hạn

hạn không đếm được (uncountably infinte) hoặc nói đơn giản là không đếm được nếu tập A này không đếm được

Trang 10

Ta nói rằng f: N →S nghĩa là có ba điều cần có:

1 Với mọi số tự nhiên n, f(n) ∈S

2 Với bất kì 2 số m và n khác nhau, f(m) ≠f(n)

3 Mọi phần tử của S đều là f(n) đối với một vài số tự nhiên n

Do đó, ta nói rằng S là vô hạn đếm được (kích thước tương tự như N) nghĩa là các phần tử của S có thể được liệt kê chẳng hạn như f(0), f(1), sao cho mọi phần tử của S đều xuất hiện chính xác một lần trên danh sách Ta nói rằng S đếm được cũng có nghĩa là như vậy, ngoại trừ danh sách này có thể dừng sau một số hữu hạn các số hạng nào đó

Có ít nhất 2 cách mà trong đó cách thứ nhất có thể hiểu sai (misinterpret) cụm từ “có thể được liệt kê” Dĩ nhiên điều này có thể không bao giờ thực hiện được việc liệt kê tất cả các phần tử của một tập vô hạn bằng vật lý Ta nói rằng S “có thể được liệt kê” nghĩa là chỉ có duy nhất một hàm f như ở trên sao cho bất kì chuỗi x ∈S, nếu chúng ta ghi xuống đầy đủ các số hạng (term) f(0), f(1), thì khi đó x xuất hiện như là một trong những số hạng này Quan trọng hơn nữa, khi chúng ta nói rằng một tập S là vô hạn đếm được, chúng ta không nói có một số giải thuật để liệt kê các phần tử này Chúng ta

chỉ nói rằng “có tồn tại” một song ánh (bijection) f; có thể có hoặc không có

một giải thuật nào cho phép chúng ta tìm ra được f(n) đối với một số tự nhiên

n đã cho

Lưu ý rằng bất kì 2 tập hữu hạn đếm được nào cũng đều có kích thước tương tự nhau Nó có thể là trường hợp mà tất cả các tập không đếm được đều

có kích thước giống nhau Nếu trên thực tế (in fact) có các tập vô hạn kích thước khác nhau, tuy nhiên bất cứ một tập không đếm được nào cũng đều lớn hơn một tập có thể đếm được Mặc dù điều này không được rõ ràng lắm nhưng

đây là một kết quả có được ngay tức thì (immediate consequence) của cơ sở lập luận (fact) sau.

Ngày đăng: 11/11/2014, 15:21

HÌNH ẢNH LIÊN QUAN

Hình 10.1: liệt kê các phần tử của   ∞ - CÁC NGÔN NGỮ ĐỆ QUY VÀ ĐỆ QUY LIỆT KÊ (TIỂU LUẬN MÔN LÝ THUYẾT TÍNH TOÁN)
Hình 10.1 liệt kê các phần tử của  ∞ (Trang 12)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w