Xiao & Operator
Operator Operator
Привет, Сяо. Я подумала, как небольшая система для обсуждений могла бы помочь нам разобраться и расставить приоритеты для всех этих алгоритмов, которые у тебя в списке – это было бы выгодно обоим. Как тебе такая идея?
Xiao Xiao
Звучит полезно. Если мы определим чёткие критерии – временную сложность, частоту использования, может быть, какой-то взвешенный показатель – мы сможем их ранжировать и выбрать самые важные. Просто сделай процесс понятным, без неожиданностей.
Operator Operator
Звучит здорово – чёткие критерии, система оценок, никаких подвохов. Давай разложим это по полочкам, пункт за пунктом, и сосредоточимся на самом важном. Готова двигать дальше?
Xiao Xiao
Хорошо, давай продумаем приоритеты: сначала сложность, потом частота использования, а затем стоимость интеграции. Я составлю матрицу, а потом будем применять её построчно. Готов.
Operator Operator
Отлично, давай тогда эту матрицу настроим и поддержим стабильный поток. Высылай детали, разберем все по шагам.
Xiao Xiao
Вес для сложности — 0.5, для частоты использования — 0.3, для стоимости интеграции — 0.2. Строки матрицы: название алгоритма, оценка сложности (от 1 до 10), частота (от 1 до 10), стоимость интеграции (от 1 до 10), затем оценка = 0.5 * сложность + 0.3 * частота + 0.2 * интеграция. Шаг 1: перечислим все алгоритмы. Шаг 2: присваиваем оценки. Шаг 3: рассчитываем оценки. Шаг 4: сортируем по убыванию. Всё. Начинаем?
Operator Operator
Поняла, давай приступать. Сначала пришли полный список, а потом будем добавлять к каждому оценку. Как только у меня будут данные, сразу же начну считать результаты.
Xiao Xiao
Вот полный список, который я собирал: 1. Алгоритм Дейкстры для поиска кратчайших путей между всеми парами вершин 2. Поиск подстрок Рабина-Карпа 3. Quickselect для поиска k-го наименьшего элемента 4. Сопоставление множественных образцов по Ахо-Корасику 5. Алгоритм максимального потока Диника 6. Случайный алгоритм минимизации разреза Каргера 7. Алгоритм Флойда-Уоршелла для замыкания транзитивности 8. Построение суффиксного массива с помощью DC3 9. Схема сжатия Лемпеля-Зива 78 10. Сопоставление образцов по Кнута-Морриса-Пратта 11. Приоритетная очередь с ограниченным временем работы, использующая кучи Фибоначчи 12. Кластеризация k-средних для данных высокой размерности 13. Алгоритм голосования по большинству Бойера-Мура 14. Умножение Карацубы для больших целых чисел 15. Алгоритм Беллмана-Форда для обнаружения отрицательных циклов 16. Тест плоской встраиваемости Джонсона 17. Алгоритм Дейкстры с использованием бинарной кучи 18. Сопоставление бипартитных графов по Хопкрофта-Карпа 19. Алгоритм Йена для поиска k-кратчайших путей 20. Тест простоты Миллера-Рабина Вот этот набор я буду оценивать и присваивать веса дальше.
Operator Operator
Отличный список! Давай уже выставляем оценки. Мне нужны оценки по каждому алгоритму по шкале от 1 до 10: сложность, частота и стоимость интеграции. Потом посчитаем взвешенный балл и отсортируем их. Как только пришлешь оценки, я все пересчитаю.
Xiao Xiao
Привет, вот черновой вариант оценки алгоритмов – пожалуйста, подправь, если что: | # | Алгоритм | Сложность (1‑10) | Частота (1‑10) | Стоимость интеграции (1‑10) | Взвешенный балл (0.5*C + 0.3*F + 0.2*I) | |---|-----------|--------------------|------------------|--------------------------|----------------------------------------| | 1 | Алгоритм поиска кратчайших путей Джонсона | 8 | 6 | 7 | 7.3 | | 2 | Поиск подстроки Рабина-Карпа | 4 | 8 | 5 | 6.2 | | 3 | Быстрый выбор k-го наименьшего элемента | 5 | 7 | 4 | 5.7 | | 4 | Сопоставление нескольких образцов Aho‑Corasick | 7 | 6 | 6 | 6.7 | | 5 | Алгоритм максимального потока Диника | 9 | 5 | 8 | 7.8 | | 6 | Случайный алгоритм минимального разреза Каргера | 7 | 4 | 6 | 6.3 | | 7 | Алгоритм Флойда-Уоршелла для транзитивного замыкания | 8 | 5 | 7 | 7.3 | | 8 | Построение массива суффиксов с использованием DC3 | 8 | 6 | 6 | 7.2 | | 9 | Схема сжатия Lempel-Ziv-78 | 6 | 8 | 5 | 6.4 | |10 | Сопоставление образцов Knuth–Morris–Pratt | 4 | 7 | 5 | 5.9 | |11 | Ограниченный по времени приоритетная очередь с кучами Фибоначчи | 7 | 5 | 8 | 6.8 | |12 | Кластеризация K-средних для данных высокой размерности | 6 | 7 | 7 | 6.5 | |13 | Алгоритм голосования по большинству Кена | 3 | 6 | 4 | 4.7 | |14 | Умножение Карацубы для больших целых чисел | 6 | 5 | 6 | 5.9 | | 15 | Алгоритм Беллмана-Форда для отрицательных циклов | 8 | 4 | 7 | 7.1 | | 16 | Тест планарной встройки Джонсона | 7 | 3 | 6 | 6.1 | | 17 | Алгоритм Дейкстры с двоичной кучей | 5 | 8 | 6 | 6.3 | | 18 | Двустороннее сопоставление Хопкрофта-Карпа | 7 | 5 | 7 | 6.6 | | 19 | K-кратчайшие пути с использованием алгоритма Йена | 8 | 4 | 7 | 7.1 | | 20 | Тест простоты Миллера-Рабина | 5 | 7 | 5 | 5.8 | Можешь убрать или добавить что-нибудь, а потом отсортируем по взвешенному баллу, чтобы сфокусироваться на самых важных.