Chuyển mơ hình đồ thị mà

Một phần của tài liệu Luận văn mô phỏng một số thuật toán trên đồ thị (Trang 71 - 75)

- Khung đồ thị: Hình ảnh đồ thị sẽ thay đổi theo mỗi bước thuậttốn thực

Chuyển mơ hình đồ thị mà

người dùng đã chuân bị cho

Module Model.BFS thực hiện

—— Ty BES thực thi

Hm. phơng: thuật tốn » — thuật tốn:

odule: GraphTool.Mo

GraphTool.Sear del.BFS

ching.BFSForm !«

Trả lại các bước thuật tốn đã thực hiện trên bộ dữ liệu đầu vào để chương trình mơ phỏng bắt đầu làm việc

Chức năng: các cơng cụ và chức năng của chúng trong mơ hình cài đặt e Các cơng cụ sử dụng trong chương trình:

brivate Dictionary<string,string> trace = new Dictionary<string,string>();

brivate Dictionary<string, bool> free = new Dictionary<string, bool>();

bublic Graph Graph { get; set; }

private Queue<Vertex> Q = new Queue<Vertex>();

bpublic string VertexEeyStart { get; set; }

bublic string VertexKeyEnd { get; set; }

private BagS5tep steps = new BagS5tep();

e Các chương trình con và chức năng của chúng:

Thủ tục Chức năng

public void Execute () Thực thị thuật tốn.

brivate void GetResult () Lây kết quả và lưu trữ vào các bước cho vào

túi.

public BagS5tep GetBagStep () Lẫy túi đã đựng các bước đê chuyển qua mơ

phỏng.

private void Bf£sAlgorithms (Vertex

u)

Chương trình đệ quy thực hiện việc thăm theo mơ hình BFS từ một đỉnh u tới các đỉnh kê VỚI nĨ.

brivate void Tnitialize() Khởi tạo các thơng số đơ thị đựa trên mơ hình đơ thị mà người dùng đưa vào trước khi thực hiện thuật tốn.

private void UÚpdateTrace (string

after, string before) Thực hiện cơng việc truy vết.

private void

ỦbdateTn#foAtcStepEnd ()

Hồn thiện thuật tốn. Ghi nhận các cạnh đã đi qua theo mơ hình BFS.

Các bước sẽ được lưu trữ trong túi.

Public class StepStartl () Step kê thừa của lớp Step, khởi tạo đỉnh xuất phát

Public class StepEndl : Step Ghi nhận những cạnh đã thăm trong quá trình thực hiện theo thuật tốn BFS và truy vềt.

Public class BfsStebl : Step

Public class BfsStep21l : Step

Public class BfsStepb22 : Step

Public class BfsStep23 : Step

Public class BfsStep3 : Step Các bước được làm mịn trong quá trình mơ phỏng thuật tốn BFS.

7.3.2 Diisktra

Chương trình con

e Dijsktra mơ phỏng: Module: GraphTool.Searching.dijkstraForm

e Dijkstra thực thi thuật tốn: GraphTool.Model.dijkstra: thực thi theo đúng

thuật tốn và lưu lại các bước đã thực hiện vào trong một cải túi

(BagStep) dùng trong mơ phỏng.

Chuyển mơ hình đồ thị mà

người dùng đã chuân bị cho

Module Model.DIjkstra thực " 1w. Dijkstra thực

Dijkstra mơ hiện thuật tốn thi thuật tốn:

phỏng: GraphToolL.Mo

Moduk: - del.Dijkstra

Graph Tool.Dijk

(ra/DNraFor Trả lại các bước thuật tốn đã thực hiện trên bộ dữ liệu đâu vào đề chương trình mơ phỏng

bắt đầu làm việc

Chức năng: các cơng cụ và chức năng của chúng trong mơ hình cài đặt

e Cơng cụ sử dụng trong module:

private Hash5et<Vertex> vertexGone new HashSet<Vertex>()?

private HashSet<Vertex> vertexGo = new HashSet<Vertex>();

private Dictionary<string, string> trace = new Dictionary<string,

string>();

private Dictionary<string, int> distance = new Dictionary<string, int>();

private BagS5teb steps = new BagS5tep(); bublic Graph Graph { get; set; }

bublic string VertexEeyStart { get; set; }

bublic string VertexEeyEnd { get; set; }

bublic BagS5tep GetBagStep ()

e Các chương trình con và chức năng của chúng:

Thủ tục Chức năng

public void Execute () Thực hiện thuật tốn D1jkstra

Khởi tạo các thơng số cần thiết cho

public void Tnitiallze(); ^ r

thuật tốn

Sửa nhãn cho tất cả các đỉnh chưa

private void ỦpdateEdgeGo (Vertex u) sự. CÁ va ;

được chọn khi mới cơ định đỉnh u

private void UÚpdateTrace (string after,

before)

string Cập nhật vết cho đường đi trong khi thực hiện thuật tốn

private void ỦpdateTn£oAtS5tepEnd () Ghi lại các thơng sơ cuơi cùng đê dựng kịch bản cho mơ phỏng

private void AddVertextToVertexGone (Vertex

gone)

Kết nạp thêm một đỉnh vào tập S (các đỉnh đã cố định nhãn)

private void AddStepStart () Ghi nhận bước đi đầu tiên của thuật

tốn D1jkstra trên đồ thị vừa chọn.

private void AddStepStart12(string key)

private void AddStepUpdateVertexValue ()

Cập nhật các bước đề lên kịch bản mơ phỏng

private void AddStepÙpdateVertexValueStep11 () private void AddStepÙpdateVertexValueStep12 () private void AddStepChooseVertexMin (string

key)

private void AddStepAddVertex ()

private void AddStepEnd ()

bpublic class StepStart : Step Kịch bản cho mơ phỏng:

Ẳ bublic string VertexStart { get; set; } Bước khởi đầu: Xây dựng các thơng Ẩ À_ ,A HÀ uq> X đa private Dictionary<string, int> d.= sơ ban đầu từ đơ thị do người dùng

new Dictionary<string, int>(); . chuyên vào thành Input cho thuật

public void tốn.

UÚbpdateVertexValue (Dictionary<string, int> d) {

foreach (string key in d.Key8)

{ _d.Add(key, d[key]); _d.Add(key, d[key]); } } bublic Dictionary<string, GetD1istanceTnfomat1on () { 1nt> return d; }

bublic class StepEnd

{ Step

private IList<string>

_edgesInShotestPath = new List<string>(); bublic void

UỦbpdateEdgeTnfosTnShotestPath (Dictionary<string

; String> trace,

string keyEnd, string keyStart)

{ Bước cuỗi cùng: sau khi thực hiện

thuật tốn Dljkstra, lớp StepEnd lưu giữ lại tồn bộ thơng số cần thiết đê mơ phỏng: các cạnh thuộc đường đổi ngắn nhất, các đỉnh thuộc đường đi đĩ....

string key = keyEnd;

while (key l= keyStart && key l= string.Embty)

{

_edgesInShotestPath.Add (trace[key] + ">" +

key)?

key = trace [key |;

} 1Ý (key == string.Empty) 1Ý (key == string.Empty) _edgesITnShotestPath = new L1st<string>(); } bublic TL1st<string> hdgesInShotestPath () { return edgesrTnS5hotestPath; } } //step 1

bublic class StebÙpdateVertexValue : Step

{

private Dictionary<string, int> d = new Dictionary<string, int>();

public void

ỦbpdateVertexValue (Dictionary<string, int> d)

{foreach (string key in d.KEeys)

{

_d,Add (key, d[key]);?

}

}

bublic Dictionary<string, int> GetDistanceTnfomatl1on ()

{

return d;

}

Bước 1: Sửa nhãn cho tât cả các đỉnh

//step 2

bublic class StepChooseVertexMin : Step

{

bublic string Min { get; set; }

}

Bước 2: Chọn một đỉnh cĩ nhãn nhỏ

nhât đề cơ định.

//step3

public class StepAddVertex : Step

{

private IIList<string> gones = new

L1st<string>();

bublic TL1st<string> GetAddedVertex ()

{

return gones;

}

} Bước 3: thêm đỉnh vừa chọn ở bước

Một phần của tài liệu Luận văn mô phỏng một số thuật toán trên đồ thị (Trang 71 - 75)

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

(84 trang)