Какие алгоритмы законной полезности просто слишком сложны для реализации?
Позвольте мне прояснить: я не ищу алгоритмы, такие как текущий асимптотический алгоритм оптимального умножения матриц (Coppersmith-Winograd), который разумно реализовать, но имеет константу, которая делает его бесполезным на практике. Я ищу алгоритмы, которые могли бы иметь практическую ценность, но настолько сложны для кодирования, что они никогда не были реализованы, реализованы только в крайне искусственных условиях или только для приложений исключительно специального назначения.
Также приветствуются практически невозможные для реализации алгоритмы, которые имеют хорошую асимптотику, но, вероятно, будут иметь низкую реальную производительность.
ds.algorithms
ds.data-structures
big-list
implementation
Elliot Jans
источник
источник
Ответы:
Шазель дала линейный алгоритм времени для триангуляции простого многоугольника . Скиена писал (стр.575, Руководство по разработке алгоритмов), что «достаточно безнадежно реализовать, что его можно больше рассматривать как доказательство существования»
источник
Алгоритм Риш для вычисления элементарных первообразных. Согласно Wikipedia, ни один программный пакет, как известно, не реализует полный алгоритм из-за его сложности.
источник
Любой алгоритм, который использует результаты Робертсона-Сеймура, чтобы вывести алгоритм «polytime» для вещей, включающих графы, которые исключают фиксированное второстепенное, вызывает проблемы. Константа, скрытая в их результате, является «галактической».
источник
Работа занимает 55 страниц, и в ее заключении отмечены некоторые улучшения констант, которые автор не описывает из-за нехватки места. Это заставляет меня подозревать, что, возможно, константы не столь галактичны, и что эта структура данных будет иметь «законную полезность», тем более, что она упоминалась много раз.
источник
Алгоритм унификации паттернов высших порядков линейного времени Qian никогда не был реализован из-за его сложности AFAIK.
источник
Алгоритм линейного времени, чтобы проверить, может ли граф быть встроен в фиксированную поверхность.
Кен-ичи Каварабаяши, Боян Мохар, Брюс А. Рид: Более простой алгоритм линейного времени для вложения графов в произвольную поверхность и род графов ограниченной ширины дерева. ФОКС 2008: 771-780.
Боян Мохар: Линейный алгоритм времени для вложения графов в произвольную поверхность. SIAM J. Discrete Math. 12 (1): 6-26 (1999)
источник
Я не уверен, насколько это может быть полезно на практике (хотя я думаю о сворачивании и сравнении белков, а также о предсказании вторичной структуры РНК), но Вольфганг Хакен дал первый алгоритм за
полиномиальное времядля определения, является ли узел простая петля ( Theorie der Normalflächen. Acta Math. 105, 1961, pp. 245–375). Насколько я помню, он все еще слишком сложен, чтобы его можно было реализовать все эти десятилетия спустя.Если верить Википедии, позднее было дано несколько других алгоритмов, и «Понимание сложности этих алгоритмов является активной областью исследования».
источник
Разложение дерева
и, возможно, кучи Фибоначчи.источник
Идеальная конструкция хэша ( https://en.wikipedia.org/wiki/Perfect_hash_function#Construction ) будет применяться к любому сценарию использования со статическими или редко меняющимися ключами (например, доменные имена верхнего уровня на маршрутизаторах, ключевые слова в компиляторах или имена функций в стандартных библиотеках) но в прошлый раз я не смог найти никаких реализаций.
Параметрический поиск может решить многие сложные проблемы оптимизации, в том числе такие, которые могут выглядеть как NP-сложные, за полиномиальное время. В хорошо названной работе « Параметрический поиск» реализована практическая реализация варианта параметрического поиска, но все же я не думаю, что он был реализован в практическом программном обеспечении.
источник