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

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

56 677 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

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

Nội dung

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 no

Trang 1

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ựccá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

Trang 2

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 trongcuộ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ảiquyế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ãmchi 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ị (GRAPHTHEORY ) hay nói một cách chung lý thuyết đồ thị là một công cụ toán học xâydự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óichung thường có một cấu trúc chung đó là các điểm liên hệ với nhau Để mô hìnhsự 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ôngtin, 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útthô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ắnnhấtbằng lý thuyết và thực tế, rồi mô phõng trên môi trường đồ họa củawindows”

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ậttự

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

Trang 3

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ẽ:

 Đồ 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

C A

C A

Trang 4

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

 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ứanó 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ị đầyhay 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ộtdanh 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 jngượ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ểudiễn này thích hợp cho đồ thị đầy

C A

Trang 5

Có ma trận kề là:

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áytí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 tacũ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ốirất ít Nhưng vì trong đề tài ta chỉ mô phỏng cho một mạng bằng đồ thị nên tùytheo 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 theocá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ướinhiề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 đếntấ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 đỉnhtrong đồ 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

Trang 6

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 địnhqij_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 eTố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

Trang 7

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ỗimessage 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 giankhi 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ấpnó đến người nhận Để hoàn thành việc đó một con đường hay một routingthô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ầnthiế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ềncác packet tới nơi nhận nhanh nhất

Trang 8

- 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 chungcho đườ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ắnnhấ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íchcá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ếucă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ặcphâ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ệtbở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 luợ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ácgiả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ônghoàn toàn chính xác) Nhưng người sử dụng luôn luôn mong muốn tìm đượcgiả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ớitất cả các nút dọc theo con đường đã được chọn Trong trường hợp này thôngtin tổng thể của mạng cần dùng cho việc tìm đường chỉ được cất giữ tại trungtâ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ớitrung tâm hoặc gửi theo định kỳ, hoặc gửi theo một sự kiện nào đó

Trang 9

- 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 đổithô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ớimọi sự thay đởi trên mạng Trong trường hợp này, chọn đường được thực hiệnmà không có sự trao đổi thông tin, khôn g đo lường và không cập nhật thôngtin Tiêu chuẩn tối ưu để chọn đường và bản thân con đường được chọn một lầncho toàn cuộc, không hề có sự thay đổi giữa chúng Các kỹ thuật tìm đườngtĩ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ácmạ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êucầ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áccon đường khác nhau để dự phòng sự cố và thích nghi nhanh chóng với cácthay đổi trên mạng Mức độ thích hợp của một kỹ thuật con đường được đặctrư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ếtvà 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ácgiả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ủatấ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 đicó 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ảithuậ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éttấ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ừ xvớ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 xcho 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ữuhướ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ànhvậ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ứ

Trang 10

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ưacó 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ácnet có hai điểm Hiện nay người ta đang xem xét giải pháp đồng thời dựa trênphươ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ữacá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 đốitượ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ácnhau Đến một lúc nào đó hai đối tượng này gặp nhau, thì đây chính là điểm dừngcủ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ếtvấ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ềuprocessor để tính toán song song Có hai hệ thống được ứng dụng để giải quyếtvấ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 theomột mô hình nào đó để cho phép chúng cùng hoạt động và trao đổi dữ liệu chonhau

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ênmộ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ảithuậ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ầntự 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ờigian 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 :

Trang 11

Speedup của giải thuật song song chạy trên p processor là tỷ số giữa thời gianchạ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ậtsong 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 đó đượcdùng cho một hoạt động sau đó

Ví dụ: ta có các phát biểu

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

- 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átbiể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ôngphụ 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ảithuậ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 :

Trang 12

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ủaprocess 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ếtquả 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ảithuậ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 Kerrtí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à đồngbộ 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ọicặ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 theogiả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

Trang 13

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ỗicặ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ừ Nodenguồ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àicủ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ạnhlà 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 đicó 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

Trang 14

đườ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

Để chọn đỉnh v trong tập hợp C với D[v] nhỏ nhất

 Lưu đồ giải thuật Dijsktra :

Nhập vào đỉnh nguồn của đường điNhập vào đỉnh đích của đường điGá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 Không có

đường đi ngắn nhất

Xét các đỉnh kề với đỉnh nguồnGán chiều dài cho các đỉnh kề với đỉnh nguồn

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

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

chưa

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

Chọn đây là đỉnh làm việc

Xét các đỉnh kề với đỉnh này

F

TF

T

Trang 15

* 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 1

4

3

6 5

2

3 2

5

2 1

5

1

2 1

4

3

6 5

2

3 2

5

2 1

5

1

6[4, 5] 1[0]

Trang 16

 giải thuật Dijkstra thực hiện từng bước như sau:

Ví dụ: Xét đồ thị:

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:

1

7 7

0

2

1

Trang 17

6

6 1

6

6 1

5

Trang 18

5

Trang 19

5

Trang 20

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ộckhô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 đổivề 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

5

Trang 21

 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

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

T

F

Trang 22

 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)

Bellman- Ford (đỉnh nguồn = 1)

h D2(h) Path D3(h) Path D4(h) Path D5(h) Path D6(h) Path0

 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 theotừ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ậptrung còn giải thuật Bellman Ford thì cho Routing phân tán Ta hãy xem giải thuậtBellman Ford trước Nếu ta thực hiện đẳng thức ở bước hai của giải thuật, ta thấyrằ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ácNode bên cạnh Node n (dij) cộng với giá trị tất cả các đường từ Node nguồn đếncác Node lân cận (Djh) Mỗi Node có thể bao gồm một giá trị và các đường chungcho 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 Nodelâ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ốicủ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:

2 1

4

3

6 5

2

3 2

5

2 1

5

1

Trang 23

- 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

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

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

Giữ nguyên giá trị đó

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

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ế

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

F

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

T T

F

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

đích

Trang 24

Minh họa giải thuật SHORTEST PATH ROUTING như sau:

D(, _))

A(0, _))

F(, _))

D(, _)) E(, _))

7

3

2 4

F(, _)) E(6, A)

7

3

2 4

7

H(6, G) G(4, B)

F(9, E)

D(,_)) _)_)_))

D(,_) )) _)_)_)) A

7

3

2 4

F(9, E)

F(9, E)

F(8, H)

D(,_)) _)_)_)) G(5, A)

F(8, H)

D(10, F) _)_)_)) G(5, A)

Trang 25

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ậphợ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ớnhơ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ắnnhấ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

Trang 26

Tổng quát các bước lặp để tính đường đi ngắn nhất như sau:

for(k = 0; k< n; k++)

for(i = 0; i< n ; i++)

for(j = 0; j< n ; j++)

if(d[i][k] + d[k][j] < d[i][j]){

1 Tồn tại đường đi từ i đến k và đường đi từ k đến j nhưng không tồn tại đường

đi từ i đến j qua các đỉnh trung gian thuộc tập hợp Vk-1(D[i,j] = 0)

2 Tồn tại đường đi từ đỉnh i đến đỉnh k, đường đi từ k đến j và đường đi từ i đến

j qua các đỉnh trung gian tập hợp VK-1 nhưng d[i][j] > d[i][k] + d[k][j] ( nguyênlý tối ưu)

 Sơ đồ biểu diễn:

 Sơ đồ khối của giải thuật Floyd như sau:

T

TF

Trang 27

Ví dụ: Xét đồ thị

Trang 28

 Phân tích giải thuật Floyd:

Giải thuật Floyd cho ta ma trận D là ma trận khoảng cách ngắn nhất của đồ thị Và

ma trận P cho ta xác định đường đi ngắn nhất này: Đường ngắn nhất từ đỉnh nguồnđến đỉnh đích được xác định bởi một dãy

Thời gian thực hiện giải thuật Floyd tỉ lệ với n3 Ta có thể sử dụng giải thuậtDijkstra để giải quyết bài toán này Trong trường hợp này ta phải áp dụng giảithuật Dijkstra n lần, mỗi lần chọn một đỉnh khác làm đỉnh nguồn, thời gian thựchiện của mỗi lần tỉ lệ với n2 Nếu ta sử dụng giải thuật Dijkstra với một nma trậnchiều dài thì thời gian tổng cộng tỉ lệ với n* n2 = n3 Như vậy thời gian thực hiệncủa cả hai giải thuật Floyd và Dijkstra cùng tỉ lệ với n3, nhưng vì tính đơn giản củagiải thuật Floyd mà giải thuật này có khả năng thực hiện nhanh hơn trong thực tế.Mặt khác, nếu chúng ta sử dụng giải thuật Dijkstra với một heap cùng với danhsách kề (có chứa chiều dài của các cung) thì thời gian thực hiện của mỗi lần tỉ lệvới (E + n)* log(n), do đó thời gian thực hiện tổng cộng của giải thuật Dijkstra tỉ lệ

Ngày đăng: 01/06/2016, 17:40

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w