Theo CLRS, các thuật toán của Prim được triển khai như dưới đây -
- với mỗi làm
- trong khi làm // ... O ( V )
- ← EXTRACT-MIN ( u ) // ... O ( lg V )
- với mỗi làm // ... O ( E )
- nếu và w ( u , v ) > khóa [ v ]
- sau đó
- // KHAI THÁC-KHÓA ... O ( lg V )
Cuốn sách nói rằng tổng độ phức tạp là . Tuy nhiên, điều tôi hiểu là vòng lặp bên trong với thao tác sẽ có giá O ( E lg V ) và vòng lặp bên ngoài bao quanh cả vòng lặp và vòng trong , do đó tổng độ phức tạp phải là O ( V ( lg V + E lg V ) ) = O (for
DECREASE-KEY
while
EXTRACT-MIN
for
.
Tại sao phân tích phức tạp không được thực hiện như vậy? và điều gì là sai với công thức của tôi?