Tải bản đầy đủ (.doc) (56 trang)

CÁC GIẢI THUẬT TÌM ĐƯỜNG ĐI NGẮN NHẤT BẰNG LÝ THUYẾT VÀ THỰC TẾ, RỒI MÔ PHỎNG TRÊN MÔI TRƯỜNG ĐỒ HỌA CỦA WINDOWS

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 (297.18 KB, 56 trang )

Bài toán tìm đường đi có nhiều dạng, chẳng hạn như tìm đường đi của
đồ thò có hướng, vô hướng, trọng số của đồ thò có thể là khoảng cách giữa
hai node hay chi phí để đi từ node này đến node kia.

Trong đề tài này em sử dụng phần mềm VISUALL C++, để hiện thực
các giải thuật: Dijsktra, Bellman Ford, Shorttest Path Routing, Floyd. Để từ
đó đánh giá xem việc tìm đường bằng lý thuyết được thực tiển không.

Đề tài này gồm hai phần:

PHẦN I:

Tìm hiểu các giải thuật tìm đường tỉnh .

PHẦN II:

Mô phỏng các giải thuật trên môi trừơng đồ hoạ windows.

Vì thời gian hạn hẹp cũng như kiến thức có gới hạn với lại đây là đề
tài rộng với ba người thực hiện như vì hai người khác chuyển đổi đề tài, nên
em chỉ giải quyết những giải thuật cần thiết trong việc tìm đường đi ngắn
nhất.

Ngày 03 – 7 – 1999.

Sinh viên thực hiện: Lâm Thanh Minh


Chương 1:

MỞ ĐẦ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ệctrong những lónh vực này một cách linh hoạt, ví dụ như giãm
chi phí it1 tốn kém thời gianvà 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 ngành toán học đó là lý thuyết đồ thò (GRAPH
THEORY ) 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 đ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 qui tắc giãm được 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 này là “tìm hiểu các giải thuật tìm đườngđi ngắn
nhấtbằng lý thuyết và thực tế, rồi mô phõng trên môi trường đồ họa của
windows”.
Nội dung đưa ra những giải thuật tìm đường đi ngắn nhất giữa hai đỉnh nguồn (X)
và đỉnh đích (Y) nào đó và dùng các giải thuật đó để mô phõng trên môi trường đồ
họa windows.

I/ Giới thiệu về GRAPH (đồ thò) :
1. Đònh nghóa :
Đồ thò là tập hợp các đỉnh, các cạnh và sự liên hệ giữa hai tập hợp này có trật
tự.
Kí hiệu đồ thò G(V,E).
E: Tập hợp các cạnh.
V: Tập hợp các đỉnh.

L: Là quan hệ giữa E và V.
Ví dụ:
Cho đồ thò G(V,E,I) như sau:
V={A,B,C,D}
E={e,f,g,h}
I={(AeB), (AfD), (BhD), (BgC)}
Đồ thò được biểu diễn như sau:
g
e
A

C

h
f
D


2. phân loại đồ thò:
a/ Đồ thò vô hướng và đồ thò hữu hướng:
• Đồ thò vô hướng : Không phân biệt cạnh nối từ đỉnh A đến đỉnh B và từ đỉnh B
đến đỉnh A. Nghóa độ dài chiều AB bằng chiều ngược lại BA.

Ví dụ đồ thò như hình vẽ:

B
g

e
A


C

h
f
D



Đồ thò hữu hướng: Phân biệt cạnh nối từ đỉnh A đến đỉnh B và từ đỉnh B đến
đỉnh A là khác nhau.
B
g

e
A

C

h
f
D


b/ Đồ thò có trọng số:
Là đồ thò mỗi cạnh được gán một số.
c/ Đồ thò đầy đủ:
Là đồ thò có mọi cặp đỉnh đều có đúng một cạnh nối chúng.
d/ Đồ thò liên thông:
Là đồ thò mà mọi cặp đỉnh đều có đường nối.

e/ Đường đi:
Đường đi giữa hai đỉnh là một chuỗi cạnh nối tiếp nhau nối hai đỉnh đó.
f/ Chu trình:
Là một đường đi khép kín.
3. Cây:
• cây là đồ thò liên thông không có chu trình.
• Mọi cặp đỉnh trong cây có duy nhất một đường nối.
• Đồ thò liên thông có v đỉnh và có v – 1 cạnh là một cây.
• Cây phủ của một đồ thò liên thông là đồ thò con có cùng số đỉnh với đồ thò chứa
nó và là một cây.
4. Biểu diễn của đồ thò:
Cho đồ thò G(V,E). Có hai cách biểu diễn đồ thò trong bộ nhớ tùy theo đồ thò đầy
hay thưa. Đó là biểu diễn bằng ma trận và danh sách.
a/ Danh sách kề:
Danh sách kề là một danh sách liên kết, mỗi phần tử của danh sách kề là một
danh sách chứa các đỉnh mà nó nối tới. Cách biểu diễn này thích hợp với đồ thò
thưa.
b/ Ma trận kề:
Gồm một mảng cấp nxn. Chứa tất cả các đỉnh cũng như chiều dài của các cạnh.
Cách biểu diễn, mỗi phần tử a[i,j]= TRUE (hoặc 1) tức có cạnh nối từ i đến j
ngược lại a[i,j] = FALSE (hoặc 0) nếu không có cạnh nối từ i đến j. Cách biểu
diễn này thích hợp cho đồ thò đầy.
Ví dụ: cho đồ thò.
B
g

e
A

C


h
f
D


Có ma trận kề là:
A

B

C

D

A

0

1

0

1

B

1

0


1

1

C

0

1

0

0

D
1
1
0
0
5. Chọn cấu trúc dữ liệu cho đồ thò:
Từ việc phân tích trên ta nhận thấy rằng bài toán cho một đồ thò là một mạng máy
tính mà các đỉnh của đồ thò trở thành các máy tính trên mạng, các cạnh trên đồ thò
trở thành đường truyền nối giữa các máy tính trên mạng, các con số được gán trên
đồ thò trở thành lưu lượng đường truyền giữa các máy tính trong mạng. Ngòai ra ta
cũng thấy rằng từ một đỉnh bất kỳ nối tới các đỉnh còn lại là hữu hạn, số đường nối
rất ít. Nhưng vì trong đề tài ta chỉ mô phỏng cho một mạng bằng đồ thò nên tùy
theo giải thuật mà ta có thể qui đònh cho đồ thò là đồ thò hữu hướng hay vô hướng.
Và ta chọn cấu trúc dữ liệu cho đồ thò là ma trận kề và ma trận có trọng số.


Chương 2:
GIỚI THIỆU SƠ LƯC CÁC GIẢI THUẬT
Với yêu cầu của đề tài thì em đã tìm hiễu các giải thuật được đưa ram, dựa theo
cách thức duyệt đồ thò, đó là các giải thuật:
I/ Các giải thuật tìm hiểu trên lý thuyết:

A/ Các giải thuật tìm đường tónh :
* Giải thuật sử lý tuần tự:

1. Dijkstra: Giải thuật này tìm đường đi ngắn nhất từ một Node X(Node nguồn)
đến Node Y (Node đích) và được thực hiện tuần tự.
2. Floyd warshall: Giải thuật này tìm đường đi ngắn nhất giữa mọi cặp đỉnh trong
đồ thò có hướng. Giải thuật Floyd có thể thực hiện song song hay tuần tự dưới
nhiều mô hình khác nhau.
3. Shortest path routing: Giải thuật này tìm đường đi ngắn nhất từ một đỉnh đến
tất cả các đỉnh trong đồ thò có trọng số và thực hiện tuần tự .

* Giải thuật sử lý song song :

4. Floyd - warshall: Giải thuật này tìm đường đi ngắn nhất giữa mọi cặp đỉnh
trong đồ thò có hướng. Giải thuật Floyd có thể thực hiện song song hay tuần tự
dưới nhiều mô hình khác nhau.


5. Bellman Ford: Giải thuật này thực hiện song song.

B/ Các giải thuật tìm đường động :

6. Flooding routing (vết dầu loang): Giải thuật tìm đường động
7. Link sate routing.

8. Distanve vector routing.

C/ các phương pháp tìm đường đi ngắn nhất khác:
9. Fixid routing: Tìm đường cố đònh.
10. Random routing: Tìm đường tình cờ.
11. Adapter routing.
12. Giải thuật leo núi.
13. Giải thuật giá thành nhỏ.
14. Depth First search: Tìm đường theo chiều sâu.
15. Breadth First searc: Tìm đường theo chiều rộng.

Chương 3:
MỘT SỐ VẤN ĐỀ LIÊN QUAN ĐẾN VIỆC TÌM ĐƯỜNG

MÔ HÌNH HỆ THỐNG ROUTING TĨNH
I. GIỚI THIỆU :
Để xem xét một hệ thống mạng phục vụ cho việc tìm đường cho truyền message
như thế nào. Ta xây dựng một mô hình mô phỏng cho mạng để nghiên cứu tính
hiệu quả của mạng phục vụ việc truyền nhận các message như thế nào. Ở đây ta
đánh giá thời gian delay trung bình của mỗi message trong hệ thống.
Mô hình hệ thống routing tónh giống như mô hình hệ thống mạng hàng, gồm mỗi
hàng đơn là M/M/1. Hệ thống này là một mạng hàng mơ,û khách hàng từ ngoài hệ
thống có thể vào bất kỳ Slave nào trên mạng và rời khỏi hệ thống khi được phục
vụ xong. Khách hàng đi trên đường liên lạc của mạng. Đường đi của khách hàng
trong hệ thống được xác đònh trước theo thuật giải tìm đường routing tónh (xác đònh
qij_xác suất mà khách hàng sau khi phục vụ ở Slave i và đi đến nút j).
Mỗi trung tâm xử lý i tương ứng với link i của mạng bao gồm một Slave với tốc độ
phục vụ (i và hàng chờ của các message cần gởi trên mạng(có giới hạn). Hàng
được phục vụ theo cơ chế FIFO. Hàng đợi ở mỗi node là có giới hạn vì thường tài
nguyên của mạng đều có giới hạn. Tốc độ đến của khách hàng (message) vào hệ

thống do người đánh giá hệ thống nhập vào .
II. CÁC THÔNG SỐ CỦA HỆ THỐNG :
Tốc độ phục vụ tại Slave i là m i=tốc độ truyền của link i/chiều dài của message e
Tốc độ đến tại hàng đợi của Slave i là l i =g i + å (qji (trong đó e là số đường kết
nối của mạng. j=1
Thời gian đợi trung bình của message là T = N/ g .
trong đó: g là tốc độ đến của khách hàng vào hệ thống.


N là số khách hàng trung bình trong hệ thống.
Hệ thống này được mô phỏng để đánh giá thời gian chờ (delay) trung bình của mỗi
message trong hàng đợi.
Hệ thống mạng này có giải thuật tìm đường theo phương pháp routing tónh, giao
thức truyền nhận đơn giản (tức khi gởi từ máy này đến máy khác bảo đảm nhận
đúng).
Hệ thống này được tiếp cận theo cơ chế sắp xếp sự kiện (có 2 sự kiện chính : sự
kiện đến và đi của message).
Trạng thái của hệ thống được biểu diễn bởi số message trong các hàng đợi và số
trạng thái các Slave các máy đang chuẩn bò gởi message .
Thời gian xảy ra sự kiện được chứa trong hàng FEL.
Hệ thống này có bộ đếm thống kê chứa các biến : số message đợi, tổng thời gian
đợi của các message .
Thời điểm đến của các message, thời gian các Slave (máy) xây dựng message
theo đúng với giao thức mạng cũng là ngẫu nhiên được phân bố theo hàm Poisson .
Khi có một message bắt đầu được gởi từ máy i tới máy j, thì sau một thời gian
truyền xác đònh trước, message này sẽ đến các máy trung gian k,....Các máy trung
gian tiếp tục gởi message này đi cho đến khi tới đích (máy j). Do việc gởi được
tiến hành như thế nên message được lưu lại trong hàng đợi của mỗi máy trung gian
khi máy đó đang bận ( trạng thái BUSY ), hoặc được gởi thẳng khi máy đó đang
rãnh ( trạng thái IDLE).

Hàng đợi được quản lý theo cơ chế FIFO.
Message (khách hàng) vào hệ thống tại nút bất kì và ra khỏi hệ thống khi message
đó đã đến đích cần gởi đến.
Điều kiện để kết thúc mô phỏng là thời gian mô phỏng đạt đến thời gian đònh
trước.
Vấn đề tìm đường trong hệ thống mạch chuyển gói phức tạp hơn trong hệ
thống chuyển mạch điện tử.
- Chức năng của mạch chuyển gói là nhận những gói từ trạm nguồn và cung cấp
nó đến người nhận. Để hoàn thành việc đó một con đường hay một routing
thông qua mạng được chọn, thông thường khả năng cho phep nhiều hơn. Điều
đó có nghóa là con đường được chọn phải mạnh. Đảm bảo một só yêu cầu cần
thiết trong chức năng đường truyền như thoả mản các tính chất sau:
• Correctrer and Simplicity ( đúng và đơn giản). Đảm bảo các packet phải đến
được nơi nhận và thuật toán phải dể hiện thực.
• Robustrer (Linh động). Có khả năng hoạt động ngay sau khi thay đổi về hệ
thống.
Thay đổi:
Topology.
Traffic.
Cũng như những sự cố bất thường xãy ra trong một mạng máy tính thường xuyên.
• Công bằng và tối ưu: Các thuật toán phải đảm bảo công bằng và cố gắng truyền
các packet tới nơi nhận nhanh nhất.


- Sự chọn đường thường dựa vào tiêu chuẩn đơn giản là chọn đường đi ngắn nhất
(một đường thông qua mạng với it1 node nhất ) thông qua mạng. Tiêu chuẩn chung
cho đường ngắn nhất là đường giá trò nhỏ nhất không trong trường hợp đó, giá trò
bao gồm cho tường đường, và đường thông qua mạng bao gồm tích lũy giá trò bé
nhất.
- Để giải quyết các yêu cầu trên người ta đưa ra các giải thuật tìm đường đi ngắn

nhất theo từng trường hợp khác nhau, mà em đi tìm hiểu cũng như đi phân tích
các giải thuật đó.
- Do đó có nhiều kỹ thật tìm đường khác nhau. Sự phân biệt giữa chúng chủ yếu
căn cứ vào các yếu tố liên quan đến hai chức năng trên, đó là:
• Sự phân tán của các chức năng trên các nút của các mạng. (a)
• Sự thích nghi của trạng thái hiện hành của mạng. (b)
• Các tiêu chuẩn tối ưu để chọn đường. (c)
Dựa vào yếu tố (a) ta có kỹ thuật tìm đường tập trung (centralized routing) hoặc
phân tán (Dynamic routing).
Dựa vào yếu tố (b) ta có kỹ thuật tìm đường tónh (static routing) hoặc tìm đường
động (dynamic routing).
Cuối cùng, các kỹ thuật chọn đườngcùng loại , theo (a) và (b) lại có thể phân biệt
bởi yếu tố (c). Tiêu chuẩn tối ưu để chọn đường được xác đònh bởi người quả lý
mạng hoặnc người thiết kế mạng, nó có thể là :
• Độ trể trung bình của việc truyền gói tin.
• Số lượng nút trung giangiữa nguồn và đích của gói tin.
• Độ an toàn của việc truyền tin.
• Cước phí truyền tin.
•…
- Việc chọn tiêu chuẩn tối ưu, như vậy phù thuộc vào nhiiều bối cảnh mạng
(topology, thông lïng, mục dđích sử dụng…). Các tiêu chuẩn có thể thay đổi vì
bối cảnh về mạng nhưng cũng có thể thay đổi theo thời gian. Do vậy đưa ra các
giải thuật giải quyết các bài toán tìm đường đi ngắn nhất.
- Và hiệu quả của các giải thuật cũng khác nhau, có giải thuật cho biết kết quả
chính xác sau thời gian tính toán khá lâu, có giải thuậtû cho kết quả gần đúng,
nhưng chỉ tốn một thời gian ngắn. Do vậy tùy thuộc vào các giải thuật tương
ứng (như các giải thuật chọn thoả mãn về thời gian tuy nhiên đường đi không
hoàn toàn chính xác). Nhưng người sử dụng luôn luôn mong muốn tìm được
giải thuật tìm đường nhanh nhất và chính xác.
III. Kỹ thuật tìm đường tập trung (centralized) hoặc phân tán (distributed routing).

- Tìm đường tập trung: Được tập trung bởi sự tồn tại của một hoặc vài trung tâm
điều khiển mạng thực hiện việc chọn đường sau đó gửi các bản tìm đường tới
tất cả các nút dọc theo con đường đã được chọn. Trong trường hợp này thông
tin tổng thể của mạng cần dùng cho việc tìm đường chỉ được cất giữ tại trung
tâm điều khiển mạng.
Các nút mạng có thể không gửi bất kỳ thông tin nào về trạng thái của chúng tới
trung tâm hoặc gửi theo đònh kỳ, hoặc gửi theo một sự kiện nào đó.


Tìm đường phân tán: Không tồn tại các trung tâm điều khiển, quyết đònh tìm
đường được thực hiện tại mỗi nút của mạng. Điều này đòi hỏi việc trao đổi
thông tin giữa các nút, tuỳ theo mức độ thích nghi của giải thuât5 được sử
dụng.
- Tìm đường tónh: Có thể là tập trung hay phân tán nhưng nó không đáp ứng với
mọi sự thay đởi trên mạng. Trong trường hợp này, chọn đường được thực hiện
mà không có sự trao đổi thông tin, khôn g đo lường và không cập nhật thông
tin. Tiêu chuẩn tối ưu để chọn đường và bản thân con đường được chọn một lần
cho toàn cuộc, không hề có sự thay đổi giữa chúng. Các kỹ thuật tìm đường
tónh rõ ràng là rất đơn giản, do vậy sử dụng rất rộng rãi, đaặc biệt trong các
mạng tương đối ổi đònh it1 có thay đổi về topology và lưu thông trên mạng .
- Tìm đường động: Thu hút sự quan tâm của các nhà thuyết kế mãng do khả
năng thuyết kế đáp ứng đối với các trạng thái khác nhau của mạng, vì đây là
yếu tố quan trọng, đặc biệt đối với các ứng dụng, thời gian thực trong đó yêu
cầu đầu tiên của người sử dụng là mạng phải có khả năng cung cấp được các
con đường khác nhau để dự phòng sự cố và thích nghi nhanh chóng với các
thay đổi trên mạng. Mức độ thích hợp của một kỹ thuật con đường được đặc
trưng bởi trao đổi thông tin chọn đường trên mạng
⊗ Tóm lại: Trong đề tài này em tìm hiểu các giải thuật tìm đường trong lý thuyết
và thực tế đã áp dụng các kỹ thuật tìm đường đã nêu ở trên. Và khi tìm hiểu các
giải thuật tìm đường ứng dụng trong lý thuyết và thực tế để hiểu rỏ hơn về cách

áp dụng được hợp lý.
-

IV. Bài toán tìm đường đi ngắn nhất (SHORTEST PATH ROUTING) :
Bài toán tìm đường đi ngắn nhất là tìm đượng đi trong một đồ thò có trọng số
(chiều dài) nối hai đỉnh x và y đã cho trước với đặc tính là tổng các trọng số của
tất cả các cạnh là nhỏ nhất trong tất cả các đường đi từ đỉnh x đến đỉnh y.
Nếu tất cả các trọng số đều bằng 1 thì bài toán này trở thành bài toán tìm đường đi
có cạnh ít nhất nối hai đỉnh x và y. Trong trường hợp này ta có thể áp dụng giải
thuật Breadth-First Search, sẽ trình bày phần sau. Giải thuật này có thể áp dụng
để giải quyết bài toán tìm đường trong trường hợp này. Bắt đầu từ đỉnh x, ta sét
tất cả các đường đi nối từ x với một cạnh, sau đó xét tất cả các đường đi nối từ x
với hai cạnh và cứ như thế cho đến khi nào đỉnh y đựơc gặp lần đầu tiên. Khi đó
đường đi ngắn nhất từ đỉnh x đến đỉnh y đã được xác đònh xong.
Trong trường hợp tổng quát đường đi từ đỉnh x đến đỉnh y có thể đi qua tất cả các
đỉnh của đồ thò, vì thế ta thường xét bài toán tìm đường đi ngắn nhất nối từ đỉnh x
cho trước với tất cả các đỉnh khác trong đồ thò.
Phần này sẽ trình bàycác giải thuật tìm đường đi ngắn nhất trên một đồ thò hữu
hướng.
Nguyên lý tối ưu là nếu tồn tại một đường đi ngắn nhất từ đỉnh I đến đỉnh j và đỉnh k nằm trên đường đi này, thì ta phải có
các đường đi từ đỉnh I đến đỉnh k và đường đi từ đỉnh k tới đỉnh j là những đường đi ngắn nhất.

• Giải pháp tuần tự :
Thực hiện routing từng đỉnh một. Khi một đỉnh routing xong nó có thể trở thành
vật cản cho các đỉnh chưa routing. Vì vậy, phương pháp này rất nhạy cảm với thứ


tự routing các đỉnh. Thông thường, thứ tự routing cuả các đỉnh căn cứ vào mức độ
quan trọng, số lượng đỉnh đường nối và lượng thông tin truyền đi.
• Giải pháp song song:

Thực hiện routing tất cả các đỉnh cùng một lúc. Nó loại bỏ được tính phụ thuộc thứ
tự cuả giải pháp tuần tự nhưng lại có độ phức tạp tính toán quá lớn. Hiện nay chưa
có một giải thuật có độ phức tạp cấp đa thức nào đưa ra, ngay cả giải thuật cho các
net có hai điểm. Hiện nay người ta đang xem xét giải pháp đồng thời dựa trên
phương pháp integer programming.
• Giải pháp động:
Các đối tượng tại các đỉnh có thể chuyển động, mà ta thực hiện việc tìm đủi giữa
các đối tượng. Ví dụ như có hai đối tượng A và B tại một thời điểm nào đó hai đối
tượng này ở tại hai đỉnh khác nhau, nhưng chúng chuyển động với hai vận tốc khác
nhau. Đến một lúc nào đó hai đối tượng này gặp nhau, thì đây chính là điểm dừng
của giải pháp động.

A. Lập trình song song
1. Mục đích:
Mục đích của xử lý song song là thực hiện việc tính toán nhanh hơn hay giải quyết
vấn đề lớn như : điều khiển không lưu, dự báo thời tiết, hệ thống thời gian thực…
Để giải quyết những vấn đề này người ta phải chia nhỏ vấn đề ra và sử dụng
nhiều processor để tính toán song song. Có hai hệ thống được ứng dụng để giải
quyết vấn đề này.
a) Máy tính song song:
Máy này bao gồm một nhóm các processor cùng loại, được kết nối với nhau theo
một mô hình nào đó để cho phép chúng cùng hoạt động và trao đổi dữ liệu cho
nhau.
b) Hệ thống phân bố:
Là hệ thống gồm nhiều processor có thể có kiễu khác nhau và được phân bố trên
một vùng đòa lý rộng (mạng máy tính).
2. Đánh giá hiệu quả của giải thuật song song:
Cách tính 1 :
Lấy B là vấn đề cần tính toán, n là kích thước của bài toán. Độ phức tạp của giải
thuật tuần tự để giải quyết vấn đề là T*(n). với giả sử là không có giải thuật tuần

tự nào tốt hơn giải thuật này. Gọi A là thuật giải song song giải quyết p trong thời
gian Tp(n) trên máy tính song song gồm p processor.
Speedup có được nhờ sử dụng giải thuật song song A được xác đònh:
Trong đó p là số processor có sẵn trong hệ thống.
Ngoài ra, người ta còn đo hiệu suất của giải thuật song song A bằng độ hiệu quả
Ep(n)
Gọi T¥ (n) là thời gian mà giải thuật không thể chạy nhanh hơn nữa với bất kỳ số
p nào. Vì Tp(n) ³ T¥ (n), do đó:
Độ hiệu quả sẽ giảm nhanh khi p tăng vượt quá T1(n)/T¥ (n).
•Cách tính 2 :


Speedup của giải thuật song song chạy trên p processor là tỷ số giữa thời gian
chạy của giải thuật song song trên một processor và thời gian chạy của giải thuật
song song trên p processor. Đònh nghóa này không chính xác lắm (misleading) vì
giải thuật song song thường chưá những hoạt động để thực hiện việc song song.
3. Các vấn đề cần chú ý khi tìm đường:
a) Sự phụ thuộc chương trình (program dependence)
Có hai sự phụ thuộc : sự phụ thuộc dữ liệu và sự phụ thuộc điều khiển.
• sự phụ thuộc dữ liệu:
có 3 loại phụ thuộc dữ liệu:
- Phụ thuộc dòng (flow dependence)
Vấn đề này xãy ra khi một hoạt động làm thay đổi dữ liệu và dữ liệu đó được
dùng cho một hoạt động sau đó.
Ví dụ: ta có các phát biểu
A=B+C (1)
D=A*5 (2)
E=A+6 (3)
Thì phát biểu (2) và (3) sử dụng dữ liệu do phát biểu (1) tạo ra.
•Antidependence

Xãy ra khi một hoạt động sử dụng vò trí nhớ được nạp bởi một hoạt động sau đó.
Ví dụ: cho các phát biểu
A=B+C (1)
C=B*5 (2)
A=D-6 (3)
Phát biểu (1) phải được thực hiện trước phát biểu (2) vì (1) sử dụng giá trò hiện tại
của C.
•Output dependence
Xãy ra khi một hoạt động nạp một vò trí nhớ mà vò trí nhớ này cũng được nạp ở
hoạt động sau. trong ví dụ trên, phát biểu (3) phải thực hiện sau phát biểu (1) nếu
không A sẽ chứa dữ liệu sai.
- Sự phụ thuộc điều khiển (control dependence)
loại phụ thuộc này là do dòng điều khiển trong chương trình. Trong ví dụ sau, phát
biểu 2 được thực thi phụ thuộc vào kết quả kiểm tra điều kiện 1.
If (x<0) (1)
A=B+5; (2)
Nếu trong chương trình ta xác đònh được các biểu thức nào là phụ thuộc và không
phụ thuộc ta sẽ hiện thực cho chúng làm tuần tự hay song song.
- Sự đồng bộ các quá trình
Sự đồng bộ các quá trình đóng vai trò quan trọng trong lập trình song song. Giải
thuật có thành công hay không phụ thuộc rất lớn vào sự đồng bộ.
Có hai phương pháp đồng bộ
•Đồng bộ toàn cục :


Với phương pháp đồng bộ toàn cục, tất cả các proces cần đồng bộ với nhau sử
dụng một sự kiện toàn cục nào đó (ví dụ dùng bộ đếm). Các process sẽ chờ cho
đến khi tất cả sẵn sàng mới làm tiếp các bước kế tiếp các process trong nhóm sẽ
block cho đến khi tất cả đều tham gia vào nhóm.
•Đồng bộ cục bộ :

Các process vẫn thực hiện công việc riêng của mình và chỉ khi có tín hiệu báo của
process khác đến mới xử lý các dữ liệu liên quan đến prcess đồng bộ.
Trong việc sử dụng bộ nhớ dùng chung của các máy tính song song còn có một vấn
đề cần quan tâm đó là sự tranh chấp tài nguyên (đọc ghi vùng nhớ) dẫn đến kết
quả sai. Để giải quyết trường hợp này người ta dùng semaphore.
4. Giới thiệu bài toán tìm đường đi ngắn nhất.
Giả sử có mỗi một process tại mỗi đỉnh và mọi process là đồng bộ. Chúng ta có
một giải thuật tìm đương đi ngắn nhất phân bố theo thời gian O( d.p2) ở đay d là
bậc cực đại của đỉnh .
Bài toán tìm đường đi ngắn nhất đã được nguyên cứu từ lâu. Mà ta biết đến là giải
thuật tuần tự Dijkstra .Bài toán tìm đường đi ngắn nhất đối với mọi điểm theo Kerr
tính toán có độ phức tạp không thể nhỏ hơn O(p3) ở đây p là số đỉnh.
Ở đây, chúng ta giả rằng có một processor tại mỗi đỉnh và mọi processor là đồng
bộ .Chúng ta cho một giải thuật phân bố mà có thể tìm đường ngắn nhất giữa mọi
cặp đỉnh với độ phức tạp O(d.p2) d là bậc cực đại trong tấc cả các đỉnh và p là số
đỉnh.
Giải thuật và đôï phức tạp:
Giả sử rằng có một processor tại mỗi đỉnh và mọi processor được đồng bộ .Trò số
không âm c(e) được kết hợp với mỗi cạnh .Trò đường đi được đònh nghóa tổng trò
giá các cạnh trong path đó .Trò giá đường đi thấp nhất từ v đến w là giá trò cần tìm.
Giả sử các đỉnh được đánh số từ 1 đến p .Có một cạnh từ đỉnh i tới đỉnh j trò giá
của cạnh này được ký hiệu là c((i,j)) .Cho p processor thực thi đòng thời theo theo
giải thuật sau ( có đồng bộ data ) .
Ta thấy rằng giải thuật trên tìm đường đi ngắn nhất đối với mọi cặp điểm và có độ
phức tạp (d.p2) ở đây d là bậc cực đại của graph và p là số processor.

Chương 4:

PHÂN TÍCH CÁC GIẢI THUẬT TÌM ĐƯỜNG


Giải thuật giá trò bé nhất:
Thực tế các mạch chuyển mạch gói(PSN) sự quyết đònh đường của nó dựa trên
một số dạng phân loại giá trò tối thiểu. Nếu sự phân loại theo giá trò các hops là ít
nhất, mỗi đường có giá trò 1. Điển hình hơn, giá trò mỗi đường tương xứng dung
lượng mỗi đường, tương xứng tức thời (current load) trên đường đi, hoặc một số tổ
hợp. Trong một số trường hợp, sự đánh giá các giá trò đó không bao gồm giải thuật
giá trò bé nhất.Với điều đó có thể nói đơn giản:


Cho một mạng các Node nối với nhau bằng những đường hai chiều, mỗi
đường đó có giá trò tổng hợp chung cho mỗi hướng. Ta đònh nghóa giá trò của một
đường (path) giữa hai Node là tổng giá trò của những đường nó đi qua. Cho mỗi
cặp Node tìm thấy một con đường giá trò bé nhất. Hầu hết các giải thuật giá trò bé
nhất được sử dụng trong PSN đều dựa trên hai giải thuật Dijkstra và Bellman Ford.

1. Giải thuật Dijkstra:

Giải thuật Dijkstra có thể phát biểu như sau: Để tìm con đường ngắn nhất từ Node
nguồn cho trước đến tất cả các Node khác bằng cách phát triển thêm vào độ dài
của đường. Quá trình thực hiện giải thuật như sau: Với mức k con đường ngắn nhất
đến k Node, đến Node nguồn đã cho, qua m Node, ở mức(k+1).
Giải thuật được đònh nghóa như sau:
N = số lượng Node trong mạng.
S = Node nguồn.
M = số lượng Node hợp nhất cho giải thuật (kết hợp cho giải thuật).
Dij = Giá trò đường từ Node i tới Node j.
→dij = 0
dij = ∞ nếu Node không nối trực tiếp.
Dn = Giá trò nhỏ nhất từ Node s đến Node n lúc xác lập giải thuật.
Giải thuật có 3 bước và lập lại cho đến khi M = N.

1. Gán D(s) = 0; giả sử T là tập hợp các đỉnh.
2. Nếu s không thuộc T, ngưng. (D(s) là chiều dài đường đi ngắn nhất từ s đến z).
3. Chọn v thuộc T sao cho D(v) có giá trò nhỏ nhất.
T = T –{v}
4. Với mỗi x thuộc T kề với v, gán:
D(x) = min{D(x), D(v) + w(v,x)}.
Đến bước 2.
Trong chương trình ta dùng:

- Đối tượng Cpoint pBegin để khởi tạo điểm nguồn của đường đi.
- Đối tượng Cpoint pEnd để khởi tạo điểm đích của đường đi.
- Đối tượng Cpoint d[30][50] để chỉ vò trí của đường đi.
- Mảng mp[30] chỉ số, phân cho mỗi đường đi.
- Mảng tong[30] chứa chiều dài cho mỗi đường đi.
- Mảng ntong[30][30] chứa chiều dài từng đoạn.
- Biến count đếm số đường đi.
* Phân tích giải thuật Dijkstra:
Đây là giải thuật tìm đường đi ngắn nhất trong một đồ thò có trọng số( chiều dài)
nối hai đỉnh x và y đã cho trước với đặc tính là tổng các trọng số của tất cả cá cạnh
là nhỏ nhất trong tất cá các đường đi từ đỉnh x đến đỉnh y.
Nếu tất cá các trọng số đều bằng 1 thì bài toán này trở thành bài toán tìm đường đi
có cạnh ít nhất nối hai đỉnh x và y. Ta có thể dùng giải thuật Breadth First Search
để giải quyết bài toán trong trường hợp này. Bắt đầu từ đỉnh x ta xét tất cá các


đường đi nối từ x tới một cạnh, sau đó xét tất cá các đường đi nối từ x với hai cạnh
và cứ tiếp tuc như thế cho đến khi nào đỉnh y gặp lần đầu tiên.
Như vậy đường đi ngắn nhất từ đỉnh x với đỉnh y có số cạnh nối là ngắn nhất.
Trong trường hợp tổng quát, đường đi từ đỉnh x đến đỉnh y có thể đi qua tất cá các
đỉnh của đồ thò, vì thế ta thường xét bài toán tìm đường đi ngắn nhất nối từ đỉnh x

cho trước với tất các đỉng khác trong đồ thò.
Giả sử giải thuật Dijsktra được áp dụng cho một đồ thò có n đỉnh và E cạnh. Thời
gian của bước khởi tạo mảng D và P tỉ lệ với n. Số lần so sánh để chọn đỉnh v
trong tập hợp C là n-1, n-2,…2 (số bước lập là n – 2). Như vậy, thời gian thực hiện
giải thuật là tỉ lệ với n2.
Nếu E << n2 (E rất nhỏ so với n), tức G là một đồ thò thưa , thì ta có thể tránh được
việc xét các giá trò vô cực trong ma trận chiều dài L. Vì thế giải thuật Dijsktra
thích hợp cho một đồ thò được biểu diển bằng một danh sách kề, bởi vì ta chỉ xét
đến các đỉnh w nối với đỉnh v.
vàvớ
o đỉnh
nguồ
củat.đường đi
Để chọn đỉnh v trong tậpNhậ
hợp C
i D[v]
nhỏn nhấ
Nhập vào đỉnh đích của đường đi
Gán chiều dài của đỉnh nguồn = 0.
Gán chiều dài của các đỉnh khác = ∞ .

Đỉnh nguồn trùng với đỉnh đích

T

Không có
đường đi ngắn
nhất

F



Xét các đỉnh kề với đỉnh nguồn
Lưu đồ giải thuật Dijsktra
: u dài cho các đỉnh kề với đỉnh nguồn
Gán chiề

Tìm min trong các chiều dài đó

Đỉnh này đã trùng với đỉnh đích
chưa

F
Chọn đây là đỉnh làm việc.
Xét các đỉnh kề với đỉnh này.

T

Chiều dài
đường đi
ngắn nhất.


* Kết quả của giải thuật Dijkstra tương ứùng với hình vẽ được thể hiện như sau:
(Tìm đường đi ngắn nhất từ Node 1 đến Node 6 )
2

3

2


3

5

1

5

2

1

3

1

2

4

2
1[0]

5

1

2


6

3

3

5

1

2
1
4
4[1, 1]

5
1

3

6
2

1

5
5[2, 4]

6[4, 5]



• giải thuật Dijkstra thực hiện từng bước như sau:
Ví dụ: Xét đồ thò:
2

B
2

4

2
D

A

C

E

4

3

1

1

7

H

7

F

5

6

G

Ta dùng giải thuật Dijkstra để tìm đường ngắn nhất nối A với các đỉnh khác.

Ở bước thứ nhất, ta lập được bảng như sau:
A B C D E F G H
D
D
L
0 2 ∞ ∞ ∞ ∞ ∞ ∞
V
A A A A A A A
2

0

1
Chọn được đỉnh F đặt vào D và ta có bảng sau:

D
L


A B C D E F G H
D
D
0 2 ∞ 4 ∞ 1 6 ∞


V

A A F A A F A
2

4

0

1

6

Cứ tiếp tục như trên ta lần lược có các bảng như sau:
A B C D E F G H
D
D D
D
L
0 2 4 4 4 1 6 ∞
V
A B F B A F A

0


D
L
V

2

4

4

6

1

6

A B C D E F G H
D D
D
0 2 4 4 4 1 6 5
A B F B AF A

0

2

4

4


6

1

6

5


D
L
V

A B C D E F G H
D D D
D
0 2 4 4 4 1 6 5
A B F B A F C

0

D
L
V

2

4


4

6

1

6

5

A B C D E F G H
D D D D
D
0 2 4 4 4 1 6 5
A B F B A F C

0

2

4

4

6

1

6


5


D
L
V

A B C D E F G H
D D D D
D
0 2 4 4 4 1 6 5
A B F B A F C

0

D
L
V

2

4

4

6

1

6


A B C D E F G H
D D D D
D
0 2 4 4 4 1 6 5
A B F B A F C

0

D

5

A B C D E F G H
D D D D
D

2

4

4

6

1

6

5



L
V

0 2 4 4 4 1 6 5
A B F B A F C

0

2

4

4

6

1

6

5

Giải thuật kết thúc và bảng lập được sau cùng cho ta con đường ngắn nhất nối từ
đỉnh A đến các đỉnh khác.
Ví dụ đường đi ngắn nhất nối từ đỉnh A đến H là ABCH và chiều dài đường ngắn
nhất này là 5.

2. Giải thuật BELLMAN FORD:


Giải thuật Bellman Ford có thể phát biểu: Tìm con đường đi ngắn nhất từ Node
(nguồn) đã cho X đến Node bắt buộc, con đường gồm một đoạn đường, rồi tìm
đoạn đường ngắn nhất giữa hai đoạn đường nối và tiếp tục cho đến hết. Giải thuật
được thực hiện như sau:
• S:Node nguồn.
• dij: Giá trò đường từ i đến j.
• dij = 0.
• Dij = ∞ cho Node không nối trực tiếp.
• D(h): Giá trò của con đường ngắn nhất từ Node S đến Node n, dưới sự bắt buộc
không quá h đường nối.
• h: số cực đại đường nối trong đường nối trong đường nối tại thời điểm tức thời
đổi về giá trò.
- Giải thuâït có các bước sau, và chúng lập lại cho đến khi không có sự thay đổi
về giá trò.
Bước 1: Bắt đầu:
Dn(o) = ∞
cho tất cả n ≠ s.
Bước 2: Thực hiện kế tiếp với h ≥ 0.
Dn(h+1) = jmin[Dnh + dij]




Lưu đồ của giải thuật Bellman Ford :
t=0
khởi tạo đường nối ban đầu = 0.
Giá trò đường đi ngắn nhất từ Node nguồn đền các Node
khác = 0
t=t+T


h = h + 1.

Giá trò đường dẫn từ Node nguồn cho tới các Node khàc = Giá trò đường
dẫn ngắn nhất từ Node nguồn khi chưa tăng h + chi phí từ Node xét đến
các Node lân cận nó.

Kiểm tra giá trò đường dẫn có
giá trò thay đổi so với lúc chưa
tăng h.
T

F

Giữ nguyên
bảng tìm
đường đang
xét




Bảng cho ta kết quả của giải thuật như sau:
( tìm đường đi ngắn nhất từ đỉnh 1 đến đỉnh 6)

2
2

3


3

5

1

2
1
4

Bellman- Ford (đỉnh nguồn = 1)
h
D2(h) Path
D3(h) Path
0
∞ ∞ 1
2 1-2
5 1-3
2
2
1-2
4
1-4-3
3
2
1-2
3
1-4-5-3
4
2

1-2
3
1-4-5-3

5
1

3

6
2

1

D4(h) Path
∞ 1 1-4
1 1-4
1 1-4
1 1-4

5

D5(h) Path
∞ ∞ 2 1-4-5
2
1-4-5
2
1-4-5

D6(h) Path

∞ ∞ 10 1-3-6
3 1-4-5-6
4 1-4-5-6

♦ So sánh giữa hai giải thuật Dijkstra và Bellman Ford:
Từ kết quả cững như thực hiện hai giải thuật Dijktras và Bellman Ford theo
từng bước ta thấy rằng: Giải thuật Dijkstra tương đối tốt hơn trong việc Routing tập
trung còn giải thuật Bellman Ford thì cho Routing phân tán. Ta hãy xem giải thuật
Bellman Ford trước. Nếu ta thực hiện đẳng thức ở bước hai của giải thuật, ta thấy
rằng sự tính toán cho Node n bao gồm sự hiểu biết giá trò đường nối đến tất cả các
Node bên cạnh Node n (dij) cộng với giá trò tất cả các đường từ Node nguồn đến
các Node lân cận (Djh). Mỗi Node có thể bao gồm một giá trò và các đường chung
cho mỗi Node khác trong mạng và thông tin đó thay đổi lần lượt với Node lân cận.
Mỗi Node đều có thể dùng bước hai của giải thuật chỉ dựa trên thông tin của Node
lân cận và biết giá trò đường nối cặäp nhật giá trò và đường. Mặt khác với đẳng thức
ở bước 3 của giải thuật Dijkstra, đẳng thức đo yêu cầu, để cho giải thuật phân tán.
Mỗi Node cần toàn bộ topologic về mạng, có nghóa là nó cần biết giá trò đường nối
của tất cả các đường trong mạng. Như vậy với giải thuật này, thông tin cần trao
đổi với tất cả các nốt, phức tạp hơn cho việc Routing phân tán.

3. Giải Thuật SHORTEST PATH ROUTING:


Trong giải thuật này chúng ta có một trọng đồ kết nối vô hướng có trọng số
của các Node. Với mỗi kết nối trực tiếp giữa hai Node có một giá trò được coi
là chi phí hay là khoảng cách cần thiết để đi từ Node này đế Node kia.
Giải thuật có các bước sau:
a) cho Node nguồn là Node cố đònh và cho nó làm việc, hay là Node hiện hành.
b) Tính toán lại các chi phí của các Node có kết nối trực tiếp với Node làm việc,
bằng cộng lại chi phí với Node làm việc với chi phí Node đó.

- Nếu Node đó có chi phí chưa xác đònh thì cho giá trò bằng giá trò vừa tìm được
và cho tên là tên của Node làm việc.
- Nếu Node đó có chi phí lớn hơn chi phí vừa tính được thì thay giá trò vừa tìm
được và tên là tên của Node vừa tìm được.
- NếU Node đó có chi phí nhỏ hơn chi phí vừa tính được thì lấy giá trò của Node
đó và tên chính là tên của Node đó.
c) Xem sét tất cả các Node thử có chi phí xác đònh, Node nào có chi phí nhỏ nhất
thì được chuyển thành Node cố đònh và là Node làm việc cho Node kế tiếp.
d) Trở lại bước hai cho đến khi tìm được một đường đi có chi phí nhỏ nhất từ
Node nguồn cho tới Node đích.
Nhập vào đỉnh nguồn và là đỉnh làm
việc
Gán chiều dài đỉnh nguồn = 0
Gán chiều dài các đỉnh khác = ∞
-

Xét các đỉnh kề đỉnh hiện hành
Tính chiều dài của các đỉnh kề

Đỉnh có chiều dài nhỏ hơn chiều
dài vừa tính được

F

Thay giá trò vừa tìm được
Tên là tên của đỉnh vừa
tìm

T
Giữ nguyên giá trò đó


Đỉnh này trùng đỉnh
đích

Tên là tên đỉnh đó.

T

F
* Lưu đồ giải thuật Shortest path routing :

Xét tất cả các đỉnh thử có chiều dài xác
đònh
Đỉnh có chiều dài nhỏ nhất được chọn
thành đỉnh cố đònh và là đỉnh làm việc cho
đỉnh kế.

Chiều dài
đường đi
ngắn nhất


2

C C(, _)

7

B(, _)B


3

2

A

G(,
G 2
_)
A(0, _)6
1

7

B

2
A G(4, B)
6

1

2

G

3

2 _)


D

D(, _)

2

2
A G(, _)
A(0, _)
G 2
6

F

C C(9,

3

H3 H(, _) D

2
4

2

3

D(, _)

7


A G(4, B)G 2
6

1
E
4
E(5, G)

F

E A)
E(6,

3

H H(, _)

2

1

B(2, A) B
2
2

C(, _)

C


E
4
E(6, A)

F(, _)

B)

7

2

H H(,

E _) 4
E(,

B(2,
A)
2

B(2, A) B

D

2
F

F(, _)


C C(9, B)

3

3

H H(6, G) D

2

2
F
F(9, E)

D(,_
))
___)

F(9,
E)
B(2,
B
C C(9,
B(2, A) B
A)
B)
C C(9, B)
7
2
3

2
2 3
2
3
3
2
A G(4, B)
2
H H(6,
D
A G(4,
H H(6, G) D
G
G
G) 2 D(,_)
2
B)
6
1
2 D(,_)
Minh hoùa giaỷi thuaọt SHORTEST PATH
___) ROUTING
6 nhử 1sau:
2
___)
F F(9, E)
4
F
G(5, A)
E

4
E
G(5, A)
F(8, H)
B(2, A) B
C(9,
B)
C
2

2
2
A G(4, B)
G
6

1
E
G(5, A)

3

3

H H(6, G) D

2
4

2

F

F(8, H)

D(10,
F) ___)

D(, _)


4. Giải thuật Floyd:

Xét một đồ thò đònh hướng G = (V,U), trong đó V là tập hợp các đỉnh và U là tập
hợp các cung. Gọi n là số đỉnh và E là số cung của đồ thò, mỗi cạnh có độ dài lớn
hơn hay bằng 0. Ta xây dựng một ma trận D cho biết chiều dài của đường đi ngắn
nhất giữa các cặp đỉnh. Giả sử các cặp đỉnh của đồ thò được đánh số từ 1 đến n và
ma trận chiều dài chứa chiều dài các cung.
Đầu tiên khởi động ma trận chứa chiều dài đường đi từ Node đến Node.
d[i][i] = 0
d[i][j] = l
nếu có đường nối trực tiếp từ i đến j.
d[i][j] = ∞
nếu không có đường nối trực tiếp từ i đến j.


×