Thuật Prim

Thuật toán Prim còn được mang tên là người láng giềng gần nhất.Trong thuật toán này, bắt đầu tại một đỉnh tuỳ ý s của đồ thị, nối s với đỉnh y sao cho trọng số cạnh c[s, y] là nhỏ nhất. Tiếp theo, từ đỉnh s hoặc y tìm cạnh có độ dài nhỏ nhất, điều này dẫn đến đỉnh thứ ba z và thu được cây bộ phận gồm 3 đỉnh 2 cạnh. Quá trình được tiếp tục cho tới khi ta nhận được cây gồm n-1 cạnh, đó chính là cây khung nhỏ nhất cần tìm.

Giả mã thuật toán Prim

void Prim (void)

{ /*bước khởi tạo*/

Chọn s là một đỉnh nào đó của đồ thị;

VH={s};T=Ø;  //rỗng

d[s]=0;

near[s]=s;

For (v ϵ V\VH)  // thuộc

{

D[v] = C[s, v]; near[v] = s;

}

/* Bước lặp */

Stop = False;

while ( not stop ) {

Tìm u ϵ V\VH thoả mãn: d[u] = min { d[v] với u ϵ V\VH};

VH = VH ∪ {u};

T = T ∪ (u, near[u] );

if ( | VH |) == n )

 {

H = <VH, T> là cây khung nhỏ nhất của đồ thị;

Stop = TRUE;

}

else { for ( v ϵ V\VH ) {

if (d[v] > C[u, v]) {

D[v] = C[u, v];

Near[v] = ;

}

}

}

}

}

Bạn đang đọc truyện trên: AzTruyen.Top

Tags: #leez