Как закодировать фразу одним числом?

123 4
R
На сайте с 29.04.2003
Offline
37
5600

Посоветуйте, как можно закодировать фразу состоящую например из 5 слов одним числом?

Если в качестве такого числа брать сумму ANSI-кодов букв составляющих фразу, то оно получится совсем не уникальным. :(

[Удален]
#1

Rusl, на буквы и знаки можно разбить.

lagif
На сайте с 15.12.2004
Offline
30
#2

Rusl,

Для этого есть хэширование... Но не факт, что разные фразы не могут быть захэшированы одинаково...

Это тоже пройдет...
R
На сайте с 29.04.2003
Offline
37
#3
Как писал Scaramush
Rusl, на буквы и знаки можно разбить.

Не пойдет. Нужно получить для фразы уникальное (под уникальным понимаю число, позволяющее однозначно (или с небольшой (не более 5%) погрешностью) идентифицировать фразу.

Можно например всем словам языка (в аглицком их предположим 300 000) присвоить свой ID и потом составить число из ID слов: 245678 016747 145578 005311 245568, но уж больно оно большое...

[Удален]
#4

Rusl, смотря сколько различных фраз предполагается обрабатывать. Берете функцию md5 (она дает 128 бит число), и обрубаете сколько-то бит, чтобы поменьше стало. Это же недавно совсем обсуждали (хеширование слов).

AA
На сайте с 16.04.2001
Offline
70
#5

Можно также взять CRC32. Число коллизий будет чуть меньше, чем у обрезанного до 4-х байт MD5.

При хэшировании вероятность коллизий в любом случае ненулевая. Для CRC32 ~ 0,002 (Влад Шабанов).

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

С уважением, Антонов Александр.
R
На сайте с 29.04.2003
Offline
37
#6

А где можно было бы почитать о CRC32? Особенно интересны вероятностные выкладки.

R
На сайте с 29.04.2003
Offline
37
#7

Может кто-нибудь даст ссылочку на разбор метода CRC32?

M
На сайте с 25.10.2003
Offline
100
#8
Как писал Rusl
Посоветуйте, как можно закодировать фразу состоящую например из 5 слов одним числом?

Если в качестве такого числа брать сумму ANSI-кодов букв составляющих фразу, то оно получится совсем не уникальным. :(

а нафига оно надо?

ну а если надо, просто конкатенируй номер каждого символа в HEX или DEC или даже BIN

вот тебе и уникальное число......

motopila.ru (http://motopila.ru/) - цепные пилы, все цепные пилы и ничего кроме цепные пилы. Аминь!
R
На сайте с 29.04.2003
Offline
37
#9

Оказалось легче сделать через CRC32. Но вот толкового описания не могу найти. :(

Г
На сайте с 26.01.2005
Offline
31
#10

Согласен с последним, зачем присваивать кажому слову уникальный ID, если можно присвоить уникальный ID каждому символу... В латинском алфавите 26 символов (без учета регистра) Помоему так гораздо проще, чем создавать базу из 300 000 слов :))

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий