Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 2

* Pseudocode tìm chu trình Hamilton

Thuật toán tìm chu trình Hamilton của đồ thị

Function Hamiltonian (graph, position, path[])


if (position == vertices)
//Kiểm tra xem có tồn tại cạnh nào giữa đỉnh đầu và
cuối
if (graph[path[position-1]][path[0]] == 1)
return true
else
return false

for vertex in range [1, vertices]


//Kiểm tra xem một đỉnh có thể thêm vào path[] không
if check (vertex, position, graph, path)
path[position] = vertex
if Hamiltonian (graph, position+1, path) == true
return true
path[position] = -1 //Xóa position khỏi path[]

return false

Mã giả trên mô tả việc tìm chu trình Hamilton trong đồ thị. Đầu tiên ta sẽ bắt đầu từ một đỉnh
bất kì sau đó đi thăm lần lượt tất cả các đỉnh của đồ thị và kiểm tra xem có thể thêm một đỉnh
mới vào chu trình Hamilton hay không. Sau đó ta sẽ thực hiện quay lui để thăm các đỉnh kế tiếp,
và nếu tìm thấy chu trình Hamilton hoàn chỉnh nó sẽ trả về kết quả là một chu trình Hamilton.
Nếu không nó sẽ quay lại và thử các đỉnh khác.
Mã giả trên hoạt động dựa trên nguyên tắc của việc kiểm tra tính khả thi của việc thêm một
đỉnh mới vào chu trình Hamilton. Điều này đòi hỏi kiểm tra xem đỉnh đó chưa được thăm và có
cạnh nối với đỉnh đầu tiên của chu trình hay không. Bên cạnh đó nó còn đảm bảo chu trình
không được có số đỉnh ít hơn số đỉnh của đồ thị. Quá trình này tiếp tục cho đến khi tất cả các
đỉnh đã được thăm qua và một chu trình Hamilton được tìm thấy hoặc đến khi không còn đỉnh
nào có thể thêm vào chu trình.

Thuật toán liệt kê tất cả các chu trình Hamilton

Function All_Hamilton
for y ϵ Ke(X[k-1]) do
if (k == n+1) and (y == v0) then Ghinhan(X{1},
….,X{n},v0)
else if Chuaxet[y] then
Begin
X[k] = y;
Chuaxet[y] = false;
All_Hamilton(k+1);
Chuaxet[y] = true;
End;

Hình ảnh dưới đây mô tả cây tìm kiếm theo mã giả ở trên

You might also like