Запитання з тегом «algorithms»

Алгоритм - це послідовність чітко визначених кроків, яка визначає абстрактне рішення проблеми. Використовуйте цей тег, коли ваше питання пов’язане з розробкою та аналізом алгоритмів.

11
Чому на практиці кращий кіксорт, ніж інші алгоритми сортування?
У звичайному курсі алгоритмів нас вчать, що в середньому швидкості є а в гіршому - . Одночасно вивчаються інші алгоритми сортування, які є у гіршому випадку (наприклад, злиття та велика частина ), і навіть лінійний час у кращому випадку (як бульбашка ), але з деякими додатковими потребами пам'яті.O ( n …

3
Чи існує система, що стоїть за магією аналізу алгоритму?
Є багато запитань щодо того, як проаналізувати час виконання алгоритмів (див., Наприклад, час виконання та алгоритм аналізу ). Багато з них схожі, наприклад, ті, хто запитує аналіз витрат вкладених циклів або алгоритмів ділення та підкорення, але, здається, більшість відповідей зроблені спеціально. З іншого боку, відповіді на інше загальне запитання пояснюють …

14
Чому я можу переглянути графік і відразу знайти найближчу точку до іншої точки, але це потребує часу O (n) через програмування?
Дозвольте уточнити: З огляду на розкид деякої кількості точок n, якщо я хочу подумки знайти найближчу точку до будь-якої точки сюжету, я можу негайно ігнорувати більшість точок на графіку, звужуючи свій вибір до деякої невеликої постійної кількості точок поблизу . Однак у програмуванні, заданому набором точок n, для того, щоб …

4
Як перетворити кінцеві автомати в регулярні вирази?
Перетворення регулярних виразів у (мінімальний) NFA, які приймають ту саму мову, легко за допомогою стандартних алгоритмів, наприклад алгоритму Томпсона . Інший напрямок, здається, є більш втомливим, але іноді отримані вирази є безладними. Які алгоритми існують для перетворення NFA в еквівалентні регулярні вирази? Чи є переваги щодо часової складності чи розміру …

13
Як обдурити евристику "спробувати деякі тестові випадки": Алгоритми, які здаються правильними, але насправді є невірними
Щоб спробувати перевірити правильність алгоритму для якоїсь проблеми, звичайним початковим пунктом є спробувати запустити алгоритм вручну на декількох простих тестових випадках - спробуйте його на кількох прикладах проблемних випадків, включаючи кілька простих "кутових випадків" ". Це чудова евристика: це чудовий спосіб швидко вилучити багато неправильних спроб алгоритму та зрозуміти, чому …

2
БІТ: Яка інтуїція стоїть за двійковим індексованим деревом і як про нього думали?
Двійкове індексоване дерево має майже меншу або відносно відсутність літератури порівняно з іншими структурами даних. Єдине місце, де його викладають - це навчальний посібник із кращих кодерів . Хоча підручник є повним у всіх поясненнях, я не можу зрозуміти інтуїцію за таким деревом? Як це було винайдено? Що є фактичним …

5
Які причини вивчати різні алгоритми / структури даних, що відповідають одній цілі?
Мене цікавить це питання ще з часів студентства. Це загальне питання, але я докладно поясню приклади нижче. Я бачив багато алгоритмів - наприклад, для проблем з максимальним потоком я знаю близько 3 алгоритмів, які можуть вирішити проблему: Ford-Fulkerson, Edmonds-Karp & Dinic, причому Dinic має найкращу складність. Для структур даних - …

3
Як можна знати, які позначення аналізу складності часу використовувати?
У більшості вступних класів алгоритму вводяться позначення типу (Big O) та , і студент, як правило, навчиться використовувати один із них, щоб знайти складність у часі.ΘOOOΘΘ\Theta Однак є й інші позначення, такі як , та . Чи є конкретні сценарії, коли одна нотація була б кращою для іншої?Ω ωoooΩΩ\Omegaωω\omega


8
Пошук по графіку: Перша ширина проти першої глибини
Під час пошуку графіків існує два простих алгоритми: широта-перший та глибина-перша (зазвичай це робиться шляхом додавання всіх суміжних вузлів графіків у чергу (широта-перша) або стека (глибина-перша)). Тепер, чи є переваги одного над іншим? Те, про що я міг придумати: Якщо ви очікуєте, що ваші дані будуть досить далеко внизу графіка, …

6
Як можна припустити, що основні операції над числами займають постійний час?
Зазвичай в алгоритмах нам не байдуже порівняння, додавання чи віднімання чисел - ми припускаємо, що вони працюють у часі . Наприклад, ми припускаємо це, коли говоримо, що сортування на основі порівняння - це , але коли числа занадто великі, щоб вписатись у регістри, ми зазвичай представляємо їх як масиви, тому …

4
Яка новинка у MapReduce?
Кілька років тому MapReduce був визнаний революцією розподіленого програмування. Також були критики, але, за великим рахунком, був захоплений галас. Це навіть запатентоване! [1] Назва нагадує mapі reduceфункціональне програмування, але коли я читаю (Вікіпедія) Крок карти: Головний вузол приймає вхід, ділить його на менші підпроблеми та розподіляє їх на робочі вузли. …

3
На місці алгоритм переплетення масиву
Вам надається масив з 2n2n2n елементів a1,a2,…,an,b1,b2,…bna1,a2,…,an,b1,b2,…bna_1, a_2, \dots, a_n, b_1, b_2, \dots b_n Завдання полягає в переплетенні масиву, використовуючи на місці алгоритм, такий, як виглядає отриманий масив b1,a1,b2,a2,…,bn,anb1,a1,b2,a2,…,bn,anb_1, a_1, b_2, a_2, \dots , b_n, a_n Якщо вимоги на місці не було, ми могли б легко створити новий масив та …

9
Чи є проблеми, які стають легшими, оскільки вони збільшуються в розмірах?
Це може бути смішним питанням, але чи можлива проблема, яка насправді стає простішою, оскільки вхід збільшується в розмірах? Я сумніваюся, що будь-які практичні проблеми подібні, але, можливо, ми можемо вигадати вироджену проблему, яка має цю властивість. Наприклад, можливо, воно починає «вирішувати себе», коли воно стає більшим, або поводиться якось іншим …

5
Чи дозволений нуль як вага краю у зваженому графі?
Я намагаюся написати сценарій, який генерує випадкові графіки, і мені потрібно знати, чи може край у зваженому графі мати значення 0. насправді має сенс, що 0 можна використовувати як вагу краю, але я працював з графіками протягом останніх кількох днів, і я ніколи не бачив приклад цього.

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