- 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