Open vldnik opened 5 years ago
Алгоритми сортування, задачі про найкоротший шлях(алгоритм Дейкстри, Белмана-Форда).
Це основні алгоритми, які використовуються для навчання, а потім широко застосовуються в різних сферах. Як правило, це алгоритми пошуку, сортування та обробки даних: Insertion sort/Selection sort/Quick sort, Binary search, Dijkstra's algorithm, BFS, DFS
На мою думку, класичні алгоритми - це алгоритми, які використовують початківці під час вивчання основ програмування або це ті алгоритми, які широко використовують. Наприклад, алгоритм сортування Bubble sort/Insertion sort, алгоритми послідовного та бінарного пошуку.
Классические алгоритмы - это алгоритмы сортировки, поиска и обработки различных данных. Структуры данных - стеки, кэши, массивы, списки. От того они и классические, что их должны знать все, еще только начиная осваивать программирование.
Якщо розглядати "класичний" алгоритм, як алгоритм з якого починається вивчення нової теми, то до таких "класичних" алгоритмів можна віднести алгоритм сортування бульбашкою (основа вивчення алгоритмів сортування), алгоритм Дейкстри (основна вивчення алгоритмів пошуку шляху у графах), рекурсивний пошук факторіалу числа, або чисел Фібоначчі (основа вивчення рекурсивних алгоритмів).
В моем понимании классический алгоритм, это такой алгоритм который должен знать и понимать каждый, кто связан с IT. Основа основ. Такие как: Insertion sort, Selection sort, Bubble sort, Merge Sort, Quicksort. Binary Search, Hashing, Dijkstra Algorithm.
Базовые:
Умножение матриц (Не обязательно реализовывать, главное — знать алгоритм)
Основные алгоритмы просеивания
Беззнаковая математика, включая умножение и деление
Алгоритм Евклида для нахождения НОД (наибольший общий делитель), Модульная инверсия, Быстрое возведение в степень
Числа Фибоначчи с матричным умножением
Нормальное распределение и математическое ожидание
Статистика – среднее вероятностное значение случайной величины, медиана, дисперсия, теорема Байеса
BFS, DFS, Min Spanning Tree (Prim, ..), Shortest Path(Dijkstra, B-F) и многие другие
Insertion sort ,Quick sort,Merge sort ,Bubble sort Selection sort,DFS,Binary search tree
Binary search tree,DFS,Insertion sort,Merge seort,Quick sort,Bubble sort
Классические алгоритмы - алгоритмы поиска, сортировки и обработки данных. Структуры данных - стеки, кеши, массивы, списки.
На мою думку, це алгоритми сортування, проходження шляху в графі, створення хеш таблиць, стек, черга.
До класичних алгоритмів можна віднести ті, які знають більшість програмістів. Та вони обов’язково знадобляться хоч і людині в сфері комп’ютерних наук так і в сфері розробки програмного забезпечення. До класичних алгоритмів можна віднести алгоритми сортування QuickSort MergeSort, RadixSort, CountSort, LSD, MSD sort, Heapsort та можливо деякі їхні різновиди, а також алгоритми роботи з графами такі як алгоритм Дейкстри, Белмана – Флойда та подібні. Взагалі, я вважаю, що стандартний набір алгоритмів та структур даних, який має знати кожен успішний програміст вміщений у книзі Кормена “Алгоритмы. Построение и анализ”. Корисно знати як працюють також і структури даних та яка в них ефективність. Адже іноді програма працює досить довго, і не можна здогадатись як її пришвидшити, якщо не знати загальної характеристики деяких операцій структур даних. Звичайно програмісти, що будуть працювати на реальних даних, рідко будуть реалізовувати ці структури даних, адже більшість з них уже реалізовано в стандартних бібліотеках мови програмування. Однак, доцільно використовувати деякі структури зможе не кожен.
Класичними можна вважати ті алгоритми, без яких неможливе розв'язання елементарних задач: 1) Граф - пошук найкоротшої відстані 2) Масив данних - сортування
Це не дуже неоднозначна тема для обговорення. За класичні алгоритми можна обрати ті, що застосовуються дуже часто, або ж ті, без яких навички програмування будуть неякісними. Класичними алгоритмами можна вважати ті, що вміщені у готові бібліотеки через часте їх використання. Однак, я схиляюсь до другої тези. Для мене класичними алгоритмами є:
Пошук чисел Фібоначчі; перевірка числа на простоту/пошук простих чисел; алгоритм Евкліда (пошук НСД); переведення чисел в інші системи числення сортування (BublleSort, InsertionSort, SelectSort, HeapSort, MergeSort, QuickSort, CountingSort, BucketSort); бінарний пошук; "довгі" додавання та множення; комбінаторні алгоритми (перестановки, комбінації, повна вибірка); КМП-алгоритм; хвильовий алгоритм; пошук Ейлерового циклу в графі; пошук в глибину/ширину; побудова остовного і мінімального остовного дерева (алгоритми Прима та Краскала); пошук найкоротшого шляху у графі (алгоритм Дейкстри і Флойда-Воршелла); пошук максимального потоку в мережі (алгоритм Едмондса-Карпа); жадібні алгоритми; динамічне програмування (зокрема, пакування рюкзака, та пошук найбільшої спільної підпослідовності).
Однак, перша теза також має право на життя. Не всі алгоритми з перелічених широко застосовуються на практиці. Для володіння достатніми навичками, не обов'язково вивчати всі алгоритми сортування, "довгі" алгоритми, КПМ-алгоритм, пошук максимального потоку, і т. д. Але для мене ці алгоритми також є класичними в плані того, що вони зустрічаються в олімпіадних задачах.
As for me classic algorithm is that which is used widely in different spheres (especially in data computing), or is essential for understanding another algorithms. The list of the most important algorithms and data structures:
Quick Sort, Алгоритм Дейкстри
I think Insertion sort, Quick sort, Merge sort, Bubble sort, Selection sort, Binary search tree.
Сортировка пузырьком
Різні алгоритми сортування, алгоритми пошуку найкоротшого шляху
Класичні алгоритми - це ті алгоритми, які використовуються найчастіше і, відповідно, найчастіше вивчаються програмістами. Зазвичай вони мають нескладну реалізацію, порівняно з екзотичними версіями. Класичними алгоритмами є алгоритми сортування такі як: сортування бульбашкою, вставкою, вибором, швидке сортування (Quick Sort), сортування злиттям, Radix Sort, Bucket Sort, сортування деревом. Також класичними алгоритмами є алгоритми пошуку мінімального шляху в графі (алгоритм Дейкстри, Беллмана Форда, A*) та алгоритми пошуку мінімального остового дерева (Прима, Крускала, Борувки)
Quick Sort, Insertion sort, Merge sort, Bubble sort, Selection sort, Binary search tree, Dijkstra algorithm, Longest Path In Matrix.
Список смежных вершин графа, Матрица смежности графа, Взвешенные рёбра графа Основные алгоритмы обхода – Поиск в ширину, Поиск в глубину и т.д. Алгоритмы нахождения кратчайшего пути — Алгоритм Дейкстры, Алгоритм Флойда-Уоршелла, Алгоритм Беллмана-Форда Минимальное остовное дерево — Алгоритм Крускала, Алгоритм Прима
the most important are: Sorting - Sorting by merging, Sorting by inserts, Quick sorting, Multiple interchanges. Multiplication of matrices Basic sifting algorithms Unsigned mathematics, including multiplication and division Normal distribution and expectation Fibonacci numbers with matrix multiplication
Which algorithms should be considered “classic”? Які алгоритми, на Вашу думку, є «класичними» ? Какие алгоритмы, по Вашему мнению, является «классическим»?
Which algorithms and data structures should be known to each developer?
Які алгоритми мають знати всі розробники?
Какие алгоритмы должны знать все разработчики?