Как стать автором
Обновить
12
0

Пользователь

Отправить сообщение
я еще не сдался :)
к сожалению нет, эта цифра была до оптимизации и никак не получилось достичь что-то похожее с ограничением 64К
После оптимизации и исправлении ошибки в тесте результат гораздо ниже.
Прошу прощения если эта цифра ввела кого-то в заблуждение
Выше я писал про общий результат, тут про отдельно взятый алгоритм
Bloom filter — 70%
HLL — 60%
Попробовал другой вероятностный алгоритм,HyperLogLog, который к сожалению показал плохие результаты
HyperLogLog is an algorithm for the count-distinct problem, approximating the number of distinct elements in a multiset

Идея была в том чтоб хранить весь словарь в hll, в тесте добавлять туда слово и проверять если изменился общий счетчик. Для 64Кб hll ошибается на 0.15% в оценке общего кол-ва слов, но для проверки одного слова этого недостаточно

но идея очень красивая, я уже порадовался за вас, 80% это хороший результат
Весь код решения должен находиться в единственном файла на JS

уважаемый feldgendler, разрешено хранить часть кода в файле данных?
я думаю в этой задаче приемлемая точность будет гораздо ниже 99%, и почти уверен что меньше 85%.
Чем Титаниум лучше Хамарина?
тут описан интересный алгоритм , который ужимает префиксное дерево:

Step 1:
image
Several steps later:
image
из-за того, что 50% не-слов очень похожи на словарь, то универсальное решение не будет самым лучшим.
наиболее оптимальным, на мой взгляд, будет что-то типа:
отсеять непохожие слова с помощью эвристики, регулярок, сетей ит.д. | проверить похожие слова в Блуме
в условиях не сказано, но могут ли организаторы поменять алгоритм генерации во время конкурса?
Пока что я пришел к выводу, что никакие хитрые алгоритмы не помогут отфильтровать похожие слова, и это натолкнуло меня на мысль посмотреть сколько есть похожих слов, насколько они похожи, может даже понять как они генерируются и можно ли это использовать.
Похожесть я смотрел по Levenshtein distance, и вот некоторые результаты:
29% не-слов отличаются от словаря на одну букву, 20% на 2, 12% на 3, и так по убыванию…
В случаях когда есть одно отличие, то в 60% поменяли букву, 30% добавили букву, и в 10% убрали.
В 17% меняли букву а, 9% букву b, 7% d,c,e. потом r 5.5%,l 5.3%,' 5.3%,n 4.3%,s 4.2%…
В 43% менялась первая буква, 11% 2 и 3я, 9% 4я…
В тех случаях когда добавляли или удаляли букву, то значимых отличий не наблюдается. Буквы s,e,a,i,' добавляются чаще остальных, e,a,i удаляются.

Очень любопытный факт, что если смотреть на похожесть слов в словаре между собой, то в 72% слов она равна 1, 24% равна 2, 3% равна 3, 1% 4, и гораздо меньше 1% в остальных случая.

Интересно будет посмотреть на такой граф, и сколько будет ключевых слов, которые порождают остальные.
Я думаю что нейронные сети смогут эффективно отличить только шум и слишком непохожие слова. Чтоб отличать похожие слова, они должны их запомнить, а тут уже места не хватит.
я начал с самого простого — задал каждую букву как параметр. Получилось 67%

Интересно попробовать adversarial networks
Trie дерево, которое вместит в себя 75% слов, содержит 1 миллион дуг. В 64Кб вряд ли влезет :/
смотря что называть «приемлимой точностью»

300Кб для блюма дает точность больше 90%
60Kb — около 70%

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

Информация

В рейтинге
Не участвует
Откуда
Тель-Авив, Тель-Авив, Израиль
Зарегистрирован
Активность