Чи існують алгоритми чи структури даних, яким потрібно знайти середнє значення набору?


14

Я читав цю книгу для свого класу «Довільні алгоритми». У цій конкретній книзі є цілий розділ, присвячений пошуку медіани масиву за допомогою випадкового вибору, що призводить до більш ефективного алгоритму. Тепер я хотів знати, чи є якісь практичні програми цього алгоритму, крім сфери теоретичних удосконалень, у галузі інформатики. Чи є алгоритми чи структури даних, які потребують пошуку медіани масиву?


3
Можливо, ви захочете поглянути на швидкий вибір: Вибравши медіану як стрижневу, можна уникнути її найгіршого випадку (найгірший час виконання = O (n log n) замість O (n ^ 2)), і глибина рекурсії буде мінімізовано (log2 (n)).
hoffmale

1
@hoffmale: Але це не вимагає від вас медіани. Це вимагає, щоб ви знайшли значення, що є досить близьким до медіани. Наприклад, знаходження стрижня, який не знаходиться в межах верхнього 5% або нижнього 5%, гарантує O (n log n).
gnasher729

1
@ gnasher729: але це не зведе до мінімуму глибину рекурсії. Обидва властивості важливі, наприклад, в обмеженому ресурсом середовищі в реальному часі.
hoffmale

@hoffmale, до речі, звичайне позначення логарифму 2 бази (особливо серед комп'ютерних вчених) просто "lg", як у (lg (n)).
Wildcard

@ gnasher729 Оскільки тема стохастичних алгоритмів, це (= досить близько), ймовірно, саме те, що ці алгоритми роблять.
Конрад Рудольф

Відповіді:


17

якщо є якісь практичні програми цього алгоритму в галузі інформатики, окрім теоретичного вдосконалення

Застосування цього алгоритму тривіальне - ви використовуєте його, коли хочете обчислити медіану набору даних (масив іншими словами). Ці дані можуть надходити з різних областей: астрономічних спостережень, суспільствознавства, біологічних даних тощо.

Однак варто згадати, коли віддати перевагу середній середній (або режимі). В основному, в описовій статистиці, коли наші дані абсолютно нормально розподілені, тоді середнє значення, режим і медіана рівні, тобто вони збігаються. З іншого боку, коли наші дані перекошені, тобто розподіл частоти для наших даних (лівий / правий) перекошений, середнє не вдається забезпечити найкраще центральне місце розташування, тому що перекос перетягує його від типового значення ліворуч або праворуч , хоча медіана не настільки сильно впливає на перекошені дані, і, таким чином, найкраще зберігає це положення, вказуючи на типове значення. Таким чином, обчислення медіани може бути кращим, коли ви маєте справу зі скасованими даними.

k


Дякую! Це надзвичайно корисно! Будь-які інші алгоритми чи методи, які можуть знадобитися для пошуку медіани?
Sharan Duggirala

5
Хоча це достатньо правдиво (+1), частіше за все в застосованій статистиці дані будуть сортуватися до пошуку медіани, оскільки в багатьох чи навіть більшості контекстів, де медіана бажана, так що принаймні деякі інші порядки статистика.
Джон Коулман

1
kk

13

Середня фільтрація поширена для зменшення певних типів шуму при обробці зображень. Особливо шум солі та перцю. Він працює, вибираючи серединне значення у кожному кольоровому каналі у кожній локальній околиці зображення та замінюючи його. Наскільки великі ці мікрорайони, може змінюватись. Популярні розміри фільтрів (мікрорайони), наприклад, 3x3 та 5x5 пікселів.


1
Медіана застосовується не лише до шуму в зображеннях, але до шуму в майже всіх показаннях датчиків, з яких камери є лише одним з видів датчиків. Шкільні підручники показують приємні синусоїдальні та квадратні форми хвиль для роботи. У реальному світі таких чистих даних майже ніколи не буває. Якщо це так, це майже завжди тому, що ще хтось подбав про вирівнювання даних, перш ніж ви їх отримали. наприклад, для більш типових даних зчитування датчика, для яких потрібно вибрати «правильне» значення: (1, 3, 5, 65, 68, 70, 75, 80, 82, 85, 540, 555). Я сортував дані, щоб зробити це більш очевидним.
Данк

1
Так, ти маєш рацію. Але це дало б дуже довгу і нудну відповідь, якби ми записали всі дрібниці при обробці сигналів, де це можна використовувати.
mathreadler

1
Медіани в обробці зображень також можуть використовуватися на піксель із послідовностями 5 або більше фотографій, що є способом позбутися від тимчасового шуму (ака. Туристів, що блокують погляд)
Хаген фон Ейцен

@HagenvonEitzen Ви маєте рацію! Насправді я думав про щось зовсім подібне лише кілька днів тому. Багато туристів навколо ...
mathreadler

10

Обчислювальні медіани особливо важливі в рандомізованих алгоритмах.

341±ϵA34kA(1±ϵ)kА(1-ϵ) або принаймні наполовину були більшими за А(1+ϵ), і це вірогідність експоненціально мала в к.

Медіа-обчислювачі приймають наш шалений алгоритм "Це неправильно один раз у чотири" і перетворює його на "Це неправильно один раз у 2н запускає алгоритм, додаючи лише фактор чогось подібного н до часу виконання.


5

Алгоритм вибору має кілька додатків:

  • Пошук опорного пункту для швидкості, який приносить йому найгірший час О(нжурналн).
  • Пошук опорного пункту для швидкого вибору, що приносить найскладніші труднощі в часі О(н), від О(н2).

1
Насправді, використання медіани медіанів для вибору опорного пункту для швидкого походження, здається, дуже ймовірно сповільнить алгоритм на практиці, оскільки він повністю вбиває локальність кешу, що є основним внеском у швидкість швидкості. Але ваш коментар щодо найгіршої складності, звичайно, правильний.
wchargin

@wchargin Які альтернативи ви пропонуєте? Жодна практична реалізація швидкості, яка мені відома, не використовує кеш-чутливий шарнір, тому що він торгується в жорстокому найгіршому режимі виконання. У семінарі «Інженерна функція сортування» обговорюються альтернативи, і жодна з них не знає кеш-пам'ять (і тим не менше перевершує наївний вибір шарніра).
Конрад Рудольф

1
@wchargin… відповідаючи на моє власне запитання: Java 7 перейшла на нову процедуру подвійного зведення, про яку я не знав. Це є інтригуючим і може зробити застарілі алгоритми середнього зведення.
Конрад Рудольф
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.