Вернемся к задаче 3. Дается словарь английского языка (по одному слову в каждой строке входного файла), нужно найти все возможные анаграммы. Существует несколько причин, по которым стоит заняться этой задачей. Во-первых, решение будет красивой комбинацией правильного подхода и правильных методов. Важность второй причины в некоторых ситуациях неоспорима: вам же не хочется оказаться единственным человеком на вечеринке, который не знает, что deposit, dopiest, posited и topside — анаграммы? А если этих причин недостаточно, в задаче 6 будет описана аналогичная проблема, возникающая в реальной жизни.
Множество предложенных подходов к решению задачи анаграмм оказываются на практике неэффективными и сложными. Любой метод, рассматривающий все перестановки букв каждого слова, обречен. Слово cholecystoduodenostomy (являющееся анаграммой duodenocholecystostomy из моего словаря) дает 22 (!) перестановки, что приблизительно равно 1,124x1021. Даже если предположить, что проверки будут выполняться со скоростью самого быстродействующего компьютера, выполняющего 1012 перестановок в секунду, — обработка одного слова займет 1,1х109 секунд. Одно из правил большого пальца (см. раздел 7.1) гласит, что «л секунд равно 1 нановеку», то есть 1,1x109 секунд — это почти тридцать пять лет! Любой метод, сравнивающий все пары слов, потребует по меньшей мере целую ночь работы на моем компьютере.
Опубликовал vovan666
April 16 2013 23:34:42 ·
0 Комментариев ·
3330 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.