Độ phức tạp của thời gian tìm kiếm đồ thị *


9

Một số nhầm lẫn về độ phức tạp thời gian và A *.

Theo A * Wiki , độ phức tạp thời gian là theo cấp số nhân theo độ sâu của giải pháp (đường dẫn ngắn nhất):

Độ phức tạp thời gian của A * phụ thuộc vào heuristic. Trong trường hợp xấu nhất của không gian tìm kiếm không giới hạn, số lượng nút được mở rộng là theo cấp số nhân theo độ sâu của giải pháp (đường dẫn ngắn nhất) d:O(bd), trong đó là hệ số phân nhánh (số người kế thừa trung bình trên mỗi tiểu bang).b

Nhận xét cho câu trả lời được chấp nhận này chỉ ra rằng sẽ có ý nghĩa hơn khi đưa ra mức độ phức tạp về các kích thước của biểu đồ và do đó nó phải làO((|V|+|E|)log|V|)

Rõ ràng, nếu heuristic gán giá trị 0 cho mỗi nút, A * trở thành thuật toán của Dijkstra và bất kỳ heuristic chi phí thống nhất nào về cơ bản sẽ vô hiệu hóa heuristic.

Nếu chúng ta giả sử heuristic là (và nhất quán), sẽ có nghĩa là trường hợp xấu nhất về cơ bản là làm suy giảm thuật toán A * thành thuật toán của Dijkstra có độ phức tạpO(1)

O(|E|+|V|log|V|)

với việc thực hiện hàng đợi ưu tiên tối thiểu (heap Fibonacci).

Tôi có lầm không?

Bất kỳ cuốn sách, vv Tôi đã xem xét luôn luôn cho sự phức tạp về độ sâu của giải pháp

Câu trả lời:


11

Về cơ bản, đây là hai quan điểm khác nhau hoặc hai cách khác nhau để xem thời gian chạy. Cả hai đều hợp lệ (không phải là không chính xác), nhưng được cho là hữu ích hơn trong các cài đặt thường phát sinh trong AI.O(bd)

Trong cộng đồng thuật toán và cộng đồng lý thuyết CS, mọi người có xu hướng thích tính thời gian chạy là một hàm của số đỉnh và cạnh trong biểu đồ. Tại sao? Trong bối cảnh đó, thời gian chạy trường hợp xấu nhất là điều có ý nghĩa nhất; Ngoài ra, trong các vấn đề thường được xem xét trong cộng đồng đó, trong trường hợp xấu nhất chúng ta cần kiểm tra toàn bộ biểu đồ, do đó bạn thường không thể hy vọng sẽ làm tốt hơn .O(|V|+|E|)

Trong cộng đồng AI, mọi người có xu hướng tính thời gian chạy khác nhau. Họ thường xem xét một loại đồ thị cụ thể: một cây có hệ số phân nhánh . Ngoài ra, trong các tình huống phát sinh ở đó, biểu đồ thường là vô hạn hoặc rất lớn. Thông thường, chúng tôi cố gắng hết sức để tránh kiểm tra tất cả các biểu đồ - đó thường là một trong những mục tiêu chính của các thuật toán. Do đó, tính phức tạp vềvàkhông có ý nghĩa:có thể là vô hạn và trong mọi trường hợp, chúng tôi không có kế hoạch kiểm tra tất cả các biểu đồ, vì vậy tất cả vấn đề là số lượng đỉnh chúng tôi thực sự truy cập, không phải là số có thể tồn tại ở nơi khác nhưng chúng tôi không quan tâm.b|V||E||V|

Vì vậy, đối với các tình huống thường phát sinh trong cộng đồng AI, việc đo thời gian chạy theo yếu tố phân nhánh của cây ( ) và độ sâu của nút mục tiêu ( ) thường có ý nghĩa hơn . Thông thường, một khi chúng ta tìm thấy nút mục tiêu, thuật toán dừng lại. Trong một cây như vậy, nếu chúng ta kiểm tra mọi đỉnh ở độ sâu trước khi chúng ta tìm thấy nút mục tiêu, chúng ta sẽ kết thúc việc truy cập các đỉnh trước khi chúng ta dừng lại. Do đó, nếu bạn thích, bạn có thể nghĩ về điều này khi truy cập một tập hợp con của biểu đồ với (trong đó bây giờ chỉ bao gồm các đỉnh chúng ta truy cập) và ( chỉ bao gồm các cạnh chúng ta nhìn vào) và bạn có thể nghĩ về mộtbddO(bd)|V|=O(bd)V|E|=O(bd)EO(bd)Thuật toán thời gian là một thuật toán có thời gian chạy là ... mặc dù đây là một chút lạm dụng củaký hiệu. Dù sao, hy vọng bạn có thể thấy tại sao có nhiều thông tin hơn trong bối cảnh này.O(|V|+|E|)|V|,|E|O(bd)O(|V|+|E|)


1

Thông thường trong cộng đồng tìm kiếm kết hợp để xác định không gian tìm kiếm một cách ngầm định , nghĩa là, là một tập hợp các trạng thái và chuyển tiếp giữa chúng - trái ngược với rõ ràng , đó là các tập hợp đỉnh và cạnh cụ thể. Trong các không gian tìm kiếm ngầm định, các trạng thái có thể được biểu diễn dưới dạng các đỉnh và chuyển tiếp dưới dạng các cạnh, tuy nhiên, trong nhiều trường hợp, tập hợp các trạng thái thực tế có thể không có giới hạn hữu hạn và do đó, số cạnh và đỉnh không thể luôn được xác định bằng các số lượng hữu hạn (thực tế hoặc về mặt lý thuyết). Do đó, đối với nhiều ứng dụng, việc xác định hiệu suất theo yếu tố phân nhánh có ý nghĩa hơn , trái ngược với các yếu tố đỉnh và cạnh.b

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.