Які алгоритми використовуються найчастіше?
Будь ласка, напишіть один алгоритм на кожну відповідь, намагайтеся, щоб відповідь була короткою (один або два рядки).
Які алгоритми використовуються найчастіше?
Будь ласка, напишіть один алгоритм на кожну відповідь, намагайтеся, щоб відповідь була короткою (один або два рядки).
Відповіді:
Чи швидке перетворення Фур'є алгоритмічна проблема вирішується більшість разів на день реальними комп'ютерними системами? Це повинно бути близько. Тож я б призначив алгоритм Cooley-Tukey FFT .
Множення.
Можливо, один із найстаріших не зовсім тривіальних алгоритмів і проблема, яка вирішується частіше, ніж FFT.
Алгоритми найкоротшого шляху у Dijkstra та Bellman-Ford . Є , по крайней мере 35000 автономних систем (AS) активні в Інтернеті за станом на 2010 Кожна АС працює або протокол стану каналу (Дейкстра) або вектора відстані маршрутизації протоколу (Беллмана-Форда). Маршрутизатори в межах одного AS зазвичай оновлюють свої таблиці періодично кожні кілька хвилин, скажімо, 10.
Таким чином, кількість страт Dijkstra & Bellman-Ford на день становить щонайменше 5 мільйонів. І це лише від роутерів.
Ми не підраховували найкоротші обчислення шляху з Карт Google і подібні, які мають легко нараховувати в 10 разів більше. Півмільярда страт на день не надумано.
Я думаю, що найбільш використовуваний алгоритм - це перевірка парності (або, можливо, CRC або якийсь код виправлення помилок), оскільки вони з'являються у кожному доступі до оперативної пам'яті.
Простий алгоритм - хіба це все ще не конкурує з найкращими методами інтер'єру? Якщо так, то його доводиться багато використовувати.
Більш загально, ви повинні подивитися на переможців призів Канеллакіс щодо ідей, які мають теоретичну та практичну прихильність.
Перший пошук по глибині (DFS)
Важко придумати більш широко використовувані алгоритми, ніж ті, які використовуються в сучасних реалізаціях TCP : тобто уникнення перевантажень , швидка повторна передача . Хоча це залежить від того, як визначати, що відповідає критеріям алгоритму ...
Гауссова ліквідація Це все ще використовується на практиці, правда? Якщо не замінити тим, що найчастіше використовується для вирішення лінійних систем ...
SHA-1 (і взагалі хеш-функції). Можливо, обіграв більшість інших алгоритмів за кількістю страт.
Ця відповідь трактується "найчастіше" з точки зору фактичних циклів процесора.
Коли я вивчав обчислення в 70-х, я пам'ятаю, що читав, що переважна більшість комп'ютерних (читається: мейнфрейм) циклів були присвячені сортуванню. Бізнес-програми вимагають широкого сортування для аналізу та звітності. Я не уявляю, що змінилося дуже сильно, але, звичайно, зростання інших програм - електронної пошти, обробки текстів тощо - повинно змінити суміш. Ці сорти, як правило, є стабільними сортами (а не Quicksort) через необхідність сортування по послідовностям полів для створення підгруп.
Власне кажучи, найчастіше алгоритм, який використовується найчастіше, - це, без всяких сумнівів, те, що виконується процесом очікування системи Windows, коли нічого іншого інакше не відбувається ;-).
Розмножуємо вектор матриці множин
... - обчислювальна робоча коня за рішенням майже всіх лінійних систем. Як результат, він запускається щоразу
Більшість FLOP на будь-якому суперкомп'ютері чи кластері витрачаються всередині рідкого мат-века.
Метод Ньютона. Він використовується для обчислення квадратних коренів, для обчислення поділу. Його можна використовувати для лінійного програмування. Більш загалом це робоча коня (опукла) оптимізація. Він може бути використаний для вирішення диференціальних рівнянь з фізики шляхом мінімізації дії / енергії.
Алгоритми виправлення помилок, такі як Рід-Соломон.
http://en.wikipedia.org/wiki/Error-correcting_code#List_of_error-correcting_codes http://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction
Я думаю, що DP використовується "частіше", ніж інші алгоритми, процитовані в опитуванні до цих пір. Я роблю висновок «частіше» в тому сенсі, як часто було нетривіальним поняттям алгоритму реалізовувалася програмістом у реальному житті, а не через те, скільки разів використовується певна реалізація алгоритму.
DP універсальний і має безліч граней. Іноді я використовував це дещо підсвідомо, а згодом зрозумів, що роблю ДП.
Звичайно, є речі, які зустрічаються навіть частіше, ніж Динамічна програма, але це переважно структура даних (масив, пов'язаний список, хеш).
String Matching, використовується весь час в прикладному програмному забезпеченні та на рівні бази даних.
У точному випадку існує кілька досить задіяних алгоритмів (KMP, Boyer-Moore) з деякими, які досягають підлінійного очікуваного часу виконання. Вони також цікаві для вивчення з точки зору CS.
Орієнтовна відповідність рядків, тобто вирівнювання, напевно, ще цікавіша. Ви знаєте "функції автокоригування"? Також пошук в галасливих рядкових даних (наприклад, ДНК) проводиться за допомогою вирівнювання.