2015-11-08 2 views
4

В настоящее время я работаю над проектом, в котором мне нужно количественно оценить (dis) сходство между алгоритмами - то есть, у меня есть несколько десятков алгоритмов, которые используются для этой же цели, и я хотел бы определите, какие из них наиболее близки (то есть более похожи) к другим, и которые действительно «новы».Измерение расстояния для алгоритмов

Как мой Google-Fu, так и мой SO-Jutsu подвели меня, поэтому я был бы признателен, если бы кто-нибудь мог пролить свет на это. Существует ли такая метрика?

+0

Google-Fu и SO-Jitsu haha. Если бы только мы могли поднимать вопросы, основываясь на их использовании каламбуров. –

+0

Описывает ли их предварительную классификацию по абсолютным метрикам, таким как время выполнения и сложность памяти, показывает, что подобные алгоритмы близки? – usr2564301

+1

В генетическом программировании существует понятие эволюционирующих программ с помощью небольших мутаций - и обычно там, где есть понятие небольших мутаций, тогда существует понятие расстояния, поэтому было бы целесообразно изучить некоторые исследования в области генетического программирования (хотя это касается * программ *, а не * алгоритмов *). См. Https://en.wikipedia.org/wiki/Genetic_programming –

ответ

2

Как один из показателей сходства, вы можете создать набор данных n, несколько разумно сконструированных, а затем запустить каждый из ваших алгоритмов на всех этих наборах данных. Затем вы получаете n -мерный вектор времени выполнения, связанный с каждым алгоритмом, который затем можно удалять по любому старому расстоянию. Я бы предположил, что что-то вроде косинусного расстояния было бы хорошим предположением, поскольку, если ваши наборы данных имеют различные размеры, вы бы хотели классифицировать свои алгоритмы так, как они масштабируются. В дополнение к времени выполнения вы можете контролировать максимальное использование памяти или все, что вы можете придумать для измерения.

+0

Спасибо. Как я уже упоминал в другом комментарии, я намерен использовать время выполнения и сложность памяти как дополнительную линию доказательств для проверки любых выводов, которые я могу сделать на основе расстояния (независимо от того, что может быть) между алгоритмами. –

Смежные вопросы