You are on page 1of 1

Đây là một chương trình C++ để tìm đường đi Hamilton trong một đồ thị vô hướng.

Đầu
vào của chương trình là số công việc và số cạnh trong đồ thị, và các cạnh được nhập từ
bàn phím. Chương trình sử dụng thuật toán backtracking < quy lui > để tìm kiếm đường
đi Hamilton.

Các biến và cấu trúc dữ liệu trong chương trình bao gồm:
- `MAX`: một hằng số để chỉ số công việc tối đa.
- `dothi`: một mảng vector để lưu trữ các cạnh của đồ thị.
- `hmt`: một vector để lưu trữ đường đi Hamilton.
- `visited`: một mảng để đánh dấu các điểm trong đồ thị đã được thăm hay chưa.

Hàm `check` được sử dụng để kiểm tra xem có thể thêm công việc `v` vào đồ thị hay
không. Nếu công việc chưa được thăm và có cạnh nối từ công việc hiện tại đến công việc
`v`, hàm sẽ trả về true.

Hàm `timHamilton` là hàm chính để tìm đường đi Hamilton. Hàm sẽ kiểm tra nếu đã tìm
thấy đường đi Hamilton (khi số lượng công việc trong đường đi bằng số lượng công việc
trong đồ thị), thì hàm sẽ trả về true. Nếu không, sẽ duyệt qua tất cả các công việc có thể
thêm vào đường đi từ công việc hiện tại. Nếu tìm thấy đường đi Hamilton từ công việc
`v`, hàm sẽ trả về true. Nếu không tìm thấy, sẽ backtracking và thử các công việc khác.

Hàm `indothihmt` được sử dụng để in ra đường đi Hamilton tìm được.

Trong hàm `main`, chương trình sẽ yêu cầu nhập số công việc và số cạnh, sau đó yêu cầu
nhập các cạnh từ bàn phím và lưu trữ vào mảng `dothi`. Sau đó, chương trình sẽ bắt đầu
tìm kiếm đường đi Hamilton bằng cách gọi hàm `timHamilton` với công việc hiện tại là 1
và số công việc là `n`. Nếu tìm thấy đường đi Hamilton, chương trình sẽ in ra đường đi
bằng cách gọi hàm `indothihmt`. Nếu không, chương trình sẽ in ra "Không tìm thấy
đường đi Hamilton".

You might also like