Một số giả ở đây (bỏ qua phong cách của tôi)Tại sao độ phức tạp của BFS O (V + E) thay vì O (V * E)?
Bắt đầu từ v1 (enqueued):
function BFS(queue Q)
v2 = dequeue Q
enqueue all unvisited connected nodes of v2 into Q
BFS(Q)
end // maybe minor problems here
Vì có V đỉnh trong đồ thị, và những đỉnh V được kết nối với E cạnh, và quý khách đến thăm nhận các nút kết nối (tương đương với các kết nối được truy cập) nằm trong vòng lặp bên trong (vòng lặp bên ngoài là đệ quy chính nó), dường như với tôi rằng độ phức tạp phải là O (V * E) thay vì O (V + E). Bất cứ ai có thể giải thích điều này cho tôi?
Rất đơn giản mà không có nhiều hình thức: mỗi lần được xem chính xác hai lần và mỗi nút được xử lý chính xác một lần, do đó độ phức tạp phải là bội số cố định của số cạnh cũng như số đỉnh. –
Điều này bao gồm việc có cơ chế tránh chu kỳ –