kzhereb / kpi-acts-ta2019

Materials for "Algorithm Theory" course
3 stars 0 forks source link

Q01.4. Which algorithms should be considered “classic”? #7

Open vldnik opened 5 years ago

vldnik commented 5 years ago

Which algorithms should be considered “classic”? Які алгоритми, на Вашу думку, є «класичними» ? Какие алгоритмы, по Вашему мнению, является «классическим»?

Which algorithms and data structures should be known to each developer?

Які алгоритми мають знати всі розробники?

Какие алгоритмы должны знать все разработчики?

yuxima commented 5 years ago

Алгоритми сортування, задачі про найкоротший шлях(алгоритм Дейкстри, Белмана-Форда).

NvkAnton commented 5 years ago

Це основні алгоритми, які використовуються для навчання, а потім широко застосовуються в різних сферах. Як правило, це алгоритми пошуку, сортування та обробки даних: Insertion sort/Selection sort/Quick sort, Binary search, Dijkstra's algorithm, BFS, DFS

Tia333 commented 5 years ago

На мою думку, класичні алгоритми - це алгоритми, які використовують початківці під час вивчання основ програмування або це ті алгоритми, які широко використовують. Наприклад, алгоритм сортування Bubble sort/Insertion sort, алгоритми послідовного та бінарного пошуку.

LiliaTumanova commented 5 years ago

Классические алгоритмы - это алгоритмы сортировки, поиска и обработки различных данных. Структуры данных - стеки, кэши, массивы, списки. От того они и классические, что их должны знать все, еще только начиная осваивать программирование.

WalrusPUNCH commented 5 years ago

Якщо розглядати "класичний" алгоритм, як алгоритм з якого починається вивчення нової теми, то до таких "класичних" алгоритмів можна віднести алгоритм сортування бульбашкою (основа вивчення алгоритмів сортування), алгоритм Дейкстри (основна вивчення алгоритмів пошуку шляху у графах), рекурсивний пошук факторіалу числа, або чисел Фібоначчі (основа вивчення рекурсивних алгоритмів).

katyagray commented 5 years ago

В моем понимании классический алгоритм, это такой алгоритм который должен знать и понимать каждый, кто связан с IT. Основа основ. Такие как: Insertion sort, Selection sort, Bubble sort, Merge Sort, Quicksort. Binary Search, Hashing, Dijkstra Algorithm.

vkrasiy commented 5 years ago

Базовые:
Умножение матриц (Не обязательно реализовывать, главное — знать алгоритм) Основные алгоритмы просеивания Беззнаковая математика, включая умножение и деление Алгоритм Евклида для нахождения НОД (наибольший общий делитель), Модульная инверсия, Быстрое возведение в степень Числа Фибоначчи с матричным умножением Нормальное распределение и математическое ожидание Статистика – среднее вероятностное значение случайной величины, медиана, дисперсия, теорема Байеса

ghost commented 5 years ago

BFS, DFS, Min Spanning Tree (Prim, ..), Shortest Path(Dijkstra, B-F) и многие другие

RentaroAdun commented 5 years ago

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

Dima1648 commented 5 years ago

Классические алгоритмы - алгоритмы поиска, сортировки и обработки данных. Структуры данных - стеки, кеши, массивы, списки.

Developersdreamboat commented 5 years ago

На мою думку, це алгоритми сортування, проходження шляху в графі, створення хеш таблиць, стек, черга.

FairyFox5700 commented 5 years ago

До класичних алгоритмів можна віднести ті, які знають більшість програмістів. Та вони обов’язково знадобляться хоч і людині в сфері комп’ютерних наук так і в сфері розробки програмного забезпечення. До класичних алгоритмів можна віднести алгоритми сортування QuickSort MergeSort, RadixSort, CountSort, LSD, MSD sort, Heapsort та можливо деякі їхні різновиди, а також алгоритми роботи з графами такі як алгоритм Дейкстри, Белмана – Флойда та подібні. Взагалі, я вважаю, що стандартний набір алгоритмів та структур даних, який має знати кожен успішний програміст вміщений у книзі Кормена “Алгоритмы. Построение и анализ”. Корисно знати як працюють також і структури даних та яка в них ефективність. Адже іноді програма працює досить довго, і не можна здогадатись як її пришвидшити, якщо не знати загальної характеристики деяких операцій структур даних. Звичайно програмісти, що будуть працювати на реальних даних, рідко будуть реалізовувати ці структури даних, адже більшість з них уже реалізовано в стандартних бібліотеках мови програмування. Однак, доцільно використовувати деякі структури зможе не кожен.

F0rsV commented 5 years ago

Класичними можна вважати ті алгоритми, без яких неможливе розв'язання елементарних задач: 1) Граф - пошук найкоротшої відстані 2) Масив данних - сортування

AndrryArmor commented 5 years ago

Це не дуже неоднозначна тема для обговорення. За класичні алгоритми можна обрати ті, що застосовуються дуже часто, або ж ті, без яких навички програмування будуть неякісними. Класичними алгоритмами можна вважати ті, що вміщені у готові бібліотеки через часте їх використання. Однак, я схиляюсь до другої тези. Для мене класичними алгоритмами є:

Пошук чисел Фібоначчі; перевірка числа на простоту/пошук простих чисел; алгоритм Евкліда (пошук НСД); переведення чисел в інші системи числення сортування (BublleSort, InsertionSort, SelectSort, HeapSort, MergeSort, QuickSort, CountingSort, BucketSort); бінарний пошук; "довгі" додавання та множення; комбінаторні алгоритми (перестановки, комбінації, повна вибірка); КМП-алгоритм; хвильовий алгоритм; пошук Ейлерового циклу в графі; пошук в глибину/ширину; побудова остовного і мінімального остовного дерева (алгоритми Прима та Краскала); пошук найкоротшого шляху у графі (алгоритм Дейкстри і Флойда-Воршелла); пошук максимального потоку в мережі (алгоритм Едмондса-Карпа); жадібні алгоритми; динамічне програмування (зокрема, пакування рюкзака, та пошук найбільшої спільної підпослідовності).

Однак, перша теза також має право на життя. Не всі алгоритми з перелічених широко застосовуються на практиці. Для володіння достатніми навичками, не обов'язково вивчати всі алгоритми сортування, "довгі" алгоритми, КПМ-алгоритм, пошук максимального потоку, і т. д. Але для мене ці алгоритми також є класичними в плані того, що вони зустрічаються в олімпіадних задачах.

P0linux commented 5 years ago

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:

  1. Graph algorithms: Breadth First Search (BFS), Depth First Search (DFS), Shortest Path from source to all vertices (Dijkstra), Shortest Path from every vertex to every other vertex (Floyd Warshall), Minimum Spanning tree (Prim, Kruskal), Topological Sort, Johnson’s algorithm, Articulation Points (or Cut Vertices) in a Graph, Bridges in a graph.
  2. Dynamic Programming: Minimum Partition, Longest Path In Matrix, Subset Sum Problem, Optimal Strategy for a Game, 0-1 Knapsack Problem
  3. Searching And Sorting: Binary Search, Quick Sort, Merge Sort, Order Statistics, Counting Sort
  4. Data Structures: Linked Lists, Queue, Stack, Binnary Tree, AVL Tree, Hash Table and others.
galaxyair commented 5 years ago

Quick Sort, Алгоритм Дейкстри

illix-it commented 5 years ago

I think Insertion sort, Quick sort, Merge sort, Bubble sort, Selection sort, Binary search tree.

NikitaViktorov commented 5 years ago

Сортировка пузырьком

crowl1 commented 5 years ago

Різні алгоритми сортування, алгоритми пошуку найкоротшого шляху

invisy commented 5 years ago

Класичні алгоритми - це ті алгоритми, які використовуються найчастіше і, відповідно, найчастіше вивчаються програмістами. Зазвичай вони мають нескладну реалізацію, порівняно з екзотичними версіями. Класичними алгоритмами є алгоритми сортування такі як: сортування бульбашкою, вставкою, вибором, швидке сортування (Quick Sort), сортування злиттям, Radix Sort, Bucket Sort, сортування деревом. Також класичними алгоритмами є алгоритми пошуку мінімального шляху в графі (алгоритм Дейкстри, Беллмана Форда, A*) та алгоритми пошуку мінімального остового дерева (Прима, Крускала, Борувки)

AleksAndriushyn commented 5 years ago

Quick Sort, Insertion sort, Merge sort, Bubble sort, Selection sort, Binary search tree, Dijkstra algorithm, Longest Path In Matrix.

NikitaZaika commented 5 years ago

Список смежных вершин графа, Матрица смежности графа, Взвешенные рёбра графа Основные алгоритмы обхода – Поиск в ширину, Поиск в глубину и т.д. Алгоритмы нахождения кратчайшего пути — Алгоритм Дейкстры, Алгоритм Флойда-Уоршелла, Алгоритм Беллмана-Форда Минимальное остовное дерево — Алгоритм Крускала, Алгоритм Прима

BogdanDudnik commented 5 years ago

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