Намагаючись зрозуміти, 2N lnN порівнює для швидкості


13

Я переглядав аналіз швидкості в книзі "Алгоритми" Седжевіка. Він створює наступне відношення рецидивів для кількості порівнянь у швидкості сортування під час сортування масиву з N різних елементів.

введіть тут опис зображення

У мене є важкий час для розуміння цього ... Я знаю, що потрібен 1 / N ймовірність, щоб будь-який елемент став стержнем, і якщо k стане стрижним, то в лівому підмасиві будуть елементи k-1, а правий під- масив матиме елементи Nk.

1.Як вартість перегородки стає N + 1? Чи потрібно N + 1 порівнювати, щоб зробити розділення?

2.Sedgewick каже, що для кожного значення k, якщо ви додаєте їх, ймовірність того, що елемент, що розділяє, k + вартість двох підмасивів, ви отримаєте вищевказане рівняння.

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

1
Частина відповіді, скопійована з en.wikipedia.org/wiki/Quicksort "Отже, усереднення по всіх можливих розбиттях та зауваження, що кількість порівнянь для розділу становить n - 1, середня кількість порівнянь за всі перестановки введення послідовність можна точно оцінити, вирішивши відношення рецидиву: "Чомусь ми тут відключені на 2 - n-1 проти n + 1.
Робота

Відповіді:


7

Функція вартості Cдля кікспорта складається з двох частин. Перша частина - це вартість розподілу масиву на дві "половинки" (половини не повинні бути однакового розміру, отже, лапки). Друга частина - це вартість сортування цих двох половин.

  1. (N + 1)Термін фактично конденсованої термін, і виходить з умов

    (N - 1) + 2
    

    Це вартість розподілу в швидкості: N-1порівнюється зі значенням повороту і 2 додаткові порівняння через деякі граничні умови в розділі.

  2. Друга частина рівняння складається з витрат на сортування двох "половинок" по обидві сторони від значення зведення k.

    Вибравши значення повороту, вам залишаються дві несортовані "половинки". Вартість сортування цих «половинок» залежить від їх розміру і найлегше описується як рекурсивне застосування функції витрат C. Якщо зріз є найменшим із Nзначень, витрати на сортування кожної з двох «половинок» відповідно C(0)і C(N-1)(витрати на сортування масиву з 0 елементами та витрати на сортування одного з N-1елементами). Якщо зведення є п’ятою найменшою, то вартість сортування кожної з двох «половинок» становить відповідно C(5)і C(N-6)(вартість сортування масиву з 5 елементами та вартість сортування одного з N-6елементами). І аналогічно для всіх інших значень зведення.

    Але скільки коштує сортувати ці дві "половинки", якщо ви не знаєте значення зведення? Це робиться шляхом взяття витрат на кожне можливе значення шарніру і множення на випадковість того, що саме ця величина виявиться.

    Оскільки кожне значення повороту однаково вірогідне, шанс вибору конкретного значення зрізу є, 1/Nякщо у вас є Nелементи. Щоб зрозуміти це, подумайте про те, щоб котити кістки. При правильних костях шанс для кожної сторони опинитися обличчям вгору рівний, тому шанс прокатати 1 - це 1/6.

    У поєднанні це дає термін підсумовування, коли для кожного можливого значення k шарної точки вартість ( C(k-1) + C(N-k)) множиться на шанс ( 1/N)

  3. Подальше виведення формули підсумовування у питанні до 2N lnNзаголовка вимагає занадто великої математики для пояснення тут деталей, але воно ґрунтується на розумінні того, що вартість на сортування масиву Nелементів ( C(N)) може бути виражена у формі сортування масив N-1елементів ( C(N-1)) і фактор, прямо пропорційний N.


2
  1. Здається, що N + 1 як кількість порівнянь для кроку розділу є помилкою у книзі. Потрібно з’ясувати для кожного з N-1 елементів, що не враховуються, чи менший він, або більший, ніж шарнір, який займає одне порівняння; таким чином, N – 1 порівняння в цілому, а не N + 1. (Розглянемо найпростіший випадок, N = 2, тобто один шарнір і один інший елемент. Тут абсолютно немає місця для проведення трьох порівнянь між двома елементами.)

  2. Розглянемо випадок, коли обраний стрижень є найменшим елементом (k = 1). Це означає, що масив ділиться на порожню частину зліва (немає елементів, менших за зріз) та частину праворуч, яка містить усі елементи, за винятком повороту (всі інші елементи більше, ніж зведені. ). Це означає, що підзадачі, які ви зараз хочете вирішити рекурсивно, мають розміри 0 і N – 1 (k – 1 і N – k) відповідно і потребують порівняння C (0) і C (N – 1); таким чином, C (0) + C (N – 1) в цілому.

    Якщо зведений елемент є другим найменшим елементом (k = 2), розміри підзадачі становлять 1 і N – 2 (k – 1 і N – k; один елемент зліва, тому що він єдиний менший ніж стрижень). Таким чином, для рекурсивного вирішення цих підзадач потрібно зіставлення C (1) + C (N – 2). І так далі, якщо стрижень є третім найменшим елементом, четвертим і т. Д. Це вирази в чисельниках.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.