Lƣu đồ giải thuật thêm và xóa điểm

Một phần của tài liệu Công nghệ GIS và ứng dụng với mapinfo (Trang 40)

Hình 15: Lưu đồ giải thuật thêm và xóa một địa điểm

Diễn giải: Khi khởi động chức năng thêm mới hoặc xóa một địa điểm, chương trình yêu cầu click vào một điểm xác định trên bản đồ. Sau đó sẽ xuất hiện 1 Dialog “ Bạn có muốn xóa địa điểm này không” hoặc thông tin cần nhập cho địa điểm mới. Sẽ có 2 lựa chọn: chọn “có” đối với chức năng xóa và “create” đối với chức năng thêm để thực hiện chức năng, hoặc chọn “không” và “Cancel” để hủy chức năng.

3.2.4 Lƣu đồ giải thuật Dijkstra

a. Lý thuyết về thuật toán tìm đƣờng đi ngắn nhất: Khái niệm về đồ thị :

Đồ thị là một cấu trúc rời rạc bao gồm các đỉnh và các cạnh chứa các đỉnh này. Chúng ta phân biệt các loại đồ thị khác nhau bởi kiểu và số lượng cạnh nối hai đỉnh nào đó của đồ thị.

Hình 16: Đồ thị 1

Nhận thấy như trên thì giữa 2 điểm bất kỳ chỉ có một cạnh liên kết chúng lại và các đỉnh thì không nối lại được chính nó. Từ đó ta đi đến định nghĩa đơn đồ thị vô hướng :

Định nghĩa 1. Đơn đồ thị vô hướng G=(V,E) bao gồm V là tập đỉnh, và E là tập các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là các cạnh.

Ta có định nghĩa đa đồ thị vô hướng :

Định nghĩa 2. Đa đồ thị vô hướng G=(V,E) bao gồm V là tập các đỉnh, và E là họ các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là các cạnh. Hai cạnh e1 va e2 được gọi là cạnh lặp nếu chúng cùng tương ứng với một cặp đỉnh.

Trong trường hợp này ta thấy xuất hiện những cạnh khuyên (cạnh nối đỉnh với chính nó).

Định nghĩa 3. Giả đồ thị vô hướng G=(V,E) bao gồm V là tập các đỉnh, và E là họ các cặp không có thứ tự gồm hai phần tử (không nhất thiết phải khác nhau) của V gọi là các cạnh. Cạnh e được gọi là khuyên nếu có dạng e=(u,u).

Hình 18: Đồ thị 3

Mỗi điểm có thể liên kết với nhau theo 2 chiều trên cùng một mạng được thể hiện bằng 2 chiều ngược nhau.

Ta đi đến định nghĩa sau:

Hình 19: Đồ thị 4

Định nghĩa 4. Đơn đồ thị có hướng G=(V,E)bao gồm V là tập các đỉnh, và E là

tập các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là các cung.

Nếu trong mạng có thể có đa kênh thoại một chiều, ta sẽ phải sử dụng đến khái niệm đa đồ thị có hướng:

Định nghĩa 5. Đa đồ thị có hướngG=(V,E) bao gồm V là tập các đỉnh, và E là

họ các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là các cung. Hai cung e1 và e2 tương ứng với cùng một cặp đỉnh được gọi là cung lặp.

Nhắc lại định nghĩa đƣờng đi,chu trình,đồ thị liên thông

Định nghĩa 1. Đường đi độ dài n từ đỉnh u đến đỉnh v, trong đó n là số nguyên

xo, x1 , ... , xn-1 , xn

trong đó u=x0 , v=xn , ( xi , xi+1 ) E , i= 0, 1, 2 ,..., n-1.

Đường đi nói trên còn có thể biểu diễn dưới dạng các cạnh: (x0 , x1 ) , ( x1 , x2), ... , ( xn-1 , xn ).

Đỉnh u gọi là đỉnh đầu, còn đỉnh v gọi là đỉnh cuối của đường đi. Đường đi có đỉnh đầu trùng với đỉnh cuối ( tức là u=v) được gọi là chu trình. Đường đi hay chu trình được gọi là đơn nếu như không có cạnh nào bị lặp lại.

Định nghĩa 2. Đường đi độ dài n từ đỉnh u đến đỉnh v, trong đó n là số nguyên

dương, trên đồ thị có hướng G=(V,A) là dãy xo, x1 , ... , xn-1 , xn

trong đó u=x0 , v=xn , ( xi , xi+1 )  A , i= 0, 1, 2 ,..., n-1.

Đường đi nói trên còn có thể biểu diễn dưới dạng các cung: (x0 , x1 ) , ( x1 , x2), ... , ( xn-1 , xn ).

Đỉnh u gọi là đỉnh đầu, còn đỉnh v gọi là đỉnh cuối của đường đi. Đường đi có đỉnh đầu trùng với đỉnh cuối ( tức là u=v) được gọi là chu trình.

Đường đi hay chu trình được gọi là đơn nếu như không có cung nào bị lặp lại.

Địng nghĩa 3. Đồ thị vô hướng G=(V,E) được gọi là liên thông nếu luôn tìm

được đường đi giữa hai đỉnh bất kỳ của nó.

Giải thuật Dijkstra

Nội dung : có rất nhiều giải thuật để tìm kiếm đường đi ngắn nhất giữa 2 cặp đỉnh của một đồ thị.Trong chương trình tìm đường đi ngắn nhất này ta áp dụng giải thuật Dijkstra để giải quyết bài toán. Giải thuật Dijkstra là một giải thuật để giải bài toán đường đi ngắn nhất nguồn đơn trên một đồ thị có trọng số cạnh mà tất cả các trọng số đều không âm.

Ở mỗi đỉnh v, giải thuật Dijkstra xác định 3 thông tin: kv, dvpv.

kv: có giá trị boolean, xác định trạng thái được chọn của đỉnh v. Ban đầu ta khởi tạo tất cả các đỉnh v chưa được chọn, nghĩa là:

kv = false, v V.

dv: là chiều dài đường đi mà ta tìm thấy cho đến thời điểm đang xét từ a đến v. Khởi tạo, dv = , v V \{a}, da = 0.

pv: là đỉnh trước của đỉnh v trên đường đi ngắn nhất từ a đến b. Đường đi ngắn nhất từ a đến b có dạng {a,...,pv,v,...,b}. Khởi tạo, pv = null, v V.

Sau đây là các bước của giải thuật Dijkstra:

B1. Khởi tạo: Đặt kv:= falsev V; dv:=,v V \ {a}, da:=0.

B2. Chọn v V sao cho kv = falsedv = min {dt / t V, kt = false} Nếu dv =  thì kết thúc, không tồn tại đường đi từ a đến b.

B3. Đánh dấu đỉnh v, kv:= true.

Ngược lại nếu v b sang B5.

B5. Với mỗi đỉnh u kề với vku = false, kiểm tra Nếu du > dv + w(v,u) thì du:= dv + w(v,u) Ghi nhớ đỉnh v: pu:= v.Quay lại B2. Các tham số trong giải thuật Dijkstra:

mn : là số đỉnh của đồ thị và cũng là số dòng và số cột của ma trận.

node_begin : là đỉnh bắt đầu .

node_end : là đỉnh cần đi đến.

L(i) : độ dài của đỉnh thứ i

T(i) : xác định trạng thái của đỉnh i, giá trị khởi tạo ban đầu là 1, sau khi nhãn được chọn thì gán giá trị là 0

DD(i) : mảng lưu trữ các đỉnh của đường đi

Mang2c() : ma trận trọng số, là mảng 1 chiều dùng để sử dụng như mảng 2 chiều

V : là tập hợp các đỉnh của đồ thị

Lƣu đồ giải thuật Dijkstra :

Độ phức tạp của giải thuật Dijkstra: Ma trận kề :

Gọi f(n) là số lần khảo sát các cạnh đồ thị trong trường hợp xấu nhất. Khi đó ta có:

f(n) < O(|V|2)

Một phần của tài liệu Công nghệ GIS và ứng dụng với mapinfo (Trang 40)

Tải bản đầy đủ (PDF)

(54 trang)