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

Xây dựng chương trình cài đặt một số thuật toán tìm đường đi trên mạng

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 (2.14 MB, 71 trang )

MỤC LỤC
LỜI NÓI ĐẦU…………………………………………………………………………..4
CHƯƠNG 1 …………………………………………………………………………….6
GIỚI THIỆU VỀ NGÔN NGỮ VISUAL BASIC 6.0 …….………………………….6
1.1 Tìm hiểu ngôn ngữ lập trình Visual Basic …………………………….………….6
1.1.1 Giới thiệu Visual Basic ………………………..…………………….……….6
1.1.2 Môi trường phát triển của Visual Basic 6.0 …………………………………6
1.1.3 Form và công cụ điều khiển Control ………………………………….……..7
1.1.4 Lập trình trên Visual basic ……………………………………………..…..10
1.1.4.2. Khai báo biến trong VB …………………………..…………………..11
1.1.4.3. Các cấu trúc lặp trong Visual Basic …………………………………..12
1.1.4.4. Thủ tục và hàm trong Visual Basic …………………………………...14
CHƯƠNG 2 …………………………………………………...………………………16
LÝ THUYẾT ĐỒ THỊ ……………………………………………………………...16
2.1. Các định nghĩa đồ thị ………………………………………………….………..16
2.1.1. Định nghĩa đồ thị …………………………………….…………….………16
2.1.2. Đồ thị đơn ……………………….……………………………….………...17
2.1.3. Đa đồ thị …………..……………………………………………………….17
2.1.4. Giả đồ thị …………………………………………………………………..17
2.2. Các loại đồ thị …………………………………………………………………..18
2.2.1. Đồ thị vô hướng ……………………………………………………………18
2.2.2. Đồ thị có hướng ……………………………………………………………18
2.2.3. Đồ thị hỗn hợp ……………………………………………………………..18
2.3. Một số khái niệm và tính chất cơ bản của đồ thị ……………………………….18
2.3.1. Bậc đồ thị ……………………………...…………………………………...18
2.3.1.1. Bậc đồ thị vô hướng …………………………………………...………18
2.3.1.2. Bậc đồ thị có hướng …………………………………….……………..19
2.3.2. Đường đi và chu trình ………………………………………….…………..20
2.3.3. Đồ thị liên thông ……………………………………………….…………..21
2.3.4. Đồ thị con và đồ thị bộ phận ……………………………………….………23
CHƯƠNG 3 ……………………………………………………...……………………24



1


MỘT SỐ BÀI TOÁN THIẾT KẾ MẠNG VIỄN THÔNG VÀ CÁC VẤN ĐỀ LIÊN
QUAN ……………………………………………………………………….………24
3.1. Các chỉ tiêu chất lượng mạng …………………………………………………..24
3.1.1. Chất lượng mạng ………………………………………………………..…24
3.1.2. Các tham số đặc trưng của chất lượng mạng ………………………………26
3.1.2.1. Các tham số chất lượng chuyển mạch ………………………………...26
3.1.2.2. Các tham số chất lượng truyền dẫn …………………………………...26
3.1.2.3. Các tham số của sự ổn định ……………………………………….…..27
3.1.3. Tiêu chuẩn đánh giá chất lượng mạng ……………………………….…….27
3.2. Một số bài toán tối ưu trong quy hoạch và thiết kế mạng …………………...…28
3.2.1. Bài toán dự báo …………………………………………………………….28
3.2.1.1. Giới thiệu chung ………………………………………………………28
3.2.1.2. Dự báo nhu cầu ………………………………………………………..28
3.2.1.3. Dự báo lưu lượng ……………………..……………………….………29
3.2.2. Bài toán thiết kế mạng tập trung kết nối đa điểm ………………………….29
3.2.2.1. Bài toán kết nối đa điểm đơn giản……………………………………..29
3.2.2.2. Bài toán kết nối đa điểm mở rộng……………………………………..31
3.3. Một số bài toán tối ưu trong quản lý và khai thác tài nguyên mạng ……………32
3.3.1. Định tuyến tối ưu …………………………………………………………..32
3.3.1.1. Đặt vấn đề ……………………………………………………………..32
3.3.2. Cực tiểu hóa thời gian trễ trung bình trên mạng ……………….…………..33
3.3.2.1. Đặt vấn đề ………………………………………………….………….33
3.3.2.2. Mạng hàng đợi đóng ……………………………………….………….33
3.3.3. Thiết kế tối ưu mạng riêng ảo ……………………………………..……….35
3.3.3.1. Đặt vấn đề …………………………………………………….……….35
CHƯƠNG 4 ………………………………………………….……………..…...……37

CÁC THUẬT TOÁN TÌM ĐƯỜNG ………………………………….……..……..37
4.1. Mô hình hệ thống định tuyến tĩnh …………………………………..………….37
4.1.1. Giới thiệu ……………………………………………………………..……37
4.1.2. Các thông số của hệ thống ……………………………..…………………..37
4.1.3. Kĩ thuật tìm đường tập trung hoặc phân tán ……………………………….40
4.1.4. Bài toán tìm đường đi ngắn nhất …………………………………………..41
4.2. Lập trình song song …………………………..………………………………...42

2


4.2.1. Mục đích …………..………………………………………………………42
4.2.2. Đánh giá hiệu quả của giải thuật song song ……………………………….42
4.2.3. Các vấn đề cần chú ý khi tìm đường ………………………………………43
4.3. Phân tích các thuật toán tìm đường …………………………………..………...45
4.3.1. Giải thuật tìm đường tĩnh ………………………………………………….45
4.3.1.1. Giải thuật Dijkstra ……………………..……………………………...45
4.3.1.2. Giải thuật Bellman Ford ………………………………………………48
4.3.1.3. Giải thuật Floyd ……………………………………………………….51
4.3.2. Giải thuật tìm đường động …………………………………………………53
4.3.3. Các phương pháp tìm đường đi ngắn nhất khác …………………………...57
4.3.3.1. Giải thuật Depth First Search (Tìm kiếm theo độ sâu) ………………..57
4.3.3.2. Giải thuật Breadth First Search (Tìm kiếm ưu tiên bề rộng)…………..58
KẾT LUẬN ……………………………………………………………………………61
1.KẾT QUẢ ĐẠT ĐƯỢC …………………………………………………….…….61
2.HƯỚNG PHÁT TRIỂN TRONG TƯƠNG LAI ………………………….………61
TÀI LIỆU THAM KHẢO ……………………………………………………….……62
PHỤ LỤC ……………………………………………..………………………………63
CHƯƠNG TRÌNH CÀI ĐẶT MỘT SỐ THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN
NHẤT TRÊN MẠNG ………………………………………………………………..63

// Modul các thuật toán ………………………………………………….....……….63

3


……..o0o…….

LỜI NÓI ĐẦU
Trong thực tế ta thường sử dụng đến mạng lưới điện thoại, giao thông
(đặc biệt là đường hàng không), mạng máy tính… Chúng giữ một vị trí rất quan
trọng trong cuộc sống. Việc nghiên cứu và phát triển kỹ thuật luôn được chú
trọng, nhằm giải quyết các công việc trong những lĩnh vực này một cách linh
hoạt, ví dụ như giảm chi phí ít tốn kém thời gian và còn nhiều hiệu quả. Để giải
quyết những tổn hao đó, việc nghiên cứu phải dựa trên cơ sở toán học đó là lý
thuyết đồ thị hay nói một cách chung lý thuyết đồ thị là một công cụ toán học xây
dựng mô hình cho các vấn đề trên.
Như ta đã biết một mạng điện thoại, mạng máy tính hay một mạng thông
tin nói chung thường có một cấu trúc chung đó là các điểm liên hệ với nhau. Để
mô hình sự liên hệ này, trong toán học lý thuyết đồ thị sẽ biểu diễn bởi một đồ
thị, trong đó đỉnh của đồ thị là điểm thông tin, cạnh của đồ thị là sự liên hệ của
các điểm thông tin, số được gán trên cạnh của đồ thị và biểu diễn khoảng cách
hay chi phí các nút thông tin.
Để hiểu được các quy tắc giảm thời gian và chi phí trên các ứng dụng
thực tế cũng như lý thuyết thì đề tài “ Xây dựng chương trình cài đặt một số
thuật toán tìm đường đi trên mạng ” được thực hiện nhằm giải quyết vấn đề
trên.
Bố cục đồ án gồm bốn chương:
Chương 1. Giới thiệu về ngôn ngữ Visual Basic 6.0
Chương 2. Lý thuyết đồ thị
Một số vấn đề trong lý thuyết đồ thị.

Chương 3. Một số bài toán thiết kế mạng viễn thông và các vấn đề liên
quan
-

Các chỉ tiêu để có một mạng viễn thông tốt .

-

Vấn đề tối ưu trong quy hoạch và thiết kế mạng

Bài toán dự báo số người sẽ truy cập vào mạng viễn thông tại một thời
điểm quan sát nào đó hay số lượng thuê bao mới trong tương lai. Hay vấn

4


đề thiết kế mạng tập trung kết nối đa điểm với M nút cơ sở cần kết nối về
một trung tâm qua N nút quá giang.
-

Vấn đề tối ưu trong quản lý và khai thác tài nguyên mạng

Định tuyến rất quan trọng trong điều hành và quản lý mạng, việc định
tuyến tối dựa trên tiêu chuẩn chi phí nhỏ nhất. Hay vấn đề cần thiết phải
xây dựng mạng riêng ảo .
Chương 4. Các thuật toán tìm đường
Kỹ thuật tìm đường tập trung, phân tán, tìm đường tĩnh, đường động. Các
giải pháp tuần tự, song song, giải pháp động
Cài đặt một số thuật toán tìm đường đi ngắn nhất trong mạng:
Thuật


toán

Dijkstra,

Bellman_Ford,

Floyd,

Depth_First_Search,

Breadth_First_Search .
Đồ án được hoàn thành tại khoa Công nghệ thông tin - Đại học Thái Nguyên
với sự hướng dẫn của thầy giáo ThS. Nguyễn Đình Dũng .

5


CHƯƠNG 1
GIỚI THIỆU VỀ NGÔN NGỮ VISUAL BASIC 6.0
1.1 Tìm hiểu ngôn ngữ lập trình Visual Basic
1.1.1 Giới thiệu Visual Basic
Microsoft Visual Basic (viết tắt là VB) là cách dễ dàng nhất và nhanh
nhất để xây dựng một chương trình ứng dụng chạy trên nền Microsoft
Window.VB cung cấp sẵn một tập đầy đủ các công cụ để làm nhanh, đơn giản
quá trình phát triển ứng dụng.
“Visual” chỉ là cách tạo giao diện người dùng đồ hoạ một cách trực quan.
Thay vì phải viết rát nhiều dòng mã lệnh để mô tả hình dáng và vị trí các phần tử
tạo nên giao diện, ta chỉ cần đặt những đối tượng đã được xây dựng sẵn lên màn
hình.

“Basic” chỉ tới ngôn ngữ lập trình BASIC (Beginners All-Purpose
Symbolic Intruction Code ), một trong những ngôn ngữ lập trình nổi tiếng.
 Visual Basic là một sản phẩm của Micsoft và là một chương trình 32
bit chỉ chạy trên nền Windows 95 trở lên.
 Visual Basic là một ngôn ngữ lập trình theo kiểu hướng đối tượng .
 Có thể thấy ngay được thao tác khi thiết kế.
 Cho phép chỉnh sửa dễ dàng.
 Là ngôn ngữ lập trình cơ sở dữ liệu rất mạnh, hỗ trợ nhiều tính năng
cho phép xử lý dữ liệu một cách dễ dàng, hiệu quả.
1.1.2 Môi trường phát triển của Visual Basic 6.0
Microsoft Visual Basic cung cấp cho người lập trình xây dựng nhanh các
ứng dụng Windows. Khác với ngôn ngữ hướng thủ tục trước đây VB 6.0 là trợ
thủ đắc lực cho thiết kế giao diện và viết chương trình quản lý.
Ngôn ngữ lập trình Visual Basic có 3 ấn bản:
-

Learning: ấn bản này ít được dùng.

-

Prossional: ấn bản này hiện nay được người lập trình sử dụng phổ biến.
Nó cung cấp đầy đủ những gì cần thiết để xây dựng một ứng dụng.

6


-

Enterprise là bản Prossional cộng thêm các công cụ Back Office.


1.1.3 Form và công cụ điều khiển Control
 Thuộc tính, sự kiện, phương thức
 Form
 Control: Label, Text box, Check box, Option Group, List/Combo box …
 Focus
 Dialog box (hộp hội thoại)
a. Thuộc tính, sự kiện, phương thức
Form và Control (điều khiển) của Visual Basic là các đối tượng với thuộc
tính (Property), phương thức (Method) và sự kiện (Event). Thuộc tính là các đặc
điểm qui định đối tượng, phương thức là các hành động và sự kiện là sự đáp ứng
tác động gắn với mỗi đối tượng.
b. Form
Đối tượng Form là thành phần cơ sở của một chương trình viết bằng
Visual Basic, là cửa sổ giao diện với người dùng. Form có thuộc tính, sự kiện và
phương thức.
c. Command button
Command button (nút lệnh) cho phép người sử dụng nhấn vào để thực
hiện một hành động. Khi người dùng nhấn vào nút lệnh, thủ tục sự kiện Click
được gọi. Lập trình viên viết lệnh vào thủ tục sự kiện Click để thực hiện hành
động mong muốn.
d. Label
Label (nhãn) hiển thị văn bản mà người dùng không thể trực tiếp thay đổi.
ta có thể định danh các Control không có thuộc tính Caption như Text box và
Scroll bar. Văn bản được hiển thị trong một Label được điều khiển bởi thuộc tính
Caption, thuộc tính này có thể được đặt khi thiết kế tại cửa sổ Properties hay khi
chạy bằng cách gán giá trị cho nó trong mã chương trình.

7



f. Text box
Text box (hộp soạn thảo) dùng để nhập dữ liệu từ người dùng hay hiển thị
dữ liệu. Tuy nhiên, không nên dùng Text box để hiển thị dữ liệu không được thay
đổi bởi người dùng nếu như không đặt thuộc tính Locked là True.
g. Check box
Check box (hộp đánh dấu) được dùng để đưa ra lựa chọn đúng /sai,
có/không cho người sử dụng.

Hình 1.1: Ví dụ về Check box
h. Option Button và nhốm Option Button
Option (nút tuỳ chọn) được dùng theo nhóm cho phép người dùng chọn
một trong số nhiều lựa chọn.
Tạo nhóm Option Button
Tất cả các Option Button được đặt trực tiếp lên Form tạo thành một nhóm.
Nếu muốn tạo thêm các nhóm những Option Button thuộc nhóm mới phải được
cùng đặt trong một Frame box hay Picture box.
i. List box và Combo box
List box (hộp danh sách) và Combo box (hộp kéo dài) sử dụng để liệt kê
các lựa chọn cho người dùng.

Hình 1.2: Lựa chọn cho người dùng chọn Node
j. Các Control khác
Picture Box Control: Hiển thị kết quả của chương trình, ngoài ra còn
hiển thị hình ảnh qua thuộc tính Picture chứa tên tệp ảnh và đường dẫn.

8


Lightweight Graphic control: Các Control image, shape và line được gọi
là các Lightweight Controls. Chúng hỗ trợ một tập các properties, Method và

event của Picture box.
k. Focus
Focus là khả năng được nhận Input của người dùng từ chuột hoặc bàn phím.
Các sự kiện GotFocus và LostFocus xảy ra khi một đối tượng nhận hay
mất Focus. Form và hầu hết các Control hỗ trợ các sự kiện này.
Sự kiện

Mô tả

GotFocus

Xảy ra khi một đối tượng nhận Focus.
Xảy ra khi một đối tượng mất Focus. Một thủ tục cho sự kiện

LostFocus
LostFocus thường được dùng để thẩm định và kiểm định các cập nhật
hoặc để đảo/đổi điều kiện ta đặt trong thủ tục GotFocus của đối tượng.

Đặt Tab Order
Tab order (thứ tự Tab) là thứ tự mà người dùng di chuyển từ Control này
sang Control khác bằng cách nhấn phím Tab. Mỗi Form có một Tab order riêng
của nó. Thông thường, Tab order là thứ tự các Control.
Để thay đổi Tab order cho một Control, đặt thuộc tính TabIndex. Mặc
định, Control đầu tiên được vẽ có TabIndex bằng 0, cái thứ hai có TabIndex bằng
1, …
Bỏ một Control ra khỏi tab order: Ta có thể bỏ một Control ra khỏi Tab
order bằng cách đặt thuộc tính TabStop bằng False (0).
l. Dialog box
Dialog box dùng để hỏi người dùng dữ liệu cần thiết hoặc dùng để hiện
thông tin cho người dùng. Dialog box là một kiểu đối tượng Form đặc biệt mà có

thể tạo theo 3 cách sau:
Predefined dialog box có thể tạo được từ mã chương trình sử dụng các
hàm MsgBox, InputBox.

9


Customized dialog box có thể được tạo từ Form chuẩn hoặc sửa một
dialog box có sẵn.
Standard dialog box, chẳng hạn Print và File Open, có thể được tạo từ
Common dialog Control.

Hình 1.3: Thông báo cho người sử dụng
1.1.4 Lập trình trên Visual basic
1.1.4.1. Các kiểu dữ liệu có sẵn trong Jet Database Engine
VB bao gồm nhiều kiểu dữ liệu khác nhau, cho phép người lập trình có thể khai
thác các biến theo các kiểu dữ liệu để lưu trữ các kiểu dữ liệu khác nhau.
Các kiểu dữ liệu:

Kiểu

Mô tả

Kích thước

Text

Xâu ký tự

Tối đa 255 ký tự


Memo

Xâu ký tự dài

Tối đa 1.2GB

Byte

Số nguyên

0 đến 255

Integer

Số nguyên

-32768 đến 32767

Long

Số nguyên

-2147483648 đến 2147483647

Counter

Số nguyên kiểu Long,
tăng tự động


Single

Số thực

-3.402823E38 đến -1.401298E-45 với giá trị
âm
1.401298E-45 đến 3.402823E38 với giá trị
dương

10


Số thực

Double

-1.79769313486232E308 đến

-

4.9406565841247E-324 với giá trị âm
4.9406564584124E-324

đến

1.79769313486232E308
Currency

Số thực


-922337203685477.5808

đến

922337203685477.5807
Yes/No

Logic/Boolean

Date

Ngày giờ

Binary

Dữ liệu nhị phân

Tối đa 1.2GB

OLE

OLE object

Tối đa 1.2GB

1.1.4.2. Khai báo biến trong VB
a. Qui tắc đặt tên
Tên thủ tục, hàm,biến, hằng phải tuân theo qui tắc:
 Bắt đầu bằng kí tự chữ.
 Không chứa kí tự phân cách (như [.] hay kí tự rỗng), kí tự khai báo kiểu.

 Không dài hơn 255 kí tự. Tên của Control, Forms, Class và Module không
vượt quá 40 kí tự.
 Không trùng với các từ khoá của ngôn ngữ.
b. Khai báo biến
Cú pháp:
Dim (tên biến) [as (kiểu dữ liệu)]
Khai báo biến với từ khoá Dim trong một thủ tục tồn tại khi thủ tục đó
được chạy; khi thủ tục kết thúc, giá trị của biến đó được giải phóng.
c. Khai báo hằng
Cú pháp:
[Public/Private] Conts(tên hằng) [As (kiểu dữ liệu)]=(giá trị hằng)
Phạm vi hằng số người dùng định nghĩa:

11


 Hằng khai báo trong một thủ tục chỉ có phạm vi trong thủ tục đó.
 Hằng khai báo trong phần Declarations của một Module có phạm vi trong
toàn Module.
 Hằng khai báo trong phần Declarations của một Module với từ khoá
Public có phạm vi trong toàn chương trình.
d. Biến kiểu mảng
Cú pháp:
Dim (tên mảng)[(số phần tử)] as (kiểu dữ liệu)
e. Biến kiểu người sử dụng tự định nghĩa
Cú pháp:
type (tên biến)
(thành phần 1) as (kiểu dữ liệu)
……………………….
(thành phần n) as (kiểu dữ liệu)


f. Gán giá trị cho biến
Cú pháp:
(tên biến) = (biểu thức)
1.1.4.3. Các cấu trúc lặp trong Visual Basic
a. Cấu trúc if … then
Cú pháp 1:
If <biểu thức điều kiện> then

End if
Cú pháp 2:
If <biểu thức logic> then

Else

End if

12


b. Cấu trúc Select … Case
Là một cấu trúc lựa chọn theo một biến hay một điều kiện nào đó. Cấu
trúc này thường sử dụng trong trường hợp cần xét nhiều điều kiện lựa chọn xẩy
ra trên một biến nào đó.
Cú pháp:
Select Case <biến hay biểu thức điều kiện>
Case <giá trị 1>
<câu lệnh 1>

Case <giá trị n>

<câu lệnh n>
[Case else
<câu lệnh Else>]
End Select
c. Cấu trúc For … Next
Là một cấu trúc lặp với số bước lặp cố định. Cấu trúc này thường được sử
dụng khi biết trước số bước lặp. Ở cấu trúc này câu lệnh được thực hiện cho đến
khi hết số bước lặp.
Cú pháp:
For biến_đếm = giá trị đầu To giá trị cuối [bước nhảy]
<câu lệnh>
[Exit For]
Next [biến đếm]
Trong đó,
+ Biến đếm: kiểu số nguyên.
+ Giá trị đầu: Giá trị bắt đầu của biến đếm.
+ Giá trị cuối: Giá trị kết thúc của biến đếm.
+ Bước nhảy: Bước nhảy của mỗi lần lặp. Nếu giá trị này không có mặc
nhiên giá trị của bước nhảy là một.

13


d. Cấu trúc Do … While
Là một cấu trúc lặp thực hiện cho đến khi biểu thức điều kiện thực sự
được thoả mãn. Ở cấu trúc này khi gặp điều kiện thoả mãn thì vòng lặp dừng.
Nếu câu lệnh sai thì bỏ qua các câu lệnh và thực hiện các câu lệnh phía dưới
dòng Loop.
Cú pháp:
Do While <điều kiện>

<câu lệnh>
[Exit Do]
<câu lệnh>
Loop
Hoặc
Do
<câu lệnh>
[Exit Do]
<câu lệnh>
Loop Until <điều kiện>
e. Cấu trúc With
Câu lệnh With cho phép truy cập đến thuộc tính của đối tượng mà không
cần gọi đầy đủ tên đối tượng và tên thuộc tính.
Cú pháp:

With đối tượng
Thuộc tính 1 = thuộc tính
Thuộc tính 2 = thuộc tính

End With

1.1.4.4. Thủ tục và hàm trong Visual Basic
Khi lập trình ta thường gặp những đoạn chương trình lặp đi lặp lại nhiều
lần ở những chỗ khác nhau. Để chương trình đỡ phức tạp, các đoạn này được
thay thế bằng các chương trình con tương ứng, khi cần ta chỉ cần gọi nó ra mà
không cần viết lại cả đoạn. Chương trình con là thủ tục hoặc hàm có dạng sau :

14



- Cấu trục của một thủ tục lặp
Sub <tên thủ tục>
………….’các lệnh’
End Sub
Nếu muốn dùng thủ tục này trong toàn bộ chương trình thì bạn dùng thêm
từ khóa Public trước từ khóa Sub, còn nếu bạn chỉ muốn dùng trong một Form
chứa nó thì bạn thêm từ khóa Private trước từ khóa Sub.
- Cấu trúc hàm
Funtion <tên hàm> (Tham số AS kiểu) As <kiểu trả về>
…………’các lệnh’
Tên hàm = Giá trị trả về
End Funtion

15


CHƯƠNG 2
LÝ THUYẾT ĐỒ THỊ
2.1. Các định nghĩa đồ thị
2.1.1. Định nghĩa đồ thị
Đồ thị là một cấu trúc rời rạc bao gồm các đỉnh và các cạnh nối các đỉnh
này, các loại đồ thị khác nhau được phân biệt bởi kiểu và số lượng cạnh nối hai
đỉnh nào đó của đồ thị.
Giả sử X là tập hữu hạn, không rỗng các phần tử nào đó và U thuộc X´X.
Bộ G = <X, U> được gọi là đồ thị hữu hạn. Mỗi phần tử x thuộc X gọi là một
đỉnh và mỗi phần tử u = (x,y) thuộc U gọi là một cạnh của đồ thị G = <X, U>.
Xét một cạnh u thuộc U khi đó tồn tại 2 đỉnh x, y ẻ X sao cho u = (x, y), ta
nói rằng x nối với y hoặc x và y thuộc u.
x


u

y

- Nếu cạnh u = (x, y) mà x và y là hai đỉnh phân biệt thì ta nói x, y là hai
đỉnh kề nhau.
- Nếu u = (x, x) thì u là cạnh có hai đỉnh trùng nhau ta gọi đó là một
khuyên.
- Nếu u = (x, y) mà x,y là cặp đỉnh có phân biệt thứ tự hay có hướng từ x
đến y thì u là một cung, khi đó x là gốc còn y là ngọn hoặc x là đỉnh ra, y là đỉnh
vào.
- Khi giữa cặp đỉnh (x, y) có nhiều hơn một cạnh thì ta nói những cạnh
cùng cặp đỉnh là những cạnh song song hay là cạnh bội

y

a)
a. Tại đỉnh y có một khuyên

x

y

b)

x

y

c)


b. Một cung có hướng từ x sang y

c. Cặp đỉnh (x, y) có 2 cạnh song song

16


Hình 1.1
Trong thực tế ta có thể gặp nhiều vấn đề mà có thể dùng mô hình đồ thị để
biểu diễn, như sơ đồ một mạng máy tính, sơ đồ mạng lưới giao thông, sơ đồ thi
công một công trình.
Ví dụ: Xét một mạng máy tính, có thể biểu diễn mạng này bằng một mô
hình đồ thị, trong đó mỗi máy là một đỉnh, giữa các máy được nối với nhau bằng
các dây truyền, chúng tương ứng là các cạnh của đồ thị. Một mô hình mạng máy
tính như hình 1.2 trong đó có các máy tính A, B, C, D tương ứng là các đỉnh,
giữa 2 máy được nối trực tiếp với nhau thì tương ứng với 1 cặp đỉnh kề nhau.
A

B

C
D

Hình 1.2 Ví dụ về một đồ thị
2.1.2. Đồ thị đơn
Đồ thị G = <X, U> được gọi là đồ thị đơn nếu giữa hai đỉnh bất kỳ được
nối với nhau bởi không quá một cạnh (cung), tức là đồ thị không có cạnh bội,
không có khuyên.
Hình 1.2 là một ví dụ về đồ thị đơn

2.1.3. Đa đồ thị
Đồ thị G = <X, U> được gọi là đa đồ thị nếu nó có ít nhất một cặp đỉnh
được nối với nhau bởi hai cạnh (hai cung) trở lên.
2.1.4. Giả đồ thị
Là đồ thị có ít nhất một khuyên, có thể chứa cạnh bội, cạnh đơn. Tóm lại
đây là loại đồ thị tổng quát nhất.
A

B
A

a)

D

C

B

b)
C
D

Hình 1.3 a. Đa đồ thị

b. Giả đồ thị

17



2.2. Các loại đồ thị
2.2.1. Đồ thị vô hướng
Đồ thị G=<X,U> được gọi là đồ thị vô hướng nếu tất cả các cạnh thuộc U
mà cặp đỉnh thuộc nó e = (x,y) thuộc X không phân biệt thứ tự. Đồ thị vô hướng
là đồ thị không có bất kỳ một cung nào.
Ví dụ: như hình 1.3.a là biểu diễn của một đồ thị vô hướng.
2.2.2. Đồ thị có hướng
Đồ thị G = <X, U> được gọi là đồ thị có hướng nếu tất cả các cạnh e thuộc
U mà cặp đỉnh thuộc nó e = (x, y) thuộc X có phân biệt thứ tự. Đồ thị có hướng
là đồ thị mà mọi e = (x, y) thuộc X đều là cung.
C
A

B

Hình 2.1 Đồ thị có hướng
2.2.3. Đồ thị hỗn hợp
Đồ thị G=<X,U> vừa có cạnh vô hướng, vừa có cạnh có hướng thì nó
được gọi là đồ thị hỗn hợp, loại đồ thị này rất ít khi được dùng tới.
Chú ý rằng vấn đề phân chia đồ thị và các thuật ngữ về đồ thị chỉ mang tính
tương đối, hiện nay vẫn còn chưa mang tính thống nhất chuẩn trên nhiều tài liệu.

2.3. Một số khái niệm và tính chất cơ bản của đồ thị
2.3.1. Bậc đồ thị
2.3.1.1. Bậc đồ thị vô hướng
Cho đồ thị vô hướng G = <X,U>. Xét 1 đỉnh x thuộc X đặt m(x) là số
cạnh thuộc đỉnh x khi đó m(x) được gọi là bậc của đỉnh x. Nếu x có một khuyên
thì m(x) được cộng thêm 2.
x


x

m(x) = 3

m(x) = 2

- Nếu m(x) = 0 thì đỉnh x được gọi là đỉnh cô lập
- Nếu m(x) = 1 thì đỉnh x được gọi là đỉnh treo
Ta đặt

m(G) 

 m(x)

x X

18


thì m(G) được gọi là bậc của đồ thị vô hướng G = <X, U>
2.3.1.2. Bậc đồ thị có hướng
Cho đồ thị có hướng G= <X,U> xét 1 đỉnh x thuộc X, ta ký hiệu m+(x) là
số các cung vào của đỉnh x, còn m -(x) là số các cung ra khỏi x. Khi đó ta gọi
m +(x) là bậc vào của đỉnh x còn m-(x) là bậc ra của đỉnh x.
- Nếu m+(x) + m-(x) = 0 thì đỉnh x được gọi đỉnh là cô lập
- Nếu m+(x) + m-(x) = 1 thì đỉnh x được gọi là đỉnh treo
Ta đặt

m(G) 


m



(x) 

x X

m



(x)

xX

Khi đó m(G) được gọi là bậc của đồ thị có hướng G = <X,U>.
Trong đồ thị có hướng thì m+(x) = m-(x) = | U |
Ví dụ:
- Xét đồ thị vô hướng như trong hình 1.3.a ta có:
m(G) = m(A) + m(B) + m(C) + m(D) = 2 + 5 + 2 + 1 = 10
- Xét đồ thị có hướng trong hình 2.1 ta có:
m(G) = [m +(A) + m +(B) + m+(C) ] + [m -(A) + m -(B) + m -(C)]
= [1 + 2 + 1] + [2 + 1 +1] = 8
Định lý:
Cho đồ thị hữu hạn G = <X,U> khi đó bậc của đồ thị G bằng 2 lần số cạnh
của đồ thị, tức là m(G) = 2| U |.
Chứng minh:
Ta thấy một cạnh thuộc 2 đỉnh, nếu xoá một cạnh thì bậc của G giảm đi 2,
nếu xoá một khuyên u = (x, x) thì bậc của G cũng giảm đi 2, còn nếu xoá hết

cạnh, hết khuyên thì bậc của đồ thị bằng 0. Từ đó suy ra định lý.
Hệ quả: Số đỉnh bậc lẻ của đồ thị G = <X,U> là một số chẵn
Chứng minh:
Gọi A và B tương ứng là tập đỉnh bậc lẻ và tập đỉnh bậc chẵn của đồ thị.

2m   m(x) 
xX

 m(x)   m(x)
x A

xB

19


Ta có:
Do vế trái chẵn nên tổng vế phải cũng là số chẵn. Mà tổng bậc của các
đỉnh bậc chẵn (x thuộc A) là số chẵn nên tổng bậc của các đỉnh bậc lẻ (x thuộc B)
phải là số chẵn, do tất cả các số hạng của nó là số lẻ, nên tổng này phải gồm một
số chẵn các số hạng. Vì vậy số đỉnh bậc lẻ phải là số chẵn.
2.3.2. Đường đi và chu trình
a) Đường đi
Xét đồ thị G = <X,U> với
- Tập đỉnh X = {x1,x2,...,xn}
- Tập cạnh U = {u1,u2,...,u m}
Tập hợp các đỉnh kề nhau từ xi đến xj được gọi là 1 đường đi, kí hiệu
xixi1xi2 ... xj ≡ xiuixi1u i1xi2ui2 ... ujxj
Trong đó các cạnh, các đỉnh trong đường đi có thể lặp lại
Độ dài của đường đi bằng số các cạnh (hoặc cung) trong đường đi đó.

* Chú ý rằng trong đồ thị có hướng, trên một cung uv chẳng hạn thì đường đi chỉ
có thể đi từ gốc (u) đến ngọn (v) không thể đi ngược lại.
b) Chu trình
Xét một đường đi từ xi - xj. Nếu xi ≡ xj thì đường đi này được gọi là một
chu trình. Như vậy chu trình là một đường đi có đỉnh xuất phát và đỉnh kết thúc
trùng nhau.
* Chú ý rằng đường đi trong đồ thị có hướng không được đi ngược chiều mũi tên
- Đường đi (chu trình) được gọi là đơn nếu nó đi qua mỗi cạnh không quá
một lần.
- Đường đi (chu trình) được gọi là sơ cấp nếu nó đi qua mỗi đỉnh đúng
một lần
A

B

E
C

D

Hình 3.1

20


Ví dụ như ở hình 3.1 ADBE là một đường đi sơ cấp từ A đến E độ dài 3;
ABCDBE là đường đi không sơ cấp ( qua B 2 lần) từ A đến E độ dài 5; ABDAB
là một đường đi không đơn (chứa cạnh AB 2 lần) từ A đến B độ dài 4; ABDA
Là 1 chu trình đơn và sơ cấp độ dài 3; CC là đường đi độ dài 0.
Xét đồ thị có hướng như hình 2.1 thì ABCB là một đường đi độ dài 3;

CBA không là một đường đi vì không có cung đi từ B đến A.
Định lý:
Nếu trong đồ thị G = <X,U> các đỉnh đều có bậc không nhỏ hơn 2 ( "x
thuộc X | m(x) ³ 2 ) thì trong G tồn tại ít nhất một chu trình.
Chứng minh:

Xét tất cả các đường đi đơn. Vì đồ thị là hữu hạn cho nên số

các đường đi đơn là hữu hạn. Chọn một đường đi là dài nhất nào đó ví dụ từ xi1
đến xij +1 (xem hình vẽ dưới đây). Theo giả thiết m(x) ³ 2 nên tồn tại ít nhất một
đỉnh xi0 và một cạnh nối đỉnh xi1 và xi0. Đỉnh xi0 thuộc một trong các đỉnh trên
đường đi đã chọn chẳng hạn xij vì đường đi là dài nhất, nên chứng tỏ tồn tại
một chu trình trong đường đi.
xi1

xi2

xi3

xij

xij+

xi0

2.3.3. Đồ thị liên thông
Cho đồ thị G = <X,U>. Hai đỉnh phân biệt x,y thuộc X được gọi là liên
thông nếu tồn tại một đường đi nối các đỉnh x, y với nhau. Đồ thị G được gọi là
liên thông nếu với hai đỉnh phân biệt bất kỳ trong đồ thị đều là liên thông.
Ví dụ như hình 3.1 là một đồ thị liên thông vì luôn có đường đi nối hai

đỉnh bất kỳ của đồ thị, còn đồ thị như hình 3.2 là không liên thông vì không có
đường đi từ A tới D hoặc từ D tới F v.v..
Xét 2 đồ thị liên thông
G1 = <X1, U1> và G2 = <X2, U2>
Trong đó:

X1 ^ X2 = rỗng
và U1 ^ U2 = rỗng

Khi đó:

X = X1 ^ X2

21


U = U1 ^ U2
Thì G = <X,U> là đồ thị có 2 thành phần liên thông G1, G2.
A

B

D

E

F

C


Hình 3.3
Ví dụ như đồ thị trong hình 3.3 có ba thành phần liên thông sau:
G1 = <X1, U1> với X1= {A,B,C} và U1 = {AB, AC, CB}
G2 = <X2, U2> với X2= {D, E} và U2 = {DE}
G3 = <X3, U3> với X3= {F} và U3 = 0
Cho đồ thị có hướng G = <X, U>
- G được gọi là đồ thị liên thông yếu nếu đồ thị vô hướng tương ứng với
nó là liên thông
- G là liên thông một chiều nếu với hai đỉnh x,y khác nhau bất kỳ của G
luôn có đường đi x - y hoặc đường đi y - x.
- G là liên thông mạnh (liên thông 2 chiều) nếu hai đỉnh x,y khác nhau bất
kỳ của G đều có đường đi x - y và đường đi y - x.
A

B

A

B

A

B

D

D

D


C

C

C

H2

H3

H1
Hình 3.4

Ở hình 3.4 đồ thị H1 là liên thông mạnh, giả sử cặp đỉnh (A,C) ta có chiều
đi từ C tới A, và đồng thời cũng có chiều đi từ A tới C, và bất kỳ các cặp đỉnh
khác cũng tương tự như vậy. H2 là liên thông một chiều vì xét cặp đỉnh (A,D) có
chiều đi từ D tới A nhưng không có chiều đi từ A tới D. H3 là liên thông yếu vì

22


tồn tại cặp đỉnh (B,C) không có chiều đi B - C cũng không có chiều đi C - B,
nhưng đồ thị vô hướng tương ứng là liên thông.
2.3.4. Đồ thị con và đồ thị bộ phận
Cho đồ thị G = <X,U>
- Nếu trong đồ thị đó ta bỏ đi một số đỉnh nào đó và các cạnh xuất phát từ
đỉnh đó thì phần còn lại của đồ thị được gọi là đồ thị con của đồ thị G đã cho,
hoặc là nếu D = <X',U'> là đồ thị con của G = <X,U> thì X' thuộc X và U' thuộc
U
- Nếu trong đồ thị G ta bỏ đi một số cạnh nhưng giữ nguyên các đỉnh thì

phần còn lại của đồ thị được gọi là đồ thị bộ phận của đồ thị G.

23


CHƯƠNG 3
MỘT SỐ BÀI TOÁN THIẾT KẾ MẠNG VIỄN
THÔNG VÀ CÁC VẤN ĐỀ LIÊN QUAN
3.1. Các chỉ tiêu chất lượng mạng
Chất lượng dịch vụ của một mạng viễn thông thể hiện mức độ hài lòng
của người sử dụng các dịch vụ trên mạng đó. Ta không thể đo lường mức độ hài
lòng này. Tuy nhiên ta biết rằng, chất lượng dịch vụ được đảm bảo nhờ chất
lượng mạng. Tìm hiểu chỉ tiêu chất lượng mạng chính là tìm hiểu các chỉ tiêu mà
sau này bài toán tối ưu sẽ hướng tới.
Theo định nghĩa của ITU tại khuyến nghị E.800, chất lượng mạng là
năng lực của một mạng ( hoặc một phần của mạng ) thực hiện các chức năng có
liên quan đến khả năng truyền thông giữa những người sử dụng. Theo quan điểm
công nghệ, chất lượng mạng là các tham số thể hiện năng lực của mạng, nó có
thể được tính toán, đo lường, điều khiển để đảm bảo chất lượng các dịch vụ cung
cấp trên mạng.
3.1.1. Chất lượng mạng
Chất lượng mạng thể hiện qua chất lượng chuyển mạch, chất lượng
truyền dẫn và độ tin cậy của mạng.
Chất lượng chuyển mạch được thể hiện thông qua thời gian cần thiết để
thiết lập kết nối và chất lượng kết nối. Trong các mạng viễn thông, một số lượng
lớn người sử dụng cùng chia sẻ một số lượng hữu hạn các phần tử mạng. Nhu
cầu người sử dụng xuất hiện ngẫu nhiên nên sinh ra hiện tượng xếp hàng đợi, dẫn
đến trễ, tắc nghẽn và tổn thất cuộc gọi. Chất lượng chuyển mạch được quyết định
bởi cấu trúc mạng, khả năng xử lý của các nút mạng và lưu lượng phát sinh trên
mạng. Thông thường, chất lượng chuyển mạch được thể hiện qua tổn thất và trễ.

Tổn thất là các cuộc gọi, gói hoặc tế bào (gọi chung là cuộc gọi) bị mất do tắc
nghẽn lưu lượng tại trường chuyển mạch hoặc trên các nhóm trung kế hay người
được gọi bận… Tổn thất thường được diễn tả bởi xác suất tổn thất (tỷ lệ mất cuộc
gọi). Trễ là khoảng thời gian mà các cuộc gọi phải chờ để được thiết lập kết nối

24


do nhu cầu xử lý lớn hơn năng lực của hệ thống. Trong mạng chuyển mạch kênh
đó là khoảng thời gian từ người gọi bắt đầu cuộc gọi đến khi nhận được âm quay
số, thời gian từ khi quay số đến khi gửi tín hiệu chuông nghe rõ (trễ quay số), hay
thời gian từ khi kết thúc cuộc gọi đến khi sẵn sàng cho cuộc gọi khác (trễ khôi
phục). Trong mạng chuyển mạch gói hoặc mạng ATM, trễ bao gồm trễ chuyển
mạch, trễ đóng/tháo gói, trễ hàng đợi… Trễ được đặc trưng bởi thời gian trễ
trung bình hay xác suất trễ. Trong các hệ thống có tổn thất, các cuộc gọi đến lớn
hơn khả năng xử lý của hệ thống sẽ lập tức bị từ chối (hiện tượng tổn thất xảy
ra). Ngược lại, trong các hệ thống có trễ, khi các cuộc gọi đến lớn hơn khả năng
xử lý của hệ thống thì sẽ được dựa vào hàng đợi tại các bộ đệm (cuộc gọi chỉ bị
trễ chứ không bị mất). Tuy nhiên nếu các cuộc gọi xếp hàng quá nhiều và lớn
hơn dung lượng bộ đệm tại hàng đợi thì vẫn có hiện tượng tổn thất xảy ra.
Chất lượng truyền dẫn biểu thị mức độ chính xác của việc truyền dẫn
thông tin trên mạng, là do yếu tố chính quyết định độ trung thực của tín hiệu tại
đầu thu so với đầu phát. Trong mạng thoại chất lượng truyền dẫn quyết định chất
lượng tiếng, bao gồm độ rõ và âm lượng âm thanh. Trong các hệ thống truyền
dẫn số, chất lượng truyền dẫn được thể hiện bằng các tham số BER (tỷ lệ lõi bit),
PER (tỷ lệ lỗi gói) hay phần trăm giây lỗi nghiêm trọng (SES%)…
Độ ổn định của mạng chỉ ra độ tin cậy của mạng, tức khả năng mạng
thực hiện được các chức năng theo yêu cầu. Trong các mạng viễn thông, độ tin
cậy của tổng đài, các đường truyền dẫn cũng như các thiết bị ngoại vi khác quyết
định độ ổn định của mạng. Việc phân tích, tính toán độ ổn định của mạng có thể

thực hiện dựa trên các nguyên lý của lý thuyết hệ thống và lý thuyết độ tin cậy.
Ngoài các chỉ tiêu đã nêu, khả năng tính cước cũng là một phần quan
trọng của chất lượng mạng, bởi vì nó ảnh hưởng trực tiếp đến người sử dụng.
Khả năng tính cước phụ thuộc vào cả ba chỉ tiêu chất lượng mạng đã nêu. Tỷ lệ
cuộc gọi bị tính cước sai, số cuộc gọi kéo dài, băm nhỏ… thường được sử dụng
để đánh giá khả năng tính cước của hệ thống.

25


×