2009-11-30 3 views
0

У меня есть проект по бенчмаркингу Алгоритмы сопоставления строк, и я хотел бы знать, есть ли стандарт для каждого алгоритма, чтобы я мог получить справедливые результаты с помощью моих экспериментов. Я планирую использовать java system.nanotime для получения времени выполнения каждого алгоритма. Любые комментарии или реакции относительно моей проблемы очень ценятся. Благодаря!Строковые алгоритмы поиска

+0

Что вы подразумеваете под «стандартом для каждого алгоритма»? Разве это не то, что вы должны проектировать, если ваш проект требует от вас создания эталона? Я что-то упускаю? – dirkgently

+0

Означает ли это, что мне разрешено создавать собственную версию алгоритмов? или мне нужно следовать псевдокоду из стандартного руководящего органа, такого как NSIT? – Shamko

+0

Тест - это обычно набор входов, которые вы запускаете для своей реализации, для измерения значений для набора (в основном ортогональных) параметров. Достаточно часто вы запускаете тест против стандартной реализации, чтобы увидеть, насколько хорошо ваш/делает. – dirkgently

ответ

1

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

+0

Благодарим вас за отзыв sir. :) – Shamko

1

Я не совсем уверен, что вы просите. Однако на другую интерпретацию того, что вы просите, можно ответить, пытаясь выяснить, как работает данный алгоритм при увеличении размера проблемы. Использование необработанного времени для сравнения алгоритмов при заданном размере строки необязательно допускает точное сравнение. Вместо этого вы можете попробовать каждый алгоритм с различными размерами строк и посмотреть, как изменяется алгоритм с размером строки.

И совет Марка тоже хорош. Таким образом, вы выполняете многократные испытания для разных строк, чтобы получить представление о том, как работает один алгоритм, а затем повторить это для следующего алгоритма.

1

Опять же, это не ясно, что вы просите, но вот еще одна мысль, в дополнение к тому, что сказал Тони и Марк:

Будьте очень осторожны о тестировании только «реальный» вход или только «случайный» вход. Некоторые алгоритмы настроены так, чтобы преуспеть на типичном входе (поиск слова в английском тексте), в то время как другие настроены для хорошей работы в патологически сложных случаях. Вам понадобится огромное количество возможных входных данных всех разных типов и размеров, чтобы сделать действительно хороший бенчмарк.

+2

Как, черт возьми, вам удалось ответить на 2-недельный вопрос через 5 минут после того, как я это сделал ?! –

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