Algoritme
Algoritme bisa diklasifikasikan berdasarkan jumlah waktu yang dibutuhkan untuk selesai dibandingkan dengan ukuran inputnya. Ada berbagai varietas: beberapa algoritme selesai dalam waktu linear relatif terhadap ukuran input, beberapa selesai dalam jumlah waktu yang eksponensial atau lebih buruh, dan beberapa berhenti. Sebagai tambahan, beberapa masalah bisa memiliki berbagai algoritme dengan kompleksitas yang berbeda, sementara permasalahan yang lain bisa saja tidak memiliki algoritme atau tidak diketahui algoritmanya yang efisien. Ada juga pemetaan dari beberapa algoritme terhadap permasalahan lain. Karena itu, lebih cocok untuk mengklasifikasikan permasalahan itu sendiri bukannya algoritme menjadi kelas-kelas yang sama berdasarkan kompleksitas dari kemungkinan algoritme terbaik baginya.
Algoritme Prim
Misalkan "P" adalah sebuah graf terhubung berbobot. Pada setiap iterasi algoritme Prim, suatu cabang harus ditemukan yang menghubungkan sebuah node di graf bagian ke sebuah node di luar graf bagian. Karena "P" terhubung, maka selalu ada jalur ke setiap node. Keluaran "Y" dari algoritme Prim adalah sebuah pohon, karena semua cabang dan node yang ditambahkan pada "Y" terhubung. Misalkan "Y" adalah pohon rentang minimum dari P. Bila "Y"="Y" maka "Y" adalah pohon rentang minimum. Kalau tidak, misalkan "e" cabang pertama yang ditambahkan dalam konstruksi "Y" yang tidak berada di "Y", dan "V" himpunan semua node yang terhubung oleh cabang-cabang yang ditambahkan sebelum "e". Maka salah satu ujung dari "e" ada di dalam "V" dan ujung yang lain tidak. Karena "Y" adalah pohon rentang dari "P", ada jalur dalam "Y" yang menghubungkan kedua ujung itu. Bila jalur ini ditelusuri, kita akan menemukan sebuah cabang "f" yang menghubungkan sebuah node di "V" ke satu node yang tidak di "V". Pada iterasi ketika "e" ditambahkan ke "Y", "f" dapat juga ditambahkan dan akan ditambahkan alih-alih "e" bila bobotnya lebih kecil daripada "e". Karena "f" tidak ditambahkan, maka kesimpulannya