Чи використовується згладжений аналіз поза науковими колами?


24

Чи згладжений аналіз знайшов свій шлях у аналізі алгоритмів основного потоку? Чи загально для дизайнерів алгоритмів застосовувати згладжений аналіз до своїх алгоритмів?


11
Чи застосовують люди будь-який аналіз складності до своїх алгоритмів поза межами наукових шкіл?
Дейв Кларк

2
Що говорить @DaveClarke; можливо, йому слід попросити жорстких (або нетривіальних) аналізів. Я очікую, що багато практикуючих людей дивляться на їхні алгоритми, підраховують глибину вкладання петлі і кажуть: "Це !". O(n3)
Рафаель

3
Шукаючи будь-якого використання згладженого аналізу, окрім Simplex, я знайшов список, підготовлений одним із хлопців, які відкрили методику.
Рафаель

1
@DaveClarke як щодо людей, які працюють у IBM, HP чи NTT? Чи не повинні вони використовувати такий аналіз?
Marcos Villagra

1
@DaveClarke я.
Кевін

Відповіді:


12

Я можу помилятися, але я розглядаю згладжений аналіз як спосіб пояснити практичну поведінку алгоритмів, які мають погані теоретичні гарантії (симплекс, k-засоби тощо). Я не впевнений, що би означало використовувати згладжений аналіз на практиці, за винятком виправдання використання конкретного евристичного з поганими показниками («Моя евристика має найгіршу поведінку, але згладжений аналіз означає, що це буде добре на практиці тощо тощо ")


2
Проблема полягає в тому, що поки що великі успіхи згладженого аналізу полягають у поясненні сучасної практики, тому практикуючі можуть просто відреагувати, сказавши "добре, що все, що я робив, може виявити сенс" :). Я не знаю, чи хтось вирішив використати досі маловідомий евристичний ВІДПОВІД згладженого аналізу.
Суреш

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

3

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

  • Метод наближення. Тут ви використовуєте багато спрощених припущень, щоб спробувати передбачити час роботи алгоритму. Подібно до того, що робили фізики-теоретики (раніше).
  • Експериментація. Ви запускаєте свій алгоритм і вимірюєте кілька статистичних даних - скільки часу пішло на кожну частину, скільки разів викликалася кожна функція, як часто виконувалася кожна гілка тощо. Ця інформація може бути використана для оптимізації алгоритму. Експериментація також використовується для з'ясування того, чи працюють деякі наближення під час аналізу алгоритму на практиці чи ні.

З цього приводу я не думаю, що аналізувати алгоритм на практиці дуже часто, крім того, щоб додати якийсь текст наповнювача до пов’язаної академічної публікації. Основна увага приділяється або інженерії програмного забезпечення, або оптимізації низького рівня, залежно від теми.

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


« У той час як в наукових колах мета полягає в тому, щоб знайти доказово-коректну верхню межу часу виконання» - тобто мета, а НЕ мета. Існує також багато роботи над аналізом середнього випадку, навіть якщо середній студент CS може не бачити його багато (тому що це досить важко). "Щоб зрозуміти, як працює алгоритм", це, мабуть, основа всіх алгоритмів в наукових колах.
Рафаель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.