Какие самые важные мировые алгоритмы внесли наибольший вклад в развитие человечества за последние десятилетия?
Я думал, что это хорошее общее знание для разработчика, чтобы знать о.
Обновление:
если возможно, пожалуйста, сохраните ответ на конкретный алгоритм программирования .
Я хотел бы получить список самых важных, только один алгоритм на ответ.
Пожалуйста, рассмотрите, чтобы заявить, почему алгоритм важен и важен ...
algorithms
problem-solving
knowledge
Amir Rezaei
источник
источник
Ответы:
Шифрование с открытым / закрытым ключом чертовски важно. Интернет-торговля не была бы столь распространенной без нее.
источник
Алгоритм Дейкстры
Алгоритм существует в каждом маршрутизаторе в мире для определения наилучшего маршрута между двумя узлами в сети.
источник
Быстрое преобразование Фурье (БПФ)
БПФ является чрезвычайно важным и широко используемым методом извлечения полезной информации из дискретизированных сигналов .
источник
PageRank
источник
Алгоритмы сжатия данных
источник
Смит-Уотерман (и Нидлман-Вунш)
Это может быть слишком далеко, поэтому, пожалуйста, прокомментируйте.
Смит-Уотерман: алгоритм выравнивания последовательностей
Я думаю, что одним из таких примеров являются алгоритмы Смита-Уотермана и Нидлмана-Вунша и их аппроксимации. Все они по сути делают одно и то же: они выравнивают две или более строки (последовательности) . В биологии есть значение. Когда последовательности ДНК или белка выровнены - выявляются области структурного, функционального и эволюционного сходства.
БЛАСТ как потомок Смита-Ватермана
Эвристика, которая приближается к Смиту-Уотерману, является BLAST. Это позволяет искать последовательности больших баз данных для биологического сходства. Популярность BLAST действительно велика - скорее всего, это наиболее широко используемый алгоритм в биологии. Новые области в биоинформатике и геномике имеют новые и лучшие приближения алгоритмов Смита-Уотермана / Нидлмана-Вунша, которые более точны, чем BLAST.
Геном Ассамблея как потомок Смит-Уотерман
Высокопроизводительные приближения Смита-Уотермана и Нидлмана-Вунша, которые работают быстрее, чем BLAST, используются для сборки геномов из последовательности дробовика, где продуктом секвенсора является огромное количество, которое ДНК считывает (миллиарды) из произвольных частей генома, которые являются очень короткий (от 50 до 100 нуклеотидов). Этот подход был использован для завершения проекта «Геном человека». Все современные последовательности сделаны таким образом.
Выравнивание нескольких последовательностей - расширение Смита-Уотермана
Существуют многочисленные алгоритмы выравнивания множественных последовательностей - они аппроксимируют многократные версии Смита-Уотермана / Нидлмана-Вунша. Несколько последовательностей выровнены как группа одновременно друг с другом. Это гораздо более сложная проблема, чем попарный аналог, но решения обеспечивают гораздо более глубокое понимание биологической функции, структуры и эволюционной истории связанных последовательностей.
источник
Сиам назвал следующие наиболее важные алгоритмы 20-го века:
1946: алгоритм Метрополиса для Монте-Карло . Благодаря использованию случайных процессов этот алгоритм предлагает эффективный способ найти ответы на вопросы, которые слишком сложны для точного решения.
1947: Симплексный метод для линейного программирования . Элегантное решение общей проблемы при планировании и принятии решений.
1950: итерационный метод подпространства Крылова . Техника для быстрого решения линейных уравнений, которых предостаточно в научных вычислениях.
1951: декомпозиционный подход к матричным вычислениям . Набор методов для числовой линейной алгебры.
1957: Оптимизирующий компилятор Fortran . Превращает код высокого уровня в эффективный машиночитаемый код.
1959: Алгоритм QR для вычисления собственных значений . Другая важная матричная операция стала быстрой и практичной.
1962: алгоритмы быстрой сортировки для сортировки . Для эффективной обработки больших баз данных.
1965: быстрое преобразование Фурье . Возможно, самый распространенный алгоритм, используемый сегодня, он разбивает сигналы (например, звук) на периодические компоненты.
1977: Обнаружение целочисленных отношений . Быстрый метод определения простых уравнений, удовлетворяемых наборами, казалось бы, не связанных чисел.
1987: быстрый мультипольный метод . Прорыв в решении сложных вычислений n-тела, применяемых в задачах от небесной механики до сворачивания белков.
Лично я бы заменил Integer Relation Detection на PageRank .
источник
PageRank, любите это или ненавидите это, но это влияет на решения и действия миллионов людей во всем мире, гуглящих ежедневно.
источник
Если бы мне пришлось перечислить 3 самых важных алгоритма, используемых сегодня в компьютерах, я бы сказал:
Двоичного поиска используется алгоритм постоянно сужать на элемент в отсортированном списке, большинство поиск по индексу будет использовать что - то вдоль этих линий в какой - то момент. Этот алгоритм обеспечивает поиск упорядоченного списка за o (log n) времени.
Quicksort алгоритм , наконец , удалось получить своего рода вплоть до O (п журнал п) средний случай и O (N ^ 2) худший случай. Сортировка является одной из самых распространенных задач обработки данных в компьютере и одной из самых дорогих, улучшение сортировки в среднем случае стало огромным шагом вперед по эффективности.
Алгоритм Дейкстры, как уже было сказано, создает кратчайший путь между точками в графе. Это широко используется для всех видов приложений маршрутизации, наиболее широко в отношении самого Интернета, обеспечивающего использование самого быстрого пути через запутанную сеть взаимосвязанных маршрутизаторов.
источник
Теорема Байеса
Это, вероятно, больше всего способствовало поддержанию количества спама, потраченного впустую, в моем почтовом ящике на управляемом уровне.
Конечно, я его использовал во многих других полезных приложениях, но SPAM-убийство - мой любимый.
источник
TimSort
Этот алгоритм сортировки сейчас используется в Python , Java 7 и Android
В основном:
N-1
точно в уже отсортированном списке)И красота этого? Это стабильно ! И поэтому подходит для многопроходной сортировки по различным критериям.
Кстати, если у кого-то есть оптимизированная реализация C ++ под рукой ...
источник
Все алгоритмы, которые использовались для решения проблемы видимости в 3D компьютерной анимации, кажутся мне решающими.
Алгоритм художника
Z-буферизация
Определение скрытой поверхности
источник
Какой из них вам нужен, чтобы решить вашу текущую проблему.
источник
Soundex - это фонетический алгоритм для индексации имен по звуку.
источник
Алгоритм Витерби
Первоначально используемый для декодирования сверточных кодов с исправлением ошибок, он теперь используется для решения широкого класса задач распознавания (от распознавания речи до биоинформатики). Вы можете найти его в нескольких устройствах связи и хранения.
источник
MP3
Хотя это более общий термин, чем конкретный алгоритм, я бы упомянул MP3 как совокупность различных алгоритмов и методов, которые работают совместно, чтобы создать этот аудиоформат с потерями.
Это, безусловно, было очень важно в «цифровую эпоху».
источник
Численное интегрирование Рунге-Кутты . Без этого многие симуляции были бы невозможны. Нет космической программы, нет ядерной энергии, нет баллистики, нет спортивных симуляций, нет пуленепробиваемых жилетов, нет симуляции краш-теста, нет симуляции движения жидкости, нет симуляции химического взаимодействия, нет зданий, устойчивых к землетрясениям ... список можно продолжать.
источник
Алгоритм сортировки.
источник
Quicksort
источник
Сортировка вставки
Простая в реализации, очень быстрая в небольших списках и используемая в реализациях Merge Sort / Quicksort для их ускорения. Он стабилен и работает в O (n) в отсортированных списках (при сортировке в порядке возрастания).
источник
Гаусс-Джордан в матричных вычислениях
источник
Фильтр Калмана
Он активно используется в навигации, отслеживании целей (практически для любого датчика: радар, гидролокатор, FLIR, ладар). Один учебник показывает приложение в контроллере дисковода. Роботизированные системы управления часто используют фильтры Калмана.
источник
Разговорный и письменный язык.
В настоящее время они являются одним из наиболее эффективных алгоритмов для передачи знаний от одного к другому. Без языка гражданское общество не может существовать, и информация не может быть передана.
источник
Структура данных кучи и связанные с ней алгоритмы построения и обслуживания кучи.
И проявить некоторое уважение к быстрой сортировке. Даже если это не всегда такой выбор, он является одним из фундаментальных алгоритмов исторического развития информатики и является отличным средством для понимания рекурсии и анализа алгоритмов. Это красиво, и да, я люблю это.
источник
Алгоритмы индексирования, такие как B-дерево, B + -дерево, хэш-индекс, бинарный индекс дерева и т. Д. Для индексации огромного количества данных.
источник
MapReduce как способ разделения, завоевания и распараллеливания обработки больших наборов данных.
источник
Алгоритм грубой силы!
Многие люди недооценивают этот алгоритм грубой силы. На самом деле это в основном используется для решения проблем, не имеющих закономерностей. Я очень люблю это!
источник
Bubble Sort!
Пузырьковая сортировка не так плоха, как Bogosort . Вот почему я голосую за Bubble.
источник