Perbedaan antara Kruskal dan Prim: Kruskal vs Prim

Anonim
< Kruskal vs Prim

Dalam ilmu komputer, algoritma Prim dan Kruskal adalah algoritma serakah yang menemukan pohon spanning minimum untuk graf tertaut tertimbang terhubung. Pohon spanning adalah subgraf dari sebuah grafik sehingga masing-masing simpul grafik dihubungkan oleh sebuah jalur, yaitu sebuah pohon. Setiap pohon rentang memiliki berat, dan bobot minimum yang mungkin / biaya dari semua pohon rentang adalah pohon rentang minimum (minimum spanning tree / MST).

Algoritma ini dikembangkan oleh matematikawan Ceko Vojtěch Jarník pada tahun 1930 dan kemudian secara independen oleh ilmuwan komputer Robert C. Prim pada tahun 1957. Penemuan ini ditemukan kembali oleh Edsger Dijkstra pada tahun 1959. Algoritma dapat dinyatakan dalam tiga langkah kunci;

Dengan grafik terhubung dengan n node dan bobot masing-masing tepi,

1. Pilih simpul acak dari grafik dan tambahkan ke pohon T (yang akan menjadi simpul pertama)

2. Perhatikan bobot masing-masing tepi yang terhubung ke simpul di pohon dan pilih minimumnya. Tambahkan tepi dan simpul di ujung lain pohon T dan lepaskan tepi dari grafik. (Pilih salah satu jika ada dua atau lebih minimum)

3. Ulangi langkah 2, sampai ujung n-1 ditambahkan ke pohon.

Dalam metode ini, pohon dimulai dengan satu nodus acak dan mengembang dari simpul itu dan seterusnya dengan setiap siklus. Oleh karena itu, agar algoritma bekerja dengan baik, grafik harus menjadi graf terhubung. Bentuk dasar algoritma Prim memiliki kompleksitas waktu O (V

2).

Lebih jauh tentang Algoritma Kruskal Algoritma yang dikembangkan oleh Joseph Kruskal muncul dalam prosiding American Mathematical Society pada tahun 1956. Algoritma Kruskal juga dapat dinyatakan dalam tiga langkah sederhana.

Dengan grafik dengan n node dan bobot masing-masing masing-masing tepi,

1. Pilih busur dengan bobot paling rendah dari keseluruhan grafik dan tambahkan ke pohon dan hapus dari grafik.

2. Dari sisa pilih tepi tertimbang sedikit, dengan cara yang tidak membentuk satu siklus. Tambahkan tepi ke pohon dan hapus dari grafik. (Pilih salah satu jika ada dua atau lebih minimum)

3. Ulangi proses pada langkah 2.

Dalam metode ini, algoritma dimulai dengan tepi tertimbang sedikit dan terus memilih setiap tepi pada setiap siklus. Oleh karena itu, dalam algoritma grafik tidak perlu dihubungkan. Algoritma Kruskal memiliki kompleksitas waktu O (logV)

Apa perbedaan antara algoritma Kruskal dan Prim?

• Algoritma Prim menginisialisasi dengan sebuah simpul, sedangkan algoritma Kruskal memulai dengan sebuah edge. Algoritma prima membentang dari satu simpul ke simpul yang lain sementara algoritma Kruskal memilih ujung-ujungnya dengan cara bahwa posisi tepi tidak didasarkan pada langkah terakhir.

• Dalam algoritma prima, grafik harus berupa grafik terhubung sementara Kruskal dapat berfungsi pada grafik yang terputus juga. Algoritma Prim memiliki kompleksitas waktu O (V

2), dan kompleksitas Kruskal adalah O (logV).