Амортизаційний аналіз — метод аналізу швидкодії алгоритмів, що розглядає усю послідовність операцій виконуваних програмою. Тут ми усереднюємо час необхідний для виконання операції над певною структурою даних. З амортизаційним аналізом ми можемо показати, що середній час необхідний на одну операцію нетривалий, хоча певні операції у послідовності вимагають багато часу. Амортизаційний аналіз відрізняється від аналізу середнього випадку тим, що ймовірність не має значення; амортизаційний аналіз гарантує середню швидкодію кожної операції в найгіршому випадку. Прикладами структур даних чиї операцію аналізуються за допомогою амортизаційного аналізу є геш-таблиці, неперетинні множини, розширювані дерева.
Амортизаційний аналіз початково виник з методу відомого як агрегаційний аналіз або метод групування, який наразі є одним зі способів проведення амортизаційного аналізу. Однак, формально, техніка була представлена Робертом Тар'яном у його документі 1985 року Амортизована складність обчислень, який висвітлював більш корисний різновид аналізу ніж звичайний імовірнісний аналіз.
Вступ
Аналіз найгіршого випадку може дати занадто песимістичну оцінку для послідовності операцій, через те, що такий аналіз нехтує взаємодією між різними операціями на тій самій структурі даних. Амортизаційний аналіз може привести до більш реалістичної оцінки найгіршого випадку завдяки врахуванню цих взаємодій. Зауважте, що оцінка представлена амортизаційним аналізом, насправді, є найгіршим випадком на середню операцію; деякі операції в послідовності можуть мати більшу трудомісткість ніж ця оцінка межі, але середня вартість в кожній правильній послідовності ніколи не буде її перевищувати.
Амортизаційний аналіз подібний до аналізу середнього випадку в тому сенсі, що він цікавиться вартістю усередненою на всю послідовність операцій. Однак, аналіз середнього випадку покладається на ймовірнісні припущення щодо структури даних і алгоритму для того, щоб обчислити сподіваний час виконання алгоритму. Тобто, його використання залежить від певних припущень щодо ймовірнісного розподілу вхідних даних, з чого випливає, що оцінка не правильна якщо припущення не дотримані (або ймовірнісний аналіз не можна використовувати взагалі, якщо не можна розподіл вхідних даних). Амортизаційний аналіз не потребує таких припущень. Також він пропонує верхню межу на найгіршу швидкодію послідовності операцій, і ця межа завжди чинна. З іншого боку, межа встановлена аналізом середнього випадку не виключає, що трапиться операція з високою трудомісткістю, яка вимагатиме більше часу ніж сподіваний середній час, навіть якщо умови на розподіл дотримані. Ці відмінності між амортизаційним аналізом і аналізом середнього випадку мають важливі наслідки для інтерпретації і доречності отриманих меж.
Амортизаційний аналіз близько пов'язаний зі змаговим аналізом, який включає порівняння швидкодії найгіршого випадку онлайн алгоритму зі швидкодією оптимального оффлайн алгоритму на тих самих даних. Амортизація корисна тому, що межі встановлені конкурентним аналізом повинні бути чинними незалежно від вхідних даних, які онлайн алгоритм бачить як послідовність, а не всі одразу на початку виконання.
Метод групування
Метод групування — простий метод, який обчислює межу на послідовність операцій, тоді ділить її на кількість операцій, щоб отримати амортизаційну вартість, навіть якщо операцій різного типу (наприклад, додавання одного елементу до стеку або виштовхування декількох елементів зі стеку).
Приклад
Розглянемо стек на якому визначені три операції:
- — додає елемент до стеку, потребує
- — виштовхує елемент з вершини стеку і повертає його, потребує
- — виштовхує елементів зі стеку, потребує .
Оскільки операції і мають часову складність ми можемо вважати, що ціна кожної з цих операцій Ціна послідовності з операцій становить Тепер додамо до послідовності операцію Часова складність цієї операції в найгіршому випадку становить оскільки стек містить щонайбільше елементів. Виходить, що найгірша часова складність для всіх трьох операцій становить отже послідовність у найгіршому випадку вимагає Цей результат правильний але недостатньо точний.
Використовуючи метод групування, ми можемо отримати кращу оцінку. Оскільки ми можемо виштовхнути елемент зі стеку лише один раз на кожне додавання, отже, послідовність операцій і потребує часу. З цього отримуємо середню вартість операції як Для отримання цієї оцінки ми не використовували ймовірнісних аргументів. Ми знайшли межу найгіршого випадку для послідовності з операцій, поділили на кількість операцій і отримали середню вартість операції або амортизаційну вартість.
Обліковий метод
Обліковий метод накладає різні вартості на різні операції, така вартість може бути більшою або меншою ніж дійсна вартість операції і називається амортизаційною вартістю. Якщо амортизаційна вартість перевищує дійсну вартість, то різниця зберігається в об'єкті, який ми називаємо передоплата. Передоплата може допомогти оплатити одну з дальших операцій, якщо її справжня вартість більша ніж амортизаційна. Цей метод відрізняється від методу групування, в якому всі операції мають однакову амортизаційну вартість.
Ми повинні гарантувати, що підсумкова амортизаційна вартість послідовності операцій є не меншою ніж підсумкова дійсна вартість послідовності операцій. Якщо позначити амортизаційну вартість ї операції як тоді ми вимагаємо, щоб
для всіх можливих послідовностей. При такому записі передоплата становить І він завжди повинен бути невід'ємним.
Приклад
Для ілюстрації облікового методу можна використати приклад стека наведений вище. Дійсна вартість операцій становить:
1 | |
1 | |
Де — висота стека. Спробуємо назначити такі амортизаційні вартості:
2 | |
0 | |
0 |
Оскільки на кожне додавання припадає не більше ніж одне виштовхування, за умови подвійної плати за додавання ми можемо собі дозволити не брати плату за виштовхування елементів по одному чи групами.
Метод потенціалів
Метод потенціалів представляє передоплату як потенціальну енергію або просто потенціал, який можна використовувати для оплати наступних операцій. Ми пов'язуємо потенціал з усією структурою даних над якою ми проводимо операції.
Ми проведемо операцій над структурою даних яка початково перебуває в стані Кожна операцій з переводить структуру зі стану у стан і її дійсна вартість становить Введемо потенціальну функцію , яка ставить у відповідність кожному стану дійсне число. Тоді, якщо позначити амортизаційну вартість як маємо
З цього отримуємо амортизаційну вартість для послідовності операцій
Якщо ми можемо визначити потенціальну функцію так, що тоді підсумкова амортизаційна вартість становить верхню межу для підсумкової дійсної вартості. Оскільки ми не знаємо скільки операцій буде виконано ми повинні визначити потенціальну функцію так, щоб Зазвичай ми визначаємо
Приклад
Знов розглянемо приклад зі стеком. Ми визначимо потенціальну функцію як кількість об'єктів у стеку. Для порожнього стеку і після будь-якої послідовності з операцій
Розглянемо чому дорівнюють амортизаційні вартості операцій. Для операції різниця потенціалів становить Отже амортизаційна вартість дорівнює Для операцій і маємо і
Примітки
- Тар'ян, Роберт (1985). Амортизована складність обчислень. SIAM Journal on Algebraic and Discrete Methods. 6 (2): 306—318. doi:10.1137/0606031.(англ.)
- Т. Кормен; Ч. Лейзерсон; Р. Рівест; К. Стайн (2009) [1990]. 17.2 Обліковий метод. Вступ до алгоритмів (вид. 3rd). MIT Press і McGraw-Hill. ISBN .
Посилання
- , Принстонський університет (англ.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Amortizacijnij analiz metod analizu shvidkodiyi algoritmiv sho rozglyadaye usyu poslidovnist operacij vikonuvanih programoyu Tut mi userednyuyemo chas neobhidnij dlya vikonannya operaciyi nad pevnoyu strukturoyu danih Z amortizacijnim analizom mi mozhemo pokazati sho serednij chas neobhidnij na odnu operaciyu netrivalij hocha pevni operaciyi u poslidovnosti vimagayut bagato chasu Amortizacijnij analiz vidriznyayetsya vid analizu serednogo vipadku tim sho jmovirnist ne maye znachennya amortizacijnij analiz garantuye serednyu shvidkodiyu kozhnoyi operaciyi v najgirshomu vipadku Prikladami struktur danih chiyi operaciyu analizuyutsya za dopomogoyu amortizacijnogo analizu ye gesh tablici neperetinni mnozhini rozshiryuvani dereva Amortizacijnij analiz pochatkovo vinik z metodu vidomogo yak agregacijnij analiz abo metod grupuvannya yakij narazi ye odnim zi sposobiv provedennya amortizacijnogo analizu Odnak formalno tehnika bula predstavlena Robertom Tar yanom u jogo dokumenti 1985 roku Amortizovana skladnist obchislen yakij visvitlyuvav bilsh korisnij riznovid analizu nizh zvichajnij imovirnisnij analiz VstupAnaliz najgirshogo vipadku mozhe dati zanadto pesimistichnu ocinku dlya poslidovnosti operacij cherez te sho takij analiz nehtuye vzayemodiyeyu mizh riznimi operaciyami na tij samij strukturi danih Amortizacijnij analiz mozhe privesti do bilsh realistichnoyi ocinki najgirshogo vipadku zavdyaki vrahuvannyu cih vzayemodij Zauvazhte sho ocinka predstavlena amortizacijnim analizom naspravdi ye najgirshim vipadkom na serednyu operaciyu deyaki operaciyi v poslidovnosti mozhut mati bilshu trudomistkist nizh cya ocinka mezhi ale serednya vartist v kozhnij pravilnij poslidovnosti nikoli ne bude yiyi perevishuvati Amortizacijnij analiz podibnij do analizu serednogo vipadku v tomu sensi sho vin cikavitsya vartistyu userednenoyu na vsyu poslidovnist operacij Odnak analiz serednogo vipadku pokladayetsya na jmovirnisni pripushennya shodo strukturi danih i algoritmu dlya togo shob obchisliti spodivanij chas vikonannya algoritmu Tobto jogo vikoristannya zalezhit vid pevnih pripushen shodo jmovirnisnogo rozpodilu vhidnih danih z chogo viplivaye sho ocinka ne pravilna yaksho pripushennya ne dotrimani abo jmovirnisnij analiz ne mozhna vikoristovuvati vzagali yaksho ne mozhna rozpodil vhidnih danih Amortizacijnij analiz ne potrebuye takih pripushen Takozh vin proponuye verhnyu mezhu na najgirshu shvidkodiyu poslidovnosti operacij i cya mezha zavzhdi chinna Z inshogo boku mezha vstanovlena analizom serednogo vipadku ne viklyuchaye sho trapitsya operaciya z visokoyu trudomistkistyu yaka vimagatime bilshe chasu nizh spodivanij serednij chas navit yaksho umovi na rozpodil dotrimani Ci vidminnosti mizh amortizacijnim analizom i analizom serednogo vipadku mayut vazhlivi naslidki dlya interpretaciyi i dorechnosti otrimanih mezh Amortizacijnij analiz blizko pov yazanij zi zmagovim analizom yakij vklyuchaye porivnyannya shvidkodiyi najgirshogo vipadku onlajn algoritmu zi shvidkodiyeyu optimalnogo offlajn algoritmu na tih samih danih Amortizaciya korisna tomu sho mezhi vstanovleni konkurentnim analizom povinni buti chinnimi nezalezhno vid vhidnih danih yaki onlajn algoritm bachit yak poslidovnist a ne vsi odrazu na pochatku vikonannya Metod grupuvannyaMetod grupuvannya prostij metod yakij obchislyuye mezhu na poslidovnist operacij todi dilit yiyi na kilkist operacij shob otrimati amortizacijnu vartist navit yaksho operacij riznogo tipu napriklad dodavannya odnogo elementu do steku abo vishtovhuvannya dekilkoh elementiv zi steku Priklad Rozglyanemo stek na yakomu viznacheni tri operaciyi Push S x displaystyle mbox Push S x dodaye element x displaystyle x do steku potrebuye O 1 displaystyle O 1 Pop S displaystyle mbox Pop S vishtovhuye element z vershini steku i povertaye jogo potrebuye O 1 displaystyle O 1 Multipop S k displaystyle mbox Multipop S k vishtovhuye k displaystyle k elementiv zi steku potrebuye O k displaystyle O k Oskilki operaciyi Push displaystyle mbox Push i Pop displaystyle mbox Pop mayut chasovu skladnist O 1 displaystyle O 1 mi mozhemo vvazhati sho cina kozhnoyi z cih operacij 1 displaystyle 1 Cina poslidovnosti z n displaystyle n operacij stanovit n displaystyle n Teper dodamo do poslidovnosti operaciyu Multipop displaystyle mbox Multipop Chasova skladnist ciyeyi operaciyi v najgirshomu vipadku stanovit O n displaystyle O n oskilki stek mistit shonajbilshe n displaystyle n elementiv Vihodit sho najgirsha chasova skladnist dlya vsih troh operacij stanovit O n displaystyle O n otzhe poslidovnist u najgirshomu vipadku vimagaye O n 2 displaystyle O n 2 Cej rezultat pravilnij ale nedostatno tochnij Vikoristovuyuchi metod grupuvannya mi mozhemo otrimati krashu ocinku Oskilki mi mozhemo vishtovhnuti element zi steku lishe odin raz na kozhne dodavannya otzhe poslidovnist operacij Push displaystyle mbox Push Pop displaystyle mbox Pop i Multipop displaystyle mbox Multipop potrebuye O n displaystyle O n chasu Z cogo otrimuyemo serednyu vartist operaciyi yak O n n O 1 displaystyle O n n O 1 Dlya otrimannya ciyeyi ocinki mi ne vikoristovuvali jmovirnisnih argumentiv Mi znajshli mezhu najgirshogo vipadku dlya poslidovnosti z n displaystyle n operacij podilili na kilkist operacij i otrimali serednyu vartist operaciyi abo amortizacijnu vartist Oblikovij metodOblikovij metod nakladaye rizni vartosti na rizni operaciyi taka vartist mozhe buti bilshoyu abo menshoyu nizh dijsna vartist operaciyi i nazivayetsya amortizacijnoyu vartistyu Yaksho amortizacijna vartist perevishuye dijsnu vartist to riznicya zberigayetsya v ob yekti yakij mi nazivayemo peredoplata Peredoplata mozhe dopomogti oplatiti odnu z dalshih operacij yaksho yiyi spravzhnya vartist bilsha nizh amortizacijna Cej metod vidriznyayetsya vid metodu grupuvannya v yakomu vsi operaciyi mayut odnakovu amortizacijnu vartist Mi povinni garantuvati sho pidsumkova amortizacijna vartist poslidovnosti operacij ye ne menshoyu nizh pidsumkova dijsna vartist poslidovnosti operacij Yaksho poznachiti amortizacijnu vartist i displaystyle i yi operaciyi yak c i displaystyle hat c i todi mi vimagayemo shob i 1 n c i i 1 n c i displaystyle sum i 1 n hat c i geq sum i 1 n c i dlya vsih mozhlivih poslidovnostej Pri takomu zapisi peredoplata stanovit i 1 n c i i 1 n c i displaystyle sum i 1 n hat c i sum i 1 n c i I vin zavzhdi povinen buti nevid yemnim Priklad Dlya ilyustraciyi oblikovogo metodu mozhna vikoristati priklad steka navedenij vishe Dijsna vartist operacij stanovit Push displaystyle mbox Push 1 Pop displaystyle mbox Pop 1 Multipop displaystyle mbox Multipop min k s displaystyle min k s De s displaystyle s visota steka Sprobuyemo naznachiti taki amortizacijni vartosti Push displaystyle mbox Push 2 Pop displaystyle mbox Pop 0 Multipop displaystyle mbox Multipop 0 Oskilki na kozhne dodavannya pripadaye ne bilshe nizh odne vishtovhuvannya za umovi podvijnoyi plati za dodavannya mi mozhemo sobi dozvoliti ne brati platu za vishtovhuvannya elementiv po odnomu chi grupami Metod potencialivMetod potencialiv predstavlyaye peredoplatu yak potencialnu energiyu abo prosto potencial yakij mozhna vikoristovuvati dlya oplati nastupnih operacij Mi pov yazuyemo potencial z usiyeyu strukturoyu danih nad yakoyu mi provodimo operaciyi Mi provedemo n displaystyle n operacij nad strukturoyu danih D displaystyle D yaka pochatkovo perebuvaye v stani D 0 displaystyle D 0 Kozhna operacij z i 1 2 n displaystyle i 1 2 dots n perevodit strukturu zi stanu D i 1 displaystyle D i 1 u stan D i displaystyle D i i yiyi dijsna vartist stanovit c i displaystyle c i Vvedemo potencialnu funkciyu F displaystyle Phi yaka stavit u vidpovidnist kozhnomu stanu dijsne chislo Todi yaksho poznachiti amortizacijnu vartist yak c i displaystyle hat c i mayemo c i c i F D i F D i 1 displaystyle hat c i c i Phi D i Phi D i 1 Z cogo otrimuyemo amortizacijnu vartist dlya poslidovnosti operacij i 1 n c i i 1 n c i F D n F D 0 displaystyle sum i 1 n hat c i sum i 1 n c i Phi D n Phi D 0 Yaksho mi mozhemo viznachiti potencialnu funkciyu tak sho F D n F D 0 displaystyle Phi D n geq Phi D 0 todi pidsumkova amortizacijna vartist stanovit verhnyu mezhu dlya pidsumkovoyi dijsnoyi vartosti Oskilki mi ne znayemo skilki operacij bude vikonano mi povinni viznachiti potencialnu funkciyu tak shob i F D i F D 0 displaystyle forall i Phi D i geq Phi D 0 Zazvichaj mi viznachayemo F D 0 0 displaystyle Phi D 0 0 Priklad Znov rozglyanemo priklad zi stekom Mi viznachimo potencialnu funkciyu yak kilkist ob yektiv u steku Dlya porozhnogo steku F D 0 0 displaystyle Phi D 0 0 i pislya bud yakoyi poslidovnosti z n displaystyle n operacij F D n 0 F D 0 displaystyle Phi D n geq 0 Phi D 0 Rozglyanemo chomu dorivnyuyut amortizacijni vartosti operacij Dlya operaciyi Push displaystyle mbox Push riznicya potencialiv stanovit F D i F D i 1 s 1 s 1 displaystyle Phi D i Phi D i 1 s 1 s 1 Otzhe amortizacijna vartist c i displaystyle hat c i dorivnyuye 1 1 2 displaystyle 1 1 2 Dlya operacij Pop displaystyle mbox Pop i Multipop displaystyle mbox Multipop mayemo 0 displaystyle 0 i 0 displaystyle 0 PrimitkiTar yan Robert 1985 Amortizovana skladnist obchislen SIAM Journal on Algebraic and Discrete Methods 6 2 306 318 doi 10 1137 0606031 angl T Kormen Ch Lejzerson R Rivest K Stajn 2009 1990 17 2 Oblikovij metod Vstup do algoritmiv vid 3rd MIT Press i McGraw Hill ISBN 0 262 03384 4 Posilannya Prinstonskij universitet angl