Kruskal algoritmi. Prima algoritmi. Xoffman daraxtlari Kruskal algoritmi Og'irligi bor yo'naltirilmagan graf berilgan. Ushbu grafning barcha uchlarini birbiriga bog'laydigan va shu bilan birga barcha mumkin bo'lganlarning eng kichik og'irligiga (ya'ni chekka og'irliklar yig'indisiga) ega bo'lgan shunday qoldiq daraxtini topish talab qilinadi. Bunday qoldiq daraxt minimal kenglikdagi daraxt yoki oddiy minimal kenglikdagi daraxt deb ataladi. Bu yerda biz minimal kenglikdagi daraxtlar bilan bog'liq bir nechta muhim faktlarni ko'rib chiqamiz, keyin biz Kruskal algoritmini eng oddiy amalga oshirishda ko'rib chiqamiz. Minimal oraliq xususiyatlar Agar barcha qirralarning og'irligi har xil bo'lsa, minimal oraliq daraxt noyobdir. Aks holda, bir nechta minimal oraliqlar bo'lishi mumkin (konkret algoritmlar odatda mumkin bo'lgan oraliqlardan biri bilan yakunlanadi). TAVSIF • Kruskal algoritmi. Ushbu algoritm 1956 yilda Kruskal tomonidan tasvirlangan. • Kruskal algoritmi dastlab har bir cho‘qqini o‘z daraxtiga joylashtiradi, so‘ngra bu daraxtlarni asta-sekin birlashtirib, har bir iteratsiyada qaysidir chekkada ikkita ma’lum daraxtni birlashtiradi. Algoritmni boshlashdan oldin barcha qirralar og'irlik bo'yicha (kamaymaslik tartibida) saralanadi. Keyin birlashtirish jarayoni boshlanadi: barcha qirralar birinchisidan oxirgisiga (tartib tartibida) o'tkaziladi va agar joriy chekkaning uchlari turli pastki daraxtlarga tegishli bo'lsa, u holda bu pastki daraxtlar birlashtiriladi va javobga chekka qo'shiladi. Barcha qirralarni sanab o'tish oxirida barcha uchlar bir xil pastki daraxtga tegishli bo'ladi va javob topiladi. Prima algoritmi • Minimal kenglikdagi daraxt. Prim algoritmi n ta uchi va m qirrasi boʻlgan ogʻirlikdagi yoʻnaltirilmagan G graf berilgan. Ushbu grafikning barcha uchlarini bog'laydigan va shu bilan birga eng kichik vaznga (ya'ni qirra og'irliklarining yig'indisi) ega bo'lgan pastki daraxtini topish talab qilinadi. Pastki daraxt - bu barcha cho'qqilarni bog'laydigan qirralarning to'plami va istalgan uchdan boshqasiga aniq bitta oddiy yo'l bilan kirishingiz mumkin. • • Bunday pastki daraxt minimal kenglikdagi daraxt yoki oddiygina minimal kenglikdagi daraxt deb ataladi. Har qanday grafda n-1 qirralari bo'lishini tushunish oson. Prim algoritmi • Bu algoritm 1957 yilda ushbu algoritmni kashf etgan amerikalik matematik Robert Prim sharafiga nomlangan. Biroq, 1930 yilda bu algoritmni chex matematigi Voytex Yarnik kashf etgan. Bundan tashqari, Edsger Dijkstra ham 1959 yilda ulardan mustaqil ravishda ushbu algoritmni ixtiro qilgan. Algoritmning tavsifi • Algoritmning o'zi juda oddiy. Kerakli minimal skelet, bir vaqtning o'zida qirralarni qo'shib, asta-sekin quriladi. Dastlab, skelet bitta vertexdan iborat deb taxmin qilinadi (u ixtiyoriy tanlanishi mumkin). Keyin, ushbu uchdan chiqadigan minimal og'irlik qirrasi tanlanadi va minimal oraliq daraxtga qo'shiladi. Shundan so'ng, skelet allaqachon ikkita cho'qqini o'z ichiga oladi va endi minimal og'irlikning chekkasi qidiriladi va qo'shiladi, bir uchi tanlangan ikkita cho'qqidan birida, ikkinchisi esa aksincha, bu ikkitadan tashqari qolganlarida. Va hokazo, ya'ni. har safar minimal og'irlik qirrasi qidiriladi, uning bir uchi allaqachon skeletga olingan uchdir, ikkinchi uchi esa hali olinmagan va bu chekka skeletga qo'shiladi (agar bir nechta bunday qirralar bo'lsa, siz istalganini oling). Ushbu jarayon kengaytma daraxti barcha uchlarini (yoki ekvivalenti, n-1 qirralarini) o'z ichiga olguncha takrorlanadi. • • Natijada, minimal bo'lgan skelet quriladi. Agar grafik dastlab ulanmagan bo'lsa, u holda hech qanday kengaytmali daraxt topilmaydi (tanlangan qirralarning soni n-1 dan kam bo'lib qoladi). Algoritmning ishlash vaqti, asosan, mos qirralar orasidan keyingi minimal qirrani qanday izlashimizga bog'liq. Turli xil asimptotiklarga va turli xil ilovalarga olib keladigan turli yondashuvlar bo'lishi mumkin. amalga oshirish: O(nm) va O(n2 + m log n) algoritmlari Agar har safar biz barcha mumkin bo'lgan variantlarni ko’rish orqali qirra izlasak, unda barcha mumkin bo'lganlar orasida eng kichik og'irlikdagi qirrani topish uchun asimptotik ravishda O(m) qirralarni ko’rish kerak bo'ladi. Bu holda algoritmning umumiy asimptotikasi O(nm) bo'ladi, bu eng yomon holatda O(n^3) bo'ladi, bu juda sekin algoritmdir. Xoffman daraxti • Elektron axborotlarni samarali kodlash bo'yicha dastlabki algoritm Xafman XX asr o'rtalarida, ya'ni 1952 yilda taklif qilingan koddir. Ma'lumotni qisqartirish uchun yaratilgan ko'pgina dasturlarning asosiy asosiy elementi hisoblanadi. Hozirgi vaqtda bu kodni ishlatadigan eng ommabop manbalardan biri ZIP, ARJ, RAR arxivlari va boshqalar. xoffman