Класичним застосуванням ділення та перемоги є вирішення наступної проблеми:
З огляду на масив [ 1 ... п ] з окремих елементів, які можна порівняти, підрахувати число пар інверсії в масиві: пари таким чином, що , і .
Один із підходів до цього - зробити сортування об'єднань, але також підрахунок кількості пар інверсії в підзадачі. Під час кроку злиття ми підраховуємо кількість пар інверсії, які охоплюють (дві) підпроблеми, і додаємо до числа підзадач.
Хоча це добре і дає алгоритм часу , це заплутує масив.
Якщо у нас є додаткове обмеження, що масив є лише для читання, то ми можемо зробити копію та обробити копію, або використати додаткову структуру даних, на зразок статистики замовлень, збалансованого двійкового дерева, щоб зробити підрахунок, обидва з яких використовують простір.
Поточне питання - спробувати покращити простір, не впливаючи на час виконання. тобто
Чи існує алгоритм часу для підрахунку кількості пар інверсії, який працює на масиві, доступному лише для читання, і використовує підлінійний (тобто ) простір?
Припустимо модель RAM з рівномірною вартістю, і що елементи займають простір а порівняння між ними - .O ( 1 )
Довідка буде робити, але пояснення буде краще :-)
Я спробував шукати в Інтернеті, але не зміг знайти на це жодної позитивної / негативної відповіді. Я думаю, це просто цікавість.