Tải bản đầy đủ (.pdf) (102 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

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 (1.06 MB, 102 trang )

MỤC LỤC
Trang
Trang phụ bìa

1

Lời cam đoan

2

Mục lục

4

Danh mục các thuật ngữ

6

Danh mục các hình vẽ

9

MỞ ĐẦU

10

Chƣơng 1. Các khái niệm cơ sở

15

1.1. Đại cƣơng về đồ thị



15

1.1.1. Định nghĩa đồ thị

15

1.1.2. Đƣờng đi trên đồ thị

16

1.1.3. Một số cách biểu diễn đồ thị trong máy tính

17

1.1.4. Bài tốn đƣờng đi trên đồ thị

18

1.1.5. Đồ thị gán nhãn

18

1.1.6. Các thuật toán duyệt đồ thị

20

1.2. Ngơn ngữ hình thức và otomat

25


1.2.1. Bảng chữ cái, từ và ngơn ngữ

25

1.2.2. Các phép tốn trên ngơn ngữ

25

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

26
38

1.3.1. Mạng Petri

39

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

41

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

43

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


47

Chƣơng 2. Các thuật toán điều khiển tƣơng tranh

49

4


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

2.1. Bài tốn điều khiển tƣơng tranh các q trình

49

2.2. Thuật tốn điều khiển tƣơng tranh trên các hệ mạng điều kiện
- biến cố
2.2.1. Đồ thị các trƣờng hợp

51
51

2.2.2. Các bƣớc tƣơng tranh trên hệ mạng điều kiện - biến cố

53

2.2.3. Đầy đủ hoá đồ thị các trƣờng hợp

55


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

59
59

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

62

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

63

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

67

Chƣơng 3. Độ phức tạp otomat của các thuật tốn

68
đốn nhận ngơn ngữ

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

69

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

70


3.2.1. Biểu thức chính quy

70

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

71

3.3. Độ phức tạp otomat của sơ đồ sinh

72

3.3.1. Khái niệm sơ đồ sinh

72

3.3.2. Độ phức tạp otomat của sơ đồ sinh

75

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

83
83

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


84

PHẦN KẾT LUẬN

96

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

98

5

94

100


DANH MỤC CÁC THUẬT NGỮ
Đồ thị

Graph
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

Ngơn ngữ hình thức

Formal language

Bảng chữ cái

Alphabet

Từ

Word

Từ vô hạn

Infinitive word

6


Văn phạm


Grammar

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

Context-sensitive grammar

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

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

Nondeterministic automaton


Nguồn

Source

Biểu thức chính quy

Regular expression

Đồ thị sinh

Generating graph

Cung bù

Complement arc

Cung cốt yếu

Essential arc

Sơ đồ sinh

Generating scheme

Chùm đầu

Heading bunch

-ngơn ngữ


-language

Thuật tốn đốn nhận

Recognition algorithm

Thuật tốn phân tích

Parsing algorithm

Độ phức tạp

Complexity

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

Recognition complexity

Độ phức tạp otomat

Automata complexity

Hệ mạng

Net system
Mạng Petri

Petri net


Tập vào

Pre-set

Tập ra

Post-set

Mạng đơn giản

Simple net

Quan hệ đạt đƣợc

Reachability relation

7


Tp tỏch c

Detached set

B-ớc t-ơng tranh

Concurrent step

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

Condition-event net system


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

Place-transition net system

Tr-ờng hợp

Case

DÃy hoạt động

Firing sequence

Dung l-ợng

Capacity

Bộ đánh dấu

Marking

Hệ mạng sống

Live net system

Hệ mạng chu trình

Cycle net system

Quá trình


Process

Quá trình tuần tự

Sequential process

Quá trình t-ơng tranh

Concurrent process

Hành vi

Behaviour

Hành vi tuần tự

Sequential behaviour

Hành vi t-ơng tranh

Concurrent behaviour

8


DANH MỤC CÁC HÌNH VẼ
Trong bản luận án 21 có hình vẽ
Hình vẽ


Trang

Hình 1.1: Đồ thị hữu hạn

15

Hình 1.2. Đồ thị có hƣớng và ma trận kề tƣơng ứng

17

Hình 1.3. Mảng các danh sách kề biểu diễn đồ thị

18

Hình 1.4. Đồ thị gán nhãn

19

Hình 1.5. Thứ tự của các đỉnh đƣợc duyệt theo chiều sâu

23

Hình 1.6. Thứ tự của các đỉnh đƣợc duyệt theo chiều rộng

24

Hình 1.7. Nguồn I1

29


Hình 1.8. Nguồn đơn định đầy đủ K1

32

Hình 1.9. Nguồn K2 là nguồn bù của nguồn K1

33

Hình 1.10. Mạng Petri đơn giản

39

Hình 1.11. Một hệ mạng vị trí - chuyển

45

Hình 2.1. Sơ đồ biến đổi tƣơng tranh một q trình tuần tự

50

H×nh 2.2. Đồ thị các tr-ờng hợp của hệ

52

Hình 2.3. Đồ thị các tr-ờng hợp đầy đủ

58

Hình 2.4. Minh hoạ Định lý 2.9


65

Hình 2.5. Một phần của đồ thị phủ và đồ thị phủ rút gọn

66

Hình 3.1. Hai đồ thị sinh đơn giản I1 và I2 có l(I1) = l(I2) = 0

75

Hình 3.2. Đồ thị sinh lấy tiền tố của đồ thị sinh I1 cung cj

78

Hình 3.3. Sơ đồ sinh không chứa cung bù với cj là cung lấy tiền tố

83

Hình 3.4. Chùm đầu với ai = C(L(I1)) và aj = C(L(I2))

84

Hình 3.5. Minh hoạ hàm ZIi(pa)

87

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 tố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. Ngồi kỹ thuật đồng bộ hố 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 q 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 q 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 q 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
q 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 q trình là ít
nhất có thể. Khi đó, các q 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ế đố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 tố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 q 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], Hồ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 tốn độ phức tạp otomat đố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 tố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 tốn điều khiển tƣơng tranh các q 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 tốn
đốn nhận này. Ngồ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 tố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
tốn điều khiển tƣơng tranh các q 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
tố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 tốn cận trên của độ phức tạp otomat đố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 Tố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ụ tố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 tố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 q 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 tố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 tố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 tốn xác định cận trên độ phức tạp otomat đố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 tố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
c

a

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

0
0
0
0


1
0
0
1

1
1
1
1

2
0
0
0


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]

c

c


b

p[c]









p[d]

b

c

p[e]

a

b

d



Hình 1.3. Mảng các danh sách kề biểu diễn đồ thị
1.1.4. Bài tốn tìm đường đi trên đồ thị

Bài tố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 tố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
ở các đỉnh của đồ thị này. Với các đồ thị khơng liên thơng thì thuật tốn sẽ
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
tố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 tốn này để sử dụng trong các thuật tố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 tố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 tố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 onto S ;

8

while S   do


9

{ thêm v vào danh sách L }

{nạp v lên đỉnh của S}

begin

10

while x  DK[top(S)] do

11

if NOT Duyet [x] then

12

begin

13

Thăm_đỉnh (x) ;
L  L.x;

14
15

Duyet [x]  true ;


16

push x onto S ;

17

end ;

18
19

{loại bỏ phần tử ở đỉnh của S}

pop(S) ;
end ;

20 end ;
21 BEGIN

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

22

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

23

L;

22



24
25

for v  V do
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 tố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 tố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]  true ;

6

while

7

{nạp v vào cuối hàng đợi Q}


Q   do

begin

8
9

Thăm_đỉnh (x) ;

10

L  L.x;

11

for

{loại x ra khỏi đầu hàng đợi Q}

dequeue x from Q ;

12

u  DK[x] do

if NOT Duyet [u] then

13

begin


14

enqueue u into Q ;

15

Duyet [u]  true ;

16
17

end ;
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 tố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 tố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 tốn trên ngơn ngữ
1) Tích ghép của hai ngơn ngữ L1 và L2 trên cùng bảng chữ cái , ký
hiệu là L1.L2, là một ngôn ngữ trên  và đƣợc xác định nhƣ sau:
L1.L2 = {u.v u  L1 và v  L2}.
2) Hợp của hai ngôn ngữ L1, L2 trên cùng bảng chữ cái , ký hiệu là
L1  L2 và đƣợc xác định nhƣ sau:
L1  L2 = {u  u  L1 hoặc u  L2 }.
3) Giao của hai ngôn ngữ L1 và L2 trên cùng bảng chữ cái  là một
ngôn ngữ trên bảng chữ cái , ký hiệu là L1  L2 và đƣợc xác định nhƣ sau:
L1  L2 = {u  u  L1 và u  L2}.
4) Hiệu của hai ngôn ngữ L1 và L2 trên cùng bảng chữ cái  là một
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

là L*, đƣợc xác định bởi: L* = L0  L1  L2  ... với Li đƣợc xác định đệ quy
nhƣ sau: L0 = {} , Li = L.Li-1, i  1.

26


7) Lặp cắt của ngôn ngữ L trên bảng chữ cái  là ngôn ngữ trên , ký
hiệu là L+, đƣợc xác định bởi: L+ = L1  L2  ...
Hiển nhiên, L+ = L* \ {}.
1.2.3. Một số công cụ sinh ngơn ngữ chính quy và mối quan hệ giữa chúng
Ngơn ngữ chính quy đƣợc sinh ra từ một số cơng cụ nhƣ: văn phạm
chính quy, otomat hữu hạn, nguồn …
a) Văn phạm chính quy
Định nghĩa 1.6: Văn phạm là bộ bốn G = (, V, P, S), trong đó:
-  là bảng chữ cái chính,
- V là bảng chữ cái phụ,
- S là một chữ cái phụ và đƣợc gọi là ký hiệu khởi đầu,
- P là tập hữu hạn các quy tắc sinh có dạng   , với ,  
(  V)* và   , đồng thời từ  phải chứa chữ cái phụ. Ký hiệu  khơng
thuộc bảng chữ cái   V.
Ví dụ 1.7: Cho văn phạm sau đây:
G1 = ({a,b,c}, {S,X,Y,Z}, P, S ), với:
P = {S  XYc , S  YXcc , X  YZ , Z  ac , Y  Xa , cXYa  caa}.
Giả sử G = (, V, P, S) là một văn phạm và hai từ x, y  (  V)*.
Ta nói rằng từ x dẫn trực tiếp ra từ y, ký hiệu x  y, nếu tồn tại các từ
x1, x2, u, v  (  V)* sao cho x = x1 u x2 , y = x1 v x2 và u  v là một quy tắc
dẫn xuất trong P.
*

Ta nói rằng từ x dẫn ra từ y, ký hiệu x  y, nếu tồn tại một dãy các từ

x0, x1, ..., xk  (  V)* với k  0, sao cho: x0 = x, xk = y và xi  xi+1, với 0  i
 k-1.

Ngôn ngữ L(G) sinh bởi văn phạm G đƣợc định nghĩa nhƣ sau:

27


*

L(G) = { w  w  * , S  w}.
Văn phạm G đƣợc gọi là văn phạm cảm ngữ cảnh nếu mỗi quy tắc của
nó đều có dạng  1A  2   1  2 trong đó  1,  2  (  V)*, A  V,   (
 V) và   . Ngôn ngữ sinh bởi văn phạm cảm ngữ cảnh đƣợc gọi là
+

ngơn ngữ cảm ngữ cảnh.
Ví dụ 1.8: Xét văn phạm cảm ngữ cảnh dƣới đây.
G2 = ({a,b,c}, {S,B,C}, P, S ) với:
P = {S  aSBC, S  aBC, CB  BC, aB  ab, bB  bb, C  c}.
Ngôn ngữ cảm ngữ cảnh sinh bởi văn phạm trên là:
L(G2) = {anbncnn  1}.
Quy tắc cảm ngữ cảnh mà  1 =  2 =  đƣợc gọi là quy tắc phi ngữ
cảnh. Văn phạm G với mọi quy tắc đều là quy tắc phi ngữ cảnh thì đƣợc gọi
là văn phạm phi ngữ cảnh. Ngôn ngữ sinh bởi văn phạm phi ngữ cảnh đƣợc
gọi là ngôn ngữ phi ngữ cảnh.
Ví dụ 1.9: Xét ăn phạm phi ngữ cảnh sau đây:
G3 = ({0,1}, {S}, P, S ), với P = {S  0S0, S  1S1, S  00, S  11}.
Ngôn ngữ phi ngữ cảnh sinh bởi văn phạm trên là:
^


^

L(G3) = { w w w  {0,1}+}, trong đó từ w là đảo ngƣợc của từ w.
Văn phạm phi ngữ cảnh mở rộng là văn phạm phi ngữ cảnh có chứa
quy tắc rỗng.
Ví dụ 1.10: Văn phạm phi ngữ cảnh mở rộng.
G4 = ({a,b,c}, {S,X,Y,Z}, P, S ) với:
P = {S  XYc, S  YXcc, X  YZ, Z  ac, Y  Xa, Y  }.

28


×