Пошук порядкової статистики
i-ю порядковою статистикою (англ. order statistic) множини з n елементів називається i-й у порядку зростання елемент множини.
Так мінімум множини — це перша порядкова статистика, а максимум — n-та порядкова статистика. Медіа́на (англ. median) неформально означає середину множини. Якщо n непарне, то медіана єдина, і її індекс (індекс відповідної порядкової статистики) дорівнює i = (n + 1) / 2; якщо ж n парне, то медіани дві: i = n / 2 та i = n / 2 + 1.
Формально задача пошуку порядкової статистики визначається так:
Дано: множину, що складається з (різних) чисел, і число
Потрібно знайти: елемент , що більший за рівно інших елементів множини.
Задачу можна розв'язати за час. Для цього достатньо впорядкувати елементи за зростанням, а потім взяти i-й елемент. Але є алгоритми що можуть розв'язати цю задачу за час в середньому і навіть у найгіршому випадках.
Історія
Алгоритм пошуку медіан, час роботи якого в найгіршому випадку лінійно залежить від кількості вхідних елементів, був розроблений Блюмом, Флойдом, Праттом, Рівестом і Таржаном. Версія цього алгоритму зі зниженим середнім часом роботи була опублікована в роботі Тоні Гоара. Флойд і Рівест створили покращену версію алгоритму, що працювала в середньому ще краще.
Досі невідомо, скільки саме порівнянь необхідно зробити для пошуку медіани. Нижня границя, рівна 2n порівнянням, була знайдена Бентом і Джоном , а верхня границя, рівна 3n порівнянням, — Шйонхагом, Патерсоном і Піппенджером. Дор і Цвік покращили обидві границі; їх верхня границя трохи менша за 2,95n, а нижня — трохи більша за 2n.
Алгоритм пошуку мінімуму та максимуму
Окремо мінімум і максимум (першу і n-ну порядкові статистики) множини (масиву) можна знайти за порівнянь кожен. У практичних задачах часто необхідно одночасно знайти і мінімум, і максимум. при одночасному пошуку кількість порівнянь можна зменшити з до порівнянь. Для цього потрібно брати по два елементи з множини і порівнювати їх між собою. Потім більший елемент порівнювати з поточним максимумом, а менший — з поточним мінімумом. Таким чином, економиться 1 порівняння (3 порівняння замість 4).
Псевдокод
1. 2. 3. 4. if 5. then if 6. then 7. else 8. 9. while 10. do 11. 12. if 13. then Поміняти 14. if 15. then 16. if 17. then 18.
Така оптимізація доцільна у випадках, коли порівняння елементів з множини A займає багато часу. Наприклад, якщо порівнюється текст або графічні зображення.
Алгоритм пошуку за лінійний в середньому час
Алгоритм ґрунтується на принципі "розділяй і владарюй", і працює подібно до швидкого сортування. Для забезпечення малого часу роботи для всіх можливих вхідних даних, в алгоритм уводиться рандомізація. Алгоритм запропонував Тоні Гоар
Ідея полягає в розділенні всього масиву на дві частини так, що кожен елемент в першій частині не більший за будь-який з другої частини. Далі пошук можна продовжити тільки в одній з частин.
Псевдокод
Функція виконує розділення частини масиву з p-го по q-й елемент на дві менші частини.
1 2 3 for to 4 do if 5 then 6 Поміняти 7 8 Поміняти 9 return
Функція Робить те ж саме, але вносить рандомізацію в поділ.
1 2 Поміняти 9 return
Сам пошук k-ї статистики в масиві A здійснюється функцією
1. if 2. then return 3. 4. 5. if 6. then return 7. elseif 8. then return 9. else return
Аналіз алгоритму
В найкращому випадку (за умови розбиття на рівні частини), час роботи пошуку описується рівнянням:
Середній час роботи також є, і завдяки рандомізації швидкість роботи на довільному вході близька до середньої. Якщо ж розбиття вибрано погано то в найгіршому випадку складність буде
Алгоритм пошуку за лінійний час (BFPRT-алгоритм)
Названий в честь своїх винахідників: Manual Blum, Robert W. Floyd, Vaughan R. Pratt, Ronald L. Rivest і Robert Endre Tarjan. Також відомий англійською як median-of-medians algorithm
Алгоритм працює подібно до попереднього, але він гарантує собі хороше розбиття, а отже і час роботи в найгіршому випадку O(n).
Алгоритм пошуку k-ї порядкової статистики виконує такі кроки:
- Якщо вхідний масив містить лише один елемент, то повернути цей елемент і завершити роботу.
- Всі елементів масиву розбиваються на груп по 5 елементів в кожній і одну групу з елементами (вона може виявитись пустою).
- Кожна група впорядковується методом включення і в кожній з груп обирається медіана.
- Шляхом рекурсивного виклику алгоритму знаходиться медіана множини медіан, знайдених на кроці 3 (якщо медіан дві, то обирається нижня).
- За допомогою модифікованої версії процедури вхідний масив поділяється відносно медіани . Нехай — число на одиницю більше за число елементів що потрапили в першу частину.
- Якщо повертається значення . Інакше, алгоритм викликається рекурсивно, для першої частини, якщо і для другої якщо (при цьому, замінюється на ).
Аналіз роботи
Час на впорядкування всіх маленьких частин масиву і час на розбиття масиву є O(n). Вибір елемента розбиття x гарантує, що в більшу частину попаде не більше 7n/10+6 елементів. Отже, рівняння для часу роботи є:
Посилання
- Manuel Blum, Robert W. Floyd, Vaughan Pratt, Ronald L. Rivest and Robert E. Tarjan. Time Bounds for Selection. Journal of Computer and System Sciences, 7(4):448-461, 1973
- C.A.R. Hoare. Algorithm 63 (PARTITION) and Algorithm 65 (FIND). Communications of the ACM, 4(7):321-322, 1961
- Robert W. Floyd and Ronald L. Rivest. Expected Time Bounds for Selection. Communications of the ACM, 18(3):165-172, 1975
- Samuel W. Bent and John W. John. Finding the Median Requires 2n Comparisons. In Proceedings of the 41st Annual Symposium on Fundations of Computer Science, pages 399-409, 2000
- A. Schönhage, M. Paterson and N. Pippenger. Finding the median. Journal of Computer and System Sciences, 13(2):184-199, 1976
- Dorit Dor and Uri Zwick. Selecting the Median. In Preceeding of the 6th ACM-SIAM Symposium on Descrete Algorithms, pages 28-37, 1995
Джерела
- Thimas H. Cormen; Charles E. Leiserson; Ronald L. Rivest; Clifford Stein. Introduction to Algorithms (2nd ed.) The MIT Press.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Poshuk poryadkovoyi statistiki i yu poryadkovoyu statistikoyu angl order statistic mnozhini z n elementiv nazivayetsya i j u poryadku zrostannya element mnozhini Tak minimum mnozhini ce persha poryadkova statistika a maksimum n ta poryadkova statistika Media na angl median neformalno oznachaye seredinu mnozhini Yaksho n neparne to mediana yedina i yiyi indeks indeks vidpovidnoyi poryadkovoyi statistiki dorivnyuye i n 1 2 yaksho zh n parne to mediani dvi i n 2 ta i n 2 1 Formalno zadacha poshuku poryadkovoyi statistiki viznachayetsya tak Dano mnozhinuA displaystyle A sho skladayetsya zn displaystyle n riznih chisel i chislo 1 i n displaystyle 1 leq i leq n Potribno znajti element x A displaystyle x in A sho bilshij za rivnoi 1 displaystyle i 1 inshih elementiv mnozhiniA displaystyle A Zadachu mozhna rozv yazati za chasO n log n displaystyle O n log n Dlya cogo dostatno vporyadkuvati elementi za zrostannyam a potim vzyati i j element Ale ye algoritmi sho mozhut rozv yazati cyu zadachu za chasO n displaystyle O n v serednomu i navit u najgirshomu vipadkah IstoriyaAlgoritm poshuku median chas roboti yakogo v najgirshomu vipadku linijno zalezhit vid kilkosti vhidnih elementiv buv rozroblenij Blyumom Flojdom Prattom Rivestom i Tarzhanom Versiya cogo algoritmu zi znizhenim serednim chasom roboti bula opublikovana v roboti Toni Goara Flojd i Rivest stvorili pokrashenu versiyu algoritmu sho pracyuvala v serednomu she krashe Dosi nevidomo skilki same porivnyan neobhidno zrobiti dlya poshuku mediani Nizhnya granicya rivna 2n porivnyannyam bula znajdena Bentom i Dzhonom a verhnya granicya rivna 3n porivnyannyam Shjonhagom Patersonom i Pippendzherom Dor i Cvik pokrashili obidvi granici yih verhnya granicya trohi mensha za 2 95n a nizhnya trohi bilsha za 2n Algoritm poshuku minimumu ta maksimumuOkremo minimum i maksimum pershu i n nu poryadkovi statistiki mnozhini masivu mozhna znajti zan 1 displaystyle n 1 porivnyan kozhen U praktichnih zadachah chasto neobhidno odnochasno znajti i minimum i maksimum pri odnochasnomu poshuku kilkist porivnyan mozhna zmenshiti z 2 n 2 displaystyle 2n 2 do 3 n 2 displaystyle 3 lfloor n 2 rfloor porivnyan Dlya cogo potribno brati po dva elementi z mnozhini i porivnyuvati yih mizh soboyu Potim bilshij element porivnyuvati z potochnim maksimumom a menshij z potochnim minimumom Takim chinom ekonomitsya 1 porivnyannya 3 porivnyannya zamist 4 Psevdokod F i n d M a x M i n A displaystyle FindMaxMin A 1 m i n A 1 displaystyle min leftarrow A 1 2 m a x A 1 displaystyle max leftarrow A 1 3 i 2 displaystyle i leftarrow 2 4 if l e n g t h A mod 2 0 displaystyle length A mod 2 0 5 then if A 2 gt m a x displaystyle A 2 gt max 6 then m a x A 2 displaystyle max leftarrow A 2 7 else m i n A 2 displaystyle min leftarrow A 2 8 i 3 displaystyle i leftarrow 3 9 while i l e n g t h A displaystyle i leq length A 10 do j i displaystyle j leftarrow i 11 k i 1 displaystyle k leftarrow i 1 12 if A j gt A k displaystyle A j gt A k 13 then Pominyati j k displaystyle j leftrightarrow k 14 if A j lt m i n displaystyle A j lt min 15 then m i n A j displaystyle min leftarrow A j 16 if A k gt m a x displaystyle A k gt max 17 then m a x A k displaystyle max leftarrow A k 18 i i 2 displaystyle i leftarrow i 2 Taka optimizaciya docilna u vipadkah koli porivnyannya elementiv z mnozhini A zajmaye bagato chasu Napriklad yaksho porivnyuyetsya tekst abo grafichni zobrazhennya Algoritm poshuku za linijnij v serednomu chasAlgoritm gruntuyetsya na principi rozdilyaj i vladaryuj i pracyuye podibno do shvidkogo sortuvannya Dlya zabezpechennya malogo chasu roboti dlya vsih mozhlivih vhidnih danih v algoritm uvoditsya randomizaciya Algoritm zaproponuvav Toni Goar Ideya polyagaye v rozdilenni vsogo masivu na dvi chastini tak sho kozhen element v pershij chastini ne bilshij za bud yakij z drugoyi chastini Dali poshuk mozhna prodovzhiti tilki v odnij z chastin Psevdokod Funkciya P a r t i t i o n A p q displaystyle Partition A p q vikonuye rozdilennya chastini masivu z p go po q j element na dvi menshi chastini P a r t i t i o n A p q displaystyle Partition A p q 1 x A q displaystyle x gets A q 2 i p 1 displaystyle i gets p 1 3 for j p displaystyle j gets p to q 1 displaystyle q 1 4 do if A j x displaystyle A j leq x 5 then i i 1 displaystyle i gets i 1 6 Pominyati A i A j displaystyle A i leftrightarrow A j 7 i i 1 displaystyle i gets i 1 8 Pominyati A i A q displaystyle A i leftrightarrow A q 9 return i displaystyle i Funkciya R a n d o m i z e d P a r t i t i o n A p q displaystyle Randomized Partition A p q Robit te zh same ale vnosit randomizaciyu v podil R a n d o m i z e d P a r t i t i o n A p q displaystyle Randomized Partition A p q 1 i R a n d o m p q displaystyle i leftarrow Random p q 2 Pominyati A i A q displaystyle A i leftrightarrow A q 9 return P a r t i t i o n A p q displaystyle Partition A p q Sam poshuk k yi statistiki v masivi A zdijsnyuyetsya funkciyeyu R a n d o m i z e d S e l e c t A 1 l e n g t h A k displaystyle Randomized Select A 1 length A k R a n d o m i z e d S e l e c t A p q k displaystyle Randomized Select A p q k 1 if p q displaystyle p q 2 then return A p displaystyle A p 3 r R a n d o m i z e d P a r t i t i o n A p q displaystyle r leftarrow Randomized Partition A p q 4 t r p 1 displaystyle t leftarrow r p 1 5 if k t displaystyle k t 6 then return A r displaystyle A r 7 elseif k lt t displaystyle k lt t 8 then return R a n d o m i z e d S e l e c t A p r 1 k displaystyle Randomized Select A p r 1 k 9 else return R a n d o m i z e d S e l e c t A r 1 q k t displaystyle Randomized Select A r 1 q k t Analiz algoritmu V najkrashomu vipadku za umovi rozbittya na rivni chastini chas roboti poshuku opisuyetsya rivnyannyam T n T n 2 O n O n displaystyle T n T left frac n 2 right O n O n Serednij chas roboti takozh yeO n displaystyle O n i zavdyaki randomizaciyi shvidkist roboti na dovilnomu vhodi blizka do serednoyi Yaksho zh rozbittya vibrano pogano to v najgirshomu vipadku skladnist bude O n 2 displaystyle O n 2 Algoritm poshuku za linijnij chas BFPRT algoritm Nazvanij v chest svoyih vinahidnikiv Manual Blum Robert W Floyd Vaughan R Pratt Ronald L Rivest i Robert Endre Tarjan Takozh vidomij anglijskoyu yak median of medians algorithm Algoritm pracyuye podibno do poperednogo ale vin garantuye sobi horoshe rozbittya a otzhe i chas roboti v najgirshomu vipadku O n Algoritm poshuku k yi poryadkovoyi statistiki vikonuye taki kroki Yaksho vhidnij masiv mistit lishe odin element to povernuti cej element i zavershiti robotu Vsi n displaystyle n elementiv masivu rozbivayutsya na n 5 displaystyle lfloor n 5 rfloor grup po 5 elementiv v kozhnij i odnu grupu z n mod 5 displaystyle n mod 5 elementami vona mozhe viyavitis pustoyu Kozhna grupa vporyadkovuyetsya metodom vklyuchennya i v kozhnij z grup obirayetsya mediana Shlyahom rekursivnogo vikliku algoritmu znahoditsya mediana x displaystyle x mnozhini n 5 displaystyle lceil n 5 rceil median znajdenih na kroci 3 yaksho median dvi to obirayetsya nizhnya Za dopomogoyu modifikovanoyi versiyi proceduri P a r t i t i o n displaystyle Partition vhidnij masiv podilyayetsya vidnosno mediani x displaystyle x Nehaj i displaystyle i chislo na odinicyu bilshe za chislo elementiv sho potrapili v pershu chastinu Yaksho k i displaystyle k i povertayetsya znachennya x displaystyle x Inakshe algoritm viklikayetsya rekursivno dlya pershoyi chastini yaksho k lt i displaystyle k lt i i dlya drugoyi yaksho k gt i displaystyle k gt i pri comu k displaystyle k zaminyuyetsya na k i displaystyle k i Analiz roboti Chas na vporyadkuvannya vsih malenkih chastin masivu i chas na rozbittya masivu ye O n Vibir elementa rozbittya x garantuye sho v bilshu chastinu popade ne bilshe 7n 10 6 elementiv Otzhe rivnyannya dlya chasu roboti ye T n T n 5 T 7 n 10 6 O n O n displaystyle T n T left left lceil frac n 5 right rceil right T left frac 7n 10 6 right O n O n PosilannyaManuel Blum Robert W Floyd Vaughan Pratt Ronald L Rivest and Robert E Tarjan Time Bounds for Selection Journal of Computer and System Sciences 7 4 448 461 1973 C A R Hoare Algorithm 63 PARTITION and Algorithm 65 FIND Communications of the ACM 4 7 321 322 1961 Robert W Floyd and Ronald L Rivest Expected Time Bounds for Selection Communications of the ACM 18 3 165 172 1975 Samuel W Bent and John W John Finding the Median Requires 2n Comparisons In Proceedings of the 41st Annual Symposium on Fundations of Computer Science pages 399 409 2000 A Schonhage M Paterson and N Pippenger Finding the median Journal of Computer and System Sciences 13 2 184 199 1976 Dorit Dor and Uri Zwick Selecting the Median In Preceeding of the 6th ACM SIAM Symposium on Descrete Algorithms pages 28 37 1995DzherelaThimas H Cormen Charles E Leiserson Ronald L Rivest Clifford Stein Introduction to Algorithms 2nd ed The MIT Press ISBN 0 07 013151 1