Tải bản đầy đủ (.docx) (130 trang)

Ứng dụng lý thuyết đồ thị để khảo sát đặc trưng một số lớp ngôn ngữ và điều khiển tương tranh 62 46 35 01

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 (766.27 KB, 130 trang )

MỤC LỤC

Trang phụ bìa
Lời cam đoan
Mục lục
Danh mục các thuật ngữ
Danh mục các hình vẽ
MỞ ĐẦU

Chƣơng 1. Các khái niệm cơ sở
1.1. Đại cƣơng về đồ thị
1.1.1. Định nghĩa đồ thị
1.1.2. Đƣờng đi trên đồ thị
1.1.3. Một số cách biểu diễn đồ thị trong máy tính
1.1.4. Bài toán đƣờng đi trên đồ thị
1.1.5. Đồ thị gán nhãn
1.1.6. Các thuật toán duyệt đồ thị
1.2. Ngôn ngữ hình thức và otomat
1.2.1. Bảng chữ cái, từ và ngôn ngữ
1.2.2. Các phép toán trên ngôn ngữ
1.2.3. Một số công cụ sinh ngôn ngữ chính quy
và mối liên hệ giữa chúng
1.3. Hệ mạng
1.3.1. Mạng Petri
1.3.2. Hệ mạng điều kiện - biến cố
1.3.3. Hệ mạng vị trí - chuyển
1.4. Kết luận cuối chƣơng
Chƣơng 2. Các thuật toán điều khiển tƣơng tranh

4



trên hệ mạng và độ phức tạp của chúng

2.1.

Bài toán điều khiển tƣơng tranh các quá trình

2.2.

Thuật toán điều khiển tƣơng tranh trên các hệ mạng điề
- biến cố
2.2.1. Đồ thị các trƣờng hợp
2.2.2. Các bƣớc tƣơng tranh trên hệ mạng điều kiện 2.2.3. Đầy đủ hoá đồ thị các trƣờng hợp

2.3.

Thuật toán điều khiển tƣơng tranh trên các hệ mạng vị
chuyển
2.3.1. Đồ thị phủ của hệ mạng vị trí - chuyển

2.3.2. Các bƣớc tƣơng tranh trên hệ mạng vị trí - chuy

2.3.3. Tìm bƣớc tƣơng tranh bằng cách rút gọn đồ thị p
2.4.

Kết luận cuối chƣơng

Chƣơng 3. Độ phức tạp otomat của các thuật toán
đoán nhận ngôn ngữ


3.1.

Độ phức tạp otomat của nguồn

3.2.

Độ phức tạp otomat của biểu thức chính quy
3.2.1. Biểu thức chính quy

3.2.2. Xây dựng nguồn tƣơng đƣơng với biểu thức ch
3.3.

Độ phức tạp otomat của sơ đồ sinh
3.3.1. Khái niệm sơ đồ sinh
3.3.2. Độ phức tạp otomat của sơ đồ sinh

3.4.

Độ phức tạp otomat của chùm đầu
3.4.1. Khái niệm chùm đầu

3.5.

3.4.2. Otomat hữu hạn đơn định đoán nhận ngôn ngữ
sinh bởi chùm đầu
Kết luận cuối chƣơng

PHẦN KẾT LUẬN
DANH MỤC CÁC CÔNG TRÌNH KHOA HỌC CỦA TÁC GIẢ
LIÊN QUAN ĐẾN LUẬN ÁN

TÀI LIỆU THAM KHẢO

5


DANH MỤC CÁC THUẬT NGỮ
Graph

Đồ thị
Tập đỉnh

Set of vertices

Tập cạnh

Set of edges

ánh xạ kề

Adjacency mapping

Đƣờng đi

Path

Chu trình

Cycle

Đồ thị vô hƣớng


Undirected graph

Đồ thị có hƣớng

Directed graph

Đa đồ thị

Multigraph

Đồ thị gán nhãn

Labelled graph

Đồ thị liên thông

Connected graph

Mảng liên thông

Connected component

Đồ thị liên thông mạnh

Strongly connected graph

Ma trận kề

Adjacency matrix


Danh sách kề

Adjacency list

Duyệt đồ thị theo chiều sâu

Depth-first search

Duyệt đồ thị theo chiều rộng

Breadth-first search

Đồ thị hai phần

Bipartite graph

Đồ thị các trƣờng hợp

Case graph

Đồ thị phủ

Coverage graph
Formal language

Ngôn ngữ hình thức
Bảng chữ cái

Alphabet


Từ

Word

Từ vô hạn

Infinitive word

6


Văn phạm
Văn phạm cảm ngữ cảnh
Văn phạm phi ngữ cảnh

Grammar
Context-sensitive grammar
Context-free grammar

Văn phạm chính quy

Regular grammar

Otomat

Automaton

Otomat hữu hạn


Finite automaton

Otomat đơn định

Deterministic automaton

Otomat không đơn định
Nguồn

Nondeterministic
automaton

Biểu thức chính quy

Source

Đồ thị sinh

Regular expression

Cung bù

Generating graph

Cung cốt yếu

Complement arc

Sơ đồ sinh


Essential arc

Chùm đầu

Generating scheme

-ngôn ngữ

Heading bunch -

Thuật toán đoán nhận

language

Thuật toán phân tích

Recognition algorithm

Độ phức tạp

Parsing algorithm

Độ phức tạp đoán nhận

Complexity

Độ phức tạp otomat

Recognition complexity


Hệ mạng

Automata complexity
Mạng Petri

Net system

Tập vào

Petri net

Tập ra

Pre-set

Mạng đơn giản

Post-set

Quan hệ đạt đƣợc

Simple net
Reachability relation

7


Tp tỏch c
B-ớc t-ơng tranh


Detached set

Hệ mạng điều kiện - biến cố

Concurrent step

Hệ mạng vị trí - chuyển

Condition-event net system

Tr-ờng hợp

Place-transition net system

Dãy hoạt động

Case

Dung l-ợng

Firing sequence

Bộ đánh dấu

Capacity

Hệ mạng sống

Marking


Hệ mạng chu trình

Live net system

Quá trình

Cycle net system

Quá trình tuần tự

Process

Quá trình t-ơng tranh

Sequential process

Hành vi

Concurrent process

Hành vi tuần tự

Behaviour

Hành vi t-ơng tranh

Sequential behaviour
Concurrent behaviour

8



DANH MC CC HèNH V
Trong bn lun ỏn 21 cú hỡnh v
Hỡnh v
Hỡnh 1.1: th hu hn
Hỡnh 1.2. th cú hng v ma trn k tng ng
Hỡnh 1.3. Mng cỏc danh sỏch k biu din th
Hỡnh 1.4. th gỏn nhón
Hỡnh 1.5. Th t ca cỏc nh c duyt theo chiu sõu
Hỡnh 1.6. Th t ca cỏc nh c duyt theo chiu rng
Hỡnh 1.7. Ngun I1
Hỡnh 1.8. Ngun n nh y K1
Hỡnh 1.9. Ngun K2 l ngun bự ca ngun K1
Hỡnh 1.10. Mng Petri n gin
Hỡnh 1.11. Mt h mng v trớ - chuyn
Hỡnh 2.1. S bin i tng tranh mt quỏ trỡnh tun t
Hình 2.2. Đồ thị các tr-ờng hợp của hệ
Hình 2.3. Đồ thị các tr-ờng hợp đầy đủ
Hình 2.4. Minh hoạ Định lý 2.9
Hình 2.5. Một phần của đồ thị phủ và đồ thị phủ rút gọn
Hình 3.1. Hai đồ thị sinh đơn giản I1 và I2 có l(I1) = l(I2) = 0
Hình 3.2. Đồ thị sinh lấy tiền tố của đồ thị sinh I 1 cung cj
Hình 3.3. Sơ đồ sinh không chứa cung bù với cj là cung lấy tiền tố
Hình 3.4. Chùm đầu với ai = C(L(I1)) và aj = C(L(I2))
Hình 3.5. Minh hoạ hàm ZIi(pa)

9



MỞ ĐẦU
Lý thuyết đồ thị là một ngành khoa học ra đời rất sớm và có nhiều ứng
dụng. Nhờ lý thuyết đồ thị mà nhiều bài toán phức tạp, diễn giải dài dòng
đƣợc mô tả hình học một cách trực quan và cô đọng. Lý thuyết đồ thị đã trở
thành công cụ đắc lực cho việc thiết kế các thuật toán [4,7,12,23], mô hình
hình học và phân tích các hệ thống [9,49,62], biểu diễn các quá trình của hệ
thống [34,60] ...
Việc tổ chức thực hiện một cách nhanh chóng các quá trình xảy ra trên
một hệ thống phân tán là một trong những mục tiêu của bài toán điều khiển
hệ thống. Ngoài kỹ thuật đồng bộ hoá thì kỹ thuật thực thi song song đã đƣợc
xây dựng thành công nhờ một số công cụ nhƣ: ngôn ngữ vết [11,13], phép
đẩy trái [62] ... Chính điều này đã khích lệ tác giả trong việc nghiên cứu ứng
dụng lý thuyết đồ thị để xây dựng các thuật toán điều khiển tối ƣu các quá
trình tuần tự trên một số hệ thống phân tán đƣợc biểu diễn bởi các hệ mạng
điều kiện - biến cố và hệ mạng vị trí - chuyển.
Từ một hệ mạng đã cho chúng ta có thể xây dựng đƣợc ngôn ngữ sinh
bởi hệ này. Đó chính là hành vi tuần tự của hệ. Hành vi tuần tự của hệ tạo bởi
các quá trình xảy ra trên hệ với các bƣớc đơn, mỗi bƣớc chỉ gồm một hành
động. Các hành động này đƣợc thực hiện kế tiếp nhau. Chúng ta có thể xây
dựng đồ thị có hƣớng gán nhãn biểu diễn hành vi tuần tự của hệ mạng. Trong
trƣờng hợp hành vi tuần tự có chứa các quá trình vô hạn thì kỹ thuật phủ đỉnh
[34]

sẽ giúp ta hữu hạn hoá đồ thị biểu diễn hành vi của hệ.

10


Việc phân tích và điều khiển tƣơng tranh các quá trình tuần tự xảy ra
trên một hệ thống phân tán dựa vào ngôn ngữ sinh bởi hệ thống đang là một

vấn đề thời sự. Để điều khiển tƣơng tranh các quá trình trên hệ mạng, chúng
tôi xây dựng kỹ thuật ghép cạnh trên đồ thị biểu diễn hành vi của hệ mạng
này. Sau mỗi lần ghép cạnh ta nhận đƣợc các quá trình với các bƣớc tƣơng
tranh có nhiều hành động hơn. Hơn nữa, khi ghép cạnh thì số bƣớc trên một
quá trình sẽ giảm đi. Đến khi không thể ghép cạnh đƣợc nữa thì các bƣớc
tƣơng tranh mà ta nhận đƣợc trở thành cực đại và số bƣớc của quá trình là ít
nhất có thể. Khi đó, các quá trình với các bƣớc tƣơng tranh cực đại đƣợc
thực thi trong môi trƣờng song song với thời gian ít nhất. Đó chính là ý nghĩa
của điều khiển tối ƣu mà chúng ta mong muốn.
Ngôn ngữ sinh bởi hệ mạng nói riêng và ngôn ngữ hình thức nói chung
đều có các cơ chế sinh ngôn ngữ. Cơ chế sinh ngôn ngữ từ các lớp văn phạm
và cơ chế đoán nhận ngôn ngữ bởi các lớp otomat đã đƣợc nghiên cứu khá
chi tiết. Trong thời gian gần đây, chúng ta cũng đã xây dựng thêm đƣợc một
số công cụ khác để sinh ngôn ngữ nhƣ: đồ hình, nguồn, biểu thức chính quy,
sơ đồ sinh, chùm đầu ... Do vậy, việc nghiên cứu, khảo sát, tính toán độ phức
tạp otomat của một số lớp ngôn ngữ đƣợc sinh ra từ các công cụ trên vẫn là
một đề tài đang đƣợc nhiều ngƣời quan tâm.
Sau sự ra đời và phát triển của lý thuyết ngôn ngữ từ hữu hạn cùng với
nhu cầu ứng dụng của thực tiễn, việc nghiên cứu tính chất của các lớp ngôn
ngữ từ vô hạn (-ngôn ngữ) trở nên cần thiết. Lý thuyết ngôn ngữ từ vô hạn
đƣợc đề xuất từ các công trình nghiên cứu về logic của J. R. Buchi [20], lý
thuyết mạch điện của D. Muller [43], otomat của R. McNaughton [41] ...
Ngôn ngữ từ vô hạn đƣợc tiếp tục quan tâm nghiên cứu và ứng dụng trong
nhiều lĩnh vực khác nhau, chẳng hạn nhƣ: lý thuyết mật mã của G. Hansel
[28], L. Staiger [59], Nguyễn Hƣơng Lâm và Đỗ Long Vân [37], lý thuyết

11


các quá trình của M. Nivat [45], lý thuyết đô phức tạp của Đặng Huy Ruận

[52,53], Đỗ Long Vân và Phan Trung Huy [32,70], hành vi hệ thống của A.
W. Roscoe [50], mạng Petri của Phạm Trà Ân [14], V. E. Kotov [34], W.
Reisig [49], Hoàng Chí Thành [60], lý thuyết trò chơi của M. Davis [25],
ngôn ngữ vết của J. I. Aalbersberg và G. Rozenberg [13] …
Một trong những vấn đề quan trọng đƣợc nhiều ngƣời quan tâm
nghiên cứu trong lý thuyết ngôn ngữ hình thức là tính toán độ phức tạp
otomat đoán nhận các lớp ngôn ngữ sinh bởi các công cụ khác nhau. Trên cơ
sở đó đƣa ra các đặc trƣng cho các công cụ sinh và các lớp ngôn ngữ tƣơng
ứng. Hơn nữa các ngôn ngữ này còn đƣợc dùng để biểu diễn hành vi tuần tự
của các hệ thống nói chung và các hệ thống phân tán nói riêng.
Nhiều nhà khoa học trên thế giới đã tập trung nghiên cứu và phát triển
ngôn ngữ vết trong các bài toán điều khiển hệ thống [13,50], xác định độ
phức tạp otomat của các thuật toán đoán nhận các -ngôn ngữ phi ngữ cảnh
[38], độ phức tạp của các -otomat [56], áp dụng lý thuyết ngôn ngữ cho các
bài toán quyết định [39,57]. Ở Việt Nam, việc nghiên cứu điều khiển hệ thống
tƣơng tranh và độ phức tạp tính toán trên ngôn ngữ hình thức đƣợc tập trung
nghiên cứu tại Viện Toán học [2,14,26,37] và tại Trƣờng Đại học Khoa học
Tự nhiên, Đại học Quốc gia Hà Nội [5,6,11,62] …
Mục tiêu của luận án là sử dụng đồ thị định hƣớng gán nhãn để xây
dựng một số thuật toán điều khiển tƣơng tranh các quá trình xảy ra trên các
hệ mạng điều kiện - biến cố và trên các hệ mạng vị trí - chuyển. Đồng thời
luận án cũng tập trung nghiên cứu các phƣơng pháp đoán nhận một số lớp
ngôn ngữ, -ngôn ngữ và đánh giá độ phức tạp otomat của các thuật toán
đoán nhận này. Ngoài những công cụ thông dụng sinh ngôn ngữ nhƣ: văn
phạm, otomat, tác giả đã sử dụng đồ thị định hƣớng gán nhãn trong việc xây

12


dựng một số công cụ khác sinh ra ngôn ngữ chính quy nhƣ: nguồn, biểu thức

chính quy, đồ thị sinh, sơ đồ sinh và chùm đầu ... Đồng thời, luận án đã
nghiên cứu đánh giá cận trên độ phức tạp otomat của các công cụ này. Những
kết quả đạt đƣợc trên các ngôn ngữ và -ngôn ngữ sinh bởi các công cụ này
rất có ý nghĩa.
Trong bản luận án này nghiên cứu sinh đã đóng góp đƣợc những kết
quả chính sau đây:
1)

Mô tả bài toán điều khiển tƣơng tranh các quá trình trên một hệ

thống tƣơng tranh.
2)

Xây dựng đồ thị các trƣờng hợp và ứng dụng nó để xây dựng

thuật toán điều khiển tƣơng tranh các quá trình trên hệ mạng điều
kiện - biến cố.
3)

Cải tiến thuật toán xây dựng đồ thị phủ của một hệ mạng vị trí -

chuyển đã đƣợc đƣa ra trong [34] và ứng dụng nó để xây dựng thuật
toán điều khiển tƣơng tranh trên các quá trình tuần tự xảy ra trên hệ
mạng vị trí - chuyển.
4)

Tính toán cận trên của độ phức tạp otomat đoán nhận các ngôn

ngữ sinh bởi nguồn, biểu thức chính quy, sơ đồ sinh và chùm đầu.
Các kết quả chính của luận án đã đƣợc trình bày tại:

1. Hội thảo Khoa học Quốc gia “Một số vấn đề chọn lọc của Công nghệ
Thông tin và Truyền thông”.
2. Hội thảo Khoa học Quốc gia “Nghiên cứu cơ bản và ứng dụng Công
nghệ Thông tin”.
3. Tạp chí Tin học và Điều khển học.
4. Xemina Tin học tại Bộ môn Tin học, Khoa Toán - Cơ - Tin học,
Trƣờng Đại học Khoa học Tự nhiên, Đại học Quốc gia Hà Nội

13


Luận án có cấu trúc nhƣ sau. Sau phần mở đầu là 3 chƣơng chính.
Chƣơng 1 trình bày các khái niệm cơ sở và các kết quả liên quan sẽ đƣợc
dùng trong hai chƣơng sau. Những khái niệm cơ bản xuyên suốt luận án là lý
thuyết đồ thị. Đó là công cụ toán học hữu ích mà tác giả đã sử dụng để biểu
diễn các khái niệm, các hệ thống và xây dựng nên các thuật toán hữu hiệu.
Bên cạnh đó, tác giả cũng nhắc lại các khái niệm cơ bản của ngôn ngữ hình
thức, otomat và của các hệ mạng.
Chƣơng 2 trình bày bài toán điều khiển tƣơng tranh các quá trình xảy
ra trên một hệ thống và xây dựng hai thuật toán điều khiển tƣơng tranh dựa
trên đồ thị gán nhãn có hƣớng và phân tích độ phức tạp của chúng. Thuật
toán thứ nhất làm đầy đủ đồ thị các trƣờng hợp của một hệ mạng điều kiện biến cố. Từ đó ta nhận đƣợc một bức tranh đầy đủ về hành vi tƣơng tranh
của hệ thống đƣợc biểu diễn bởi hệ mạng này. Đồng thời ta cũng nhận ra
đƣợc các quá trình tƣơng tranh với các bƣớc tƣơng tranh cực đại xảy ra trên
hệ thống. Thuật toán thứ hai rút gọn đồ thị phủ của một hệ mạng vị trí chuyển để từ đó nhận đƣợc các quá trình tƣơng tranh cực đại. Chúng tôi
cũng đƣa ra các cải tiến từ thuật toán đã có trong [34] để xây dựng đồ thị phủ
cho hệ mạng điều kiện - biến cố một cách đơn giản hơn. Các thuật toán này
góp phần phát triển lý thuyết điều khiển hệ thống.
Chƣơng 3 trình bày các kết quả nghiên cứu về độ phức tạp otomat. Cụ
thể là các tính toán xác định cận trên độ phức tạp otomat đoán nhận ngôn ngữ

sinh bởi nguồn, biểu thức chính quy, sơ đồ sinh và chùm đầu.
Cuối cùng là phần kết luận, danh sách các công trình khoa học đã công
bố của nghiên cứu sinh liên quan đến luận án và danh sách các tài liệu tham
khảo.

14


Chƣơng 1

CÁC KHÁI NIỆM CƠ SỞ
Trong chƣơng này, chúng tôi nhắc lại một số khái niệm và các kết quả
rất cơ bản của lý thuyết đồ thị, lý thuyết ngôn ngữ hình thức và otomat cùng
khái niệm mạng Petri, hệ mạng điều kiện - biến cố và hệ mạng vị trí - chuyển.
Những khái niệm này đƣợc trích dẫn từ các tài liệu [1,4,8,12,23,29,49] và là
các công cụ để xây dựng lên các kết quả đƣợc trình bày ở hai chƣơng sau
của bản luận án.
1.1. ĐẠI CƢƠNG VỀ ĐỒ THỊ
Lý thuyết đồ thị là một ngành khoa học phát triển rất sớm và trở thành
công cụ hữu ích cho sự phát triển của nhiều ngành khoa học khác. Với trực
quan hình học, lý thuyết đồ thị đã giúp chúng ta thiết kế và phân tích nhiều
thuật toán lớn để giải quyết các bài toán phức tạp.
1.1.1. Định nghĩa đồ thị
Định nghĩa 1.1: Đồ thị là một cặp G = (V, E), trong đó:
1)

V là tập hợp các đỉnh,

2)


E  V  V, là tập hợp các cạnh.

15


Ví dụ 1.1: Một đồ thị có 5 đỉnh 8 cạnh.
b
a

c
e

d

Hình 1.1: Đồ thị hữu hạn
Đồ thị G cho ở Hình 1.1 có tập các đỉnh V = {a, b, c, d, e} và tập các
cạnh E = {(a, b), (a, c), (b, c), (d, b), (d, c), (e, a), (e, b), (e, d)}.
Giữa hai đỉnh của một đồ thị có thể có nhiều cạnh nối chúng. Đồ thị
mà mỗi cặp đỉnh đƣợc nối với nhau không quá một cạnh, đƣợc gọi là đơn đồ
thị (và gọi tắt là đồ thị). Đồ thị có những cặp đỉnh đƣợc nối với nhau nhiều
hơn một cạnh đƣợc gọi là đa đồ thị.
Nếu (a, b) là một cạnh của đồ thị thì ta nói rằng đỉnh b kề với đỉnh a.
Do vậy, ta có thể định nghĩa đồ thị bằng ánh xạ kề nhƣ sau.
Định nghĩa 1.2: Đồ thị là một cặp G = (V, F), trong đó:
1)

V là tập hợp các đỉnh,

2)


F : V  2V và đƣợc gọi là ánh xạ kề.

Ánh xạ kề của đồ thị trong Ví dụ 1.1 đƣợc xác định nhƣ sau:
F(a) = {b, c}, F(b) = {c}, F(c) = , F(d) = {b, c} và F(e) = {a, b, d}.
Sự tƣơng đƣơng của hai định nghĩa của đồ thị đƣợc thể hiện bằng
mệnh đề sau đây: x, y  V : (x, y)  E  y  F(x).
Về bản chất, đồ thị là một tập hợp các đối tƣợng đƣợc biểu diễn bằng
các đỉnh và giữa các đối tƣợng này có một quan hệ nhị nguyên biểu diễn
bằng các cạnh. Cặp đỉnh (x, y)  E không sắp thứ tự đƣợc gọi là cạnh vô

16


hướng, còn nếu nó có sắp thứ tự thì đƣợc gọi là cạnh có hướng. Cạnh có
hƣớng còn đƣợc gọi là cung của đồ thị. Ngƣời ta thƣờng phân các đồ thị
thành hai lớp.
Định nghĩa 1.3: Đồ thị chỉ chứa các cạnh vô hƣớng đƣợc gọi là đồ thị vô
hướng còn đồ thị chỉ chứa các cạnh có hƣớng (cung) đƣợc gọi là đồ thị có
hướng.
1.1.2. Đường đi trên đồ thị
Giả sử G = (V, E) là một đồ thị.
Định nghĩa 1.4: Đường đi trên đồ thị G là một dãy các đỉnh của đồ thị: < x1,
x2, ... , xi, xj+1, ... , xk-1 , xk > sao cho, mỗi đỉnh trong dãy (không kể đỉnh đầu
tiên) kề với đỉnh trƣớc nó bằng một cạnh nào đó, nghĩa là:
i = 2, 3, ... , k-1, k : (xi-1,xi)  E.
Ta nói rằng đƣờng đi này đi từ đỉnh đầu x1 đến đỉnh cuối xk. Số cạnh
của đƣờng đi đƣợc gọi là độ dài của đƣờng đi.
1.1.3. Một số cách biểu diễn đồ thị trong máy
tính a) Biểu diễn đồ thị bằng ma trận kề
Giả sử G = (V, E) là một đồ thị có n đỉnh. Ta đánh số các đỉnh của đồ

thị bằng các số tự nhiên: 1, 2, ... , n. Xây dựng ma trận vuông A cấp n biểu
diễn đồ thị nhƣ sau:
i, j  V : A[i,j] = d, với d là số các cạnh nối đỉnh i với đỉnh j trong G.
Ma trận A đƣợc gọi là ma trận kề của đồ thị G.
Ví dụ 1.2: Ma trận kề của đa đồ thị có hƣớng.
2

1

A=

3

4
17

0112
0010
0010
0110


Hình 1.2. Đa đồ thị có hƣớng và ma trận kề tƣơng ứng
b) Biểu diễn đồ thị bằng các danh sách kề
Với mỗi đỉnh của đồ thị ta xây dựng một danh sách liên kết chứa các
đỉnh kề với đỉnh này. Danh sách này đƣợc gọi là danh sách kề. Một đồ thị
đƣợc biểu diễn bằng một mảng các danh sách kề.
Ví dụ 1.3: Biểu diễn mảng các danh sách kề của đồ thị G trong Ví dụ 1.2.
p[a]
p[b]



p[c]
p[d]
p[e]

1.1.4. Bài toán tìm đường đi trên đồ thị
Bài toán: Cho đồ thị G và hai đỉnh a, b thuộc G. Có hay không một đƣờng đi
từ đỉnh a đến đỉnh b trên đồ thị G?
Dựa vào các kết quả đã có, chúng ta xây dựng thuật toán sau đây để
giải bài toán trên.
Thuật toán 1.1 (Xác định đường đi) [4,12]
Đầu vào: Đồ thị G = (V, E) và ha đỉnh a, b thuộc V.
Đầu ra: Câu trả lời: ”có / không”.
1)

Xây dựng ma trận kề A cho đồ thị G.

18


2)

Tính ma trận tổng các luỹ thừa T = A1 + A2 + ... + An-1.

3)
Nếu T[a,b]  1 thì kết luận là có đƣờng đi từ đỉnh a đến đỉnh b,
ngƣợc
lại thì kết luận là không có.
Hiển nhiên, thuật toán trên có độ phức tạp là O(n4).

1.1.5. Đồ thị gán nhãn
Giả sử G = (V, E) là một đồ thị và L là một tập hợp không rỗng nào đó.
Hàm n : E  L đƣợc gọi là hàm gán nhãn trên các cạnh của đồ thị đã cho.
Khi đó, mỗi cạnh e  E sẽ đƣợc gán nhãn n(e)  L. Đồ thị G với các cạnh
đƣợc gán nhãn đƣợc gọi là đồ thị gán nhãn.
Ví dụ 1.4: Đồ thị đƣợc gãn nhãn là các số tự nhiên trên các cạnh.

Hình 1.4. Đồ thị gán nhãn
Đƣờng đi trên đồ thị gãn nhãn đƣợc biểu diễn chi tiết hơn. Cụ thể là:
Định nghĩa 1.5: Đƣờng đi trong đồ thị gán nhãn là một dãy các đỉnh và các
nhãn: < x1, l12,, x2, l23 ... , xi , li i+1, xj+1, ... , xk-1 , lk-1 k, xk > sao cho, mỗi đỉnh
trong dãy (không kể đỉnh đầu tiên) kề với đỉnh trƣớc nó bằng một cạnh nào
đó có nhãn tƣơng ứng, nghĩa là: i = 2, 3, ... , k-1, k : (xi-1, xi)  E và
n((xi-1, xi)) = li-1 i.
Ta nói rằng đƣờng đi này đi từ đỉnh đầu x1 đến đỉnh cuối xk với dãy
nhãn là  = l12 l23 ... lk-1 k.


19




Ngƣời ta thƣờng viết: x1  xk . Nghĩa là, trên đƣờng đi từ đỉnh x1 đến
đỉnh xk ta nhận đƣợc từ  tạo bởi dãy các nhãn trên mỗi cạnh.
Để biểu diễn các nhãn trên các cạnh của một đồ thị đƣợc gán nhãn ta
thực hiện nhƣ sau:
- Trong ma trận kề: phần tử A[i,j] chứa nhãn của cạnh nối đỉnh i với
đỉnh j.
-


Trong biểu diễn mảng các danh sách kề: tại mỗi phần tử của danh

sách ta thêm vào một trƣờng mới chứa nhãn của cạnh nối từ đỉnh tƣơng ứng
với danh sách tới đỉnh nằm trong phần tử này.
Thuật toán xác định đƣờng đi trên đồ thị gán nhãn giúp ta xác định các
quá trình của một hệ thống khi hành vi của nó đƣợc biểu diễn bởi đồ thị gán
nhãn có hƣớng (Chƣơng 2).
1.1.6. Các thuật toán duyệt đồ thị
Phép duyệt đồ thị là một cách liệt kê tất cả các đỉnh của đồ thị này
thành một danh sách tuyến tính. Nói một cách khác, phép duyệt đồ thị cho ta
một cách “đi qua” tất cả các đỉnh của đồ thị để truy nhập, thêm bớt thông tin

sẽ

các đỉnh của đồ thị này. Với các đồ thị không liên thông thì thuật toán

duyệt lần lƣợt từng mảng liên thông và kết quả sẽ là danh sách ghép của các
danh sách các đỉnh trong từng mảng liên thông của đồ thị đã cho. Các thuật
toán duyệt đồ thị đã đƣợc trình bày trong [4,12,23]. Chúng tôi nhắc lại các
thuật toán này để sử dụng trong các thuật toán điều khiển tƣơng tranh sẽ
đƣợc trình bày ở Chƣơng 2.
a) Thuật toán duyệt đồ thị tổng quát
Giả sử G là một đồ thị đã cho. Ký hiệu DS là một cấu trúc dữ liệu kiểu
danh sách dùng để chứa các đỉnh của đồ thị, L là một danh sách dùng để lƣu

20


dãy các đỉnh. Thuật toán tổng quát duyệt đồ thị đƣợc trình bày sơ lƣợc nhƣ

sau.
Thuật toán 1.2 (Duyệt đồ thị) [4,12]
Đầu vào: Đồ thị G = (V, F) đƣợc cho dƣới dạng ánh xạ kề.
Đầu ra: Danh sách L chứa tất cả các đỉnh của đồ thị G.
1)

Đánh dấu “chưa duyệt” cho mọi đỉnh v  V ;

2)

Khởi tạo danh sách L rỗng, L  ;

3)
Với mỗi đỉnh v  V, nếu v chƣa đƣợc duyệt thì thực hiện vòng
lặp sau:

4) Khởi tạo danh sách DS rỗng, DS  ;
5) Nạp đỉnh v vào danh sách DS ;
6) Lấy đỉnh x ở đầu danh sách DS và loại nó ra khỏi danh sách ;
7) Duyệt đỉnh x ;
8) Thêm x vào cuối danh sách L, L  L . x ;
9) Đổi thành dấu “đã duyệt” cho đỉnh x ;
10) Nạp các đỉnh chƣa đƣợc duyệt trong tập đỉnh kề F(x) vào danh
sách

DS ;
11)

Nếu DS  thì quay lên bƣớc 5) ngƣợc lại thì quay lên đầu vòng


lặp ở bƣớc 3) ;
12)

Khi hết đỉnh để duyệt thì in danh sách L và dừng.

Chúng ta sẽ chi tiết hoá thuật toán duyệt tổng quát này.
b) Duyệt đồ thị theo chiều sâu
Nếu trong thuật toán tổng quát trên, danh sách DS đƣợc tổ chức theo kiểu
stack (danh sách vào sau - ra trước) thì ta có phƣơng pháp duyệt theo chiều
sâu. Trong phƣơng pháp này mỗi lần duyệt một đỉnh ta duyệt đến tận cùng
mỗi nhánh rồi mới chuyển sang duyệt nhánh khác. Chúng ta dùng stack S để
lƣu trữ các đỉnh đang duyệt. Ta có thuật toán duyệt theo chiều sâu sau đây:


21


Thuật toán 1.3 (Duyệt đồ thị theo chiều sâu) [12,23]
Dữ liệu: Mảng các danh sách kề DK của đồ thị G. Kết
quả: Danh sách L tất cả các đỉnh của đồ thị G.

1

procedure D_SAU (v) ;

2

begin
3


S;

4

Thăm_đỉnh (v) ;

5

LL.v;

6

Duyet [v]  true ;

7

push v

8

while

9

begin

10

while


11
12
13
14
15
16
17
18

pop(S) ;
19

end ;

20 end ;
21 BEGIN

{ Chƣơng trình chính }

22

for v  V do Duyet [v]  false ;

23

L;

22



for v  V do

24
25

if NOT Duyet [v] then D_SAU (v) ;

26 END.
Độ phức tạp của thật toán duyệt theo chiều sâu
Vòng lặp 24) có độ phức tạp là O(n). Với mỗi đỉnh v  V thủ tục
D_SAU đƣợc gọi đúng một lần có độ phức tạp là O(|DK[v]|). Mà



| DK(v) |  2.m . Do vậy, độ phức tạp của thật toán duyệt theo chiều sâu là:

vV

O(n+m).
Ví dụ 1.5: Đồ thị đƣợc duyệt theo chiều sâu

Hình 1.5. Thứ tự của các đỉnh đƣợc duyệt theo chiều sâu
c) Duyệt đồ thị theo chiều rộng
Nếu trong thuật toán duyệt đồ thị tổng quát cấu trúc danh sách DS đƣợc
tổ chức theo kiểu hàng đợi (danh sách vào trước - ra trước) thì ta có phƣơng
pháp duyệt theo chiều rộng. Trong phƣơng pháp này việc duyệt có tính chất
“lan rộng”. Một đỉnh đƣợc duyệt xong ngay sau khi ta đã xét hết tất cả các
đỉnh kề với nó. Đỉnh đƣợc xét càng sớm thì sớm trở thành duyệt xong. Ta sử
dụng hàng đợi Q để lƣu trữ các đỉnh đang đƣợc duyệt và thuật toán duyệt đồ
thị theo chiều rộng đƣợc trình bày chi tiết nhƣ sau.

Thuật toán 1.4 (Duyệt đồ thị theo chiều rộng) [12,23]

23


Dữ liệu: Mảng các danh sách kề DK của đồ thị G.
Kết quả: Danh sách L tất cả các đỉnh của đồ thị G.
1

procedure D_RONG (v) ;

2

begin
3

Q;

4

enqueue v into Q ;

5

Duyet [v]

6

while Q  do


7

begin

8

dequeue x from Q ;

9

Thăm_đỉnh (x) ;

10

LL.x;

11

for

12
13
14
15
16
17

end ;

18 end ;

19 BEGIN

{ Chƣơng trình chính }

20

for v  V do Duyet [v]  false ;

21

L;

22

for v  V do

23

if NOT Duyet [v] then D_RONG (v) ;

24 END .

24


Độ phức tạp của thật toán duyệt theo chiều rộng
Tƣơng tự nhƣ phân tích độ phức tạp của thuật toán duyệt đồ thị theo
chiều sâu, thuật toán duyệt đồ thị theo chiều rộng cũng có độ phức tạp là:

O(n+m).

Ví dụ 1.6: Đồ thị trong Ví dụ 1.5 đƣợc duyệt theo chiều rộng.

Hình 1.6. Thứ tự của các đỉnh đƣợc duyệt theo chiều rộng
Đồ thị và các khái niệm của nó thƣờng đƣợc dùng để mô tả hình học
các tình huống, sự kiện, cấu trúc và hệ thống … Các phần tiếp theo của luận
án sẽ ứng dụng đồ thị để phân tích và điều khiển tƣơng tranh trên hệ thống,
đặc biệt là các thuật toán tìm đƣờng đi và duyệt đồ thị. Do vậy, chúng tôi
nhắc lại định nghĩa của một số hệ thống mà chúng tôi đang nghiên cứu.
1.2. NGÔN NGỮ HÌNH THỨC VÀ OTOMAT
1.2.1. Bảng chữ cái, từ và ngôn ngữ
Một tập  các ký hiệu đƣợc gọi là bảng chữ cái. Mỗi ký hiệu trong bảng


đƣợc gọi là một chữ cái.
Chẳng hạn, 1 = {0,1} hoặc 2 = {a,b,c, ...} là các bảng chữ cái.
Từ là một dãy các chữ cái thuộc một bảng chữ cái nào đó. Ví dụ, w =

101000101 là một từ trên bảng chữ cái 1.
Độ dài của từ , ký hiệu bởi ||, là số các vị trí của những chữ cái tạo
nên từ . Chẳng hạn, |w| = 9.

25


Tích ghép của hai từ  và , ký hiệu là ., là xâu đƣợc tạo thành bằng
cách ghép  vào ngay sau .
Ngôn ngữ là tập hợp các từ trên một bảng chữ cái nào đó.
Ký hiệu * là ngôn ngữ bao gồm tất cả các từ trên bảng chữ cái , còn
+ là ngôn ngữ bao gồm tất cả các từ không rỗng trên bảng chũ cái .
Hiển nhiên,  = +  {}, trong đó  là ký hiệu từ rỗng.

1.2.2. Các phép toán trên ngôn ngữ
Tích ghép của hai ngôn ngữ L1 và L2 trên cùng bảng chữ cái , ký

1)

hiệu là L1.L2, là một ngôn ngữ trên  và đƣợc xác định nhƣ sau:
Hợp của hai ngôn ngữ L1, L2 trên cùng bảng chữ cái , ký hiệu là

2)

L1  L2 và đƣợc xác định nhƣ sau:
Giao của hai ngôn ngữ L1 và L2 trên cùng bảng chữ cái  là một

3)

ngôn ngữ trên bảng chữ cái , ký hiệu là L1  L2 và đƣợc xác định nhƣ sau:
Hiệu của hai ngôn ngữ L1 và L2 trên cùng bảng chữ cái  là một

4)

ngôn ngữ trên bảng chữ cái , ký hiệu là L1 \ L2, đƣợc xác định nhƣ sau:
L1 \ L2 = {u  u  L1 và u  L2 }.
5) Phần bù của ngôn ngữ L trên bảng chữ cái  là ngôn ngữ trên bảng
chữ cái , ký hiệu là C(L) và đƣợc xác định nhƣ sau:
C(L) = {u u *, u  L } = * \ L.
6) Lặp của ngôn ngữ L trên bảng chữ cái  là ngôn ngữ trên , ký
hiệu
*

*


0

1

2

i

là L , đƣợc xác định bởi: L = L  L  L  ... với L đƣợc xác định đệ quy

nhƣ sau: L0 = {} , Li = L.Li-1, i  1.


×