Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2015, 12:59   #1
kkrah
Пользователь
 
Регистрация: 23.05.2013
Сообщений: 32
По умолчанию Алгоритм Рабина-Карпа

//Хеш-функция для алгоритма Рабина-Карпа
public static int Hash(string x)
{
int p = 31; //Простое число
int rez = 0; //Результат вычисления
for (int i = 0; i < x.Length; i++)
{
rez += (int)Math.Pow(p,x.Length-1-i)*(int)(x[i]);//Подсчет хеш-функции
}
return rez;
}

Почему берут простое число р=31? Почему именно это число возводят в степень, объясните, пожалуйста?
kkrah вне форума Ответить с цитированием
Старый 04.06.2015, 13:53   #2
kkrah
Пользователь
 
Регистрация: 23.05.2013
Сообщений: 32
По умолчанию

Объясните доступным языком, как работает хеш-функция, а то не понимаю этой логики...
kkrah вне форума Ответить с цитированием
Старый 04.06.2015, 14:08   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Почему берут простое число р=31?
можно брать любое простое число, главное чтобы было простое

Вот интересный пост
Человек_Борща вне форума Ответить с цитированием
Старый 04.06.2015, 14:18   #4
kkrah
Пользователь
 
Регистрация: 23.05.2013
Сообщений: 32
По умолчанию

У меня сравниваются большие тексты и если использовать массив, то сравнение идет долго, мне желательно ускорить этот процесс. Как вариант я выбрал хэш-функции, но не могу понять их логики
kkrah вне форума Ответить с цитированием
Старый 04.06.2015, 18:29   #5
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

На википедии вполне доступно объясняется назначение и принцип работы хэширующей функции в этом алгоритме.
Благодарить в репутацию. Проклинать — туда же

Последний раз редактировалось Luuzuk; 04.06.2015 в 18:34. Причина: читать тему внимательнее надо было )
Luuzuk вне форума Ответить с цитированием
Старый 04.06.2015, 18:34   #6
kkrah
Пользователь
 
Регистрация: 23.05.2013
Сообщений: 32
По умолчанию

Мне нужно выделить те участки, которые совпадают, этот метод вообще не подходит, потому что нужно не просто сказать одинаковые/нет тексты
kkrah вне форума Ответить с цитированием
Старый 04.06.2015, 18:34   #7
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Да, понял свою ошибку, пост выше поправил
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 04.06.2015, 18:41   #8
kkrah
Пользователь
 
Регистрация: 23.05.2013
Сообщений: 32
По умолчанию

Я начал работать с хешами, но меня результаты не удовлетворяют, выводит совсем не то, что я ожидаю....та еще коллизии
kkrah вне форума Ответить с цитированием
Старый 04.06.2015, 18:52   #9
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

А что у вас выходит, чего вы ожидаете, и почему вас пугают коллизии?
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 04.06.2015, 19:07   #10
kkrah
Пользователь
 
Регистрация: 23.05.2013
Сообщений: 32
По умолчанию

http://cybern.ru/rabina-karpa-csharp.html
использовались вот эти методы
ну например я вызываю
string x ="мерой участия";
string s="Политический режим характеризуется методами осуществления политической власти, мерой участия граждан в управлении, отношением государственных институтов ";
Console.WriteLine( Rabina(x,s));
В итоге ничего не получаю....почему?

если ввожу string x ="Политический режим", то выводит индекс вхождения 0
kkrah вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как работает эта программа(Алгоритм Рабина-Карпа с++)??? Lodas Общие вопросы C/C++ 1 18.12.2011 11:58
Алгоритм Карпа-Рабина [JScript] dixonich Помощь студентам 3 28.11.2010 22:04
Алгоритм Карпа-Рабина [JScript] dixonich Помощь студентам 0 25.11.2010 21:46
Алгоритм Кнута-Морриса-Пратта или Рабина-Карпа (язык С++). Может у кого-нибудь есть готовый рабочий ? Беата Помощь студентам 7 27.03.2010 10:50
алгоритм рабина-карпа(поиск подстроки) kristy42 Помощь студентам 0 03.11.2009 18:41