Sự khác biệt giữa tìm kiếm cây và tìm kiếm đồ thị là gì?


12

Tôi đã đọc nhiều câu trả lời cho câu hỏi này ở những nơi khác nhau, nhưng tôi vẫn còn thiếu một cái gì đó.

Điều tôi đã hiểu là một tìm kiếm đồ thị chứa một danh sách kín, với tất cả các nút được mở rộng, vì vậy chúng không được khám phá lại. Tuy nhiên, nếu bạn áp dụng tìm kiếm theo chiều rộng đầu tiên hoặc tìm kiếm chi phí thống nhất tại cây tìm kiếm, bạn cũng làm như vậy. Bạn phải giữ các nút mở rộng trong bộ nhớ.

Câu trả lời:


7

Luôn có nhiều sự nhầm lẫn về khái niệm này, bởi vì việc đặt tên là sai lệch, cho rằng cả tìm kiếm cây và biểu đồ đều tạo ra một cây (từ đó bạn có thể rút ra một đường dẫn) trong khi khám phá không gian tìm kiếm, thường được biểu thị dưới dạng biểu đồ .

Sự khác biệt

Đầu tiên, chúng ta phải hiểu rằng vấn đề tiềm ẩn (hoặc không gian tìm kiếm) hầu như luôn được biểu diễn dưới dạng biểu đồ (mặc dù biểu đồ bên dưới có thể không chứa chu kỳ, vì vậy nó có thể đại diện cho một cây). Vì vậy, sự khác biệt không phải là vấn đề là cây (một loại biểu đồ đặc biệt) hay đồ thị chung!

Thay vào đó, sự khác biệt là cách chúng ta đi qua không gian tìm kiếm (được biểu thị dưới dạng biểu đồ) để tìm kiếm trạng thái mục tiêu của chúng ta và liệu chúng ta có đang sử dụng danh sách bổ sung (được gọi là danh sách đóng ) hay không.

Vì vậy, sự khác biệt cơ bản là

  1. Trong trường hợp tìm kiếm đồ thị, chúng tôi sử dụng một danh sách, được gọi là danh sách đã đóng (còn được gọi là bộ khám phá ), để theo dõi các nút đã được truy cập và mở rộng, để chúng không được truy cập và mở rộng lại.

  2. Trong trường hợp tìm kiếm cây, chúng tôi không giữ danh sách kín này. Do đó, cùng một nút có thể được truy cập nhiều lần (hoặc thậm chí vô hạn nhiều lần), có nghĩa là cây được tạo ra (bằng cách tìm kiếm cây) có thể chứa cùng một nút nhiều lần.

Ưu điểm và nhược điểm

Các lợi thế của việc tìm kiếm đồ thị rõ ràng là, nếu chúng ta kết thúc việc tìm kiếm của một nút, chúng tôi sẽ không bao giờ tìm kiếm nó một lần nữa. Mặt khác, tìm kiếm cây có thể truy cập vào cùng một nút nhiều lần.

Các nhược điểm của tìm kiếm đồ thị là nó sử dụng nhiều bộ nhớ hơn (mà chúng tôi có thể có hoặc không có) so với tìm kiếm cây. Điều này quan trọng bởi vì tìm kiếm đồ thị thực sự có yêu cầu bộ nhớ theo cấp số nhân trong trường hợp xấu nhất, làm cho nó không thực tế mà không có một tìm kiếm heuristic thực sự tốt hoặc một vấn đề cực kỳ đơn giản.

Vì vậy, có một sự đánh đổi giữa không gian và thời gian khi sử dụng tìm kiếm đồ thị trái ngược với tìm kiếm trên cây (hoặc ngược lại).

Phần kết luận

Vì vậy, sự khác biệt giữa tìm kiếm cây và tìm kiếm biểu đồ không phải là tìm kiếm cây hoạt động trên cây trong khi tìm kiếm biểu đồ hoạt động trên biểu đồ! Cả hai đều có thể hoạt động trên cây hoặc đồ thị (nhưng, cho rằng đồ thị là một khái quát của cây, chúng ta có thể nói đơn giản là cả hai đều hoạt động trên đồ thị, hoặc là cây hoặc không) và cả hai đều tạo ra một cây!

Ghi chú

Các định nghĩa về tìm kiếm cây và tìm kiếm đồ thị được đưa ra ở trên dựa trên các định nghĩa được đưa ra trong phần 3.3 (trang 77) của cuốn sách Trí tuệ nhân tạo: Cách tiếp cận hiện đại (ấn bản thứ 3) , của Stuart J. Russell và Peter Norvig, đó là de sách tiêu chuẩn -facto trong trí tuệ nhân tạo, vì vậy những định nghĩa này được áp dụng trong bối cảnh trí tuệ nhân tạo (cũng là bối cảnh của trang web này)!

Tuy nhiên, lưu ý rằng, đôi khi, mọi người có thể sử dụng thuật ngữ tìm kiếm cây để chỉ một giao dịch cây , được sử dụng để chỉ một tìm kiếm trong cây tìm kiếm (ví dụ: cây tìm kiếm nhị phân hoặc cây đỏ đen), đó là một cây (tức là một biểu đồ không có chu kỳ) duy trì một trật tự nhất định của các phần tử của nó. Đây là một lý do khác để có các định nghĩa khác nhau về tìm kiếm cây và nghĩ rằng tìm kiếm cây chỉ hoạt động trên cây.


Sự hiểu biết của tôi về cây là cây không chỉ là một dạng biểu đồ có hướng mà các nút được ĐẶT HÀNG, làm cho cây trở nên độc nhất từ ​​biểu đồ. Bởi vì một cây được ra lệnh, không có vòng lặp. Do đó, một nút không bao giờ xuất hiện dưới dạng nhiều nút khác nhau của cây trừ khi người thực hiện đã làm điều gì đó rất sai, bởi vì việc theo dõi danh sách các nút được truy cập là ẩn như một phần của thuật toán duyệt qua cây.
Dunk

@Dunk Ý bạn là gì khi "một cái cây được đặt hàng"? Không phải tất cả các cây nhất thiết phải có các yếu tố của họ ra lệnh. Có những cây, như cây đỏ đen (hay nói chung, cây tìm kiếm nhị phân), duy trì một trật tự nhất định của các phần tử được lưu trữ của chúng, nhưng không phải tất cả các tress đều duy trì một thứ tự nhất định các phần tử của chúng. Vì vậy, một cây không có vòng lặp không phải vì nó được đặt hàng, mà bởi vì không có chu kỳ (có dạng A -> B -> A).
nbro

@Dunk Trong cây tìm kiếm , các nút được sắp xếp, nhưng không phải trong cây nói chung, ngoại trừ theo nghĩa sâu. Tuy nhiên, tìm kiếm cây không phải là "tìm kiếm trên cây", mà là một nhóm thuật toán tìm kiếm cụ thể được sử dụng trong AI chỉ được đảm bảo để hoạt động trên các vấn đề có cấu trúc cây, mặc dù chúng có thể được áp dụng cho các vấn đề khác (trong đó chúng có thể hoặc không, Thất bại).
John Doucette
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.